Part Number:TMS320F28379DOther Parts Discussed in Thread:C2000WARE
对于例程adc_soc_epwm_cpu01,我们在设置采样频率为200k后,为了持续采样,将211行asm(" ESTOP0");注释掉,结果虽然程序持续运行了,但采样频率却改变了,我们输入正方波后采样结果对比如下
未注释掉时采样频率正确:
注释掉时,采样频率明显下降(没几个数就出现0):
请问这是为什么呢,如何解决呢?
Green Deng:
你好,这个例程的采样频率是通过PWM触发的,所以你是更改了PWM的频率?具体是如何修改的?
另外,你说输入的是正方波?这样的话确实会有高低电平的变化,那采样结果不对的是未注释掉时的波形?
,
anqi Hu:
你好,修改代码如下图,没有注释掉时采样率就是200k,结果正确,但是注释掉之后,采样结果就不对了。
,
Green Deng:
你好,这个还是先回答一下第一次的问题吧。
你确定你测的是方波?
,
anqi Hu:
你好,我确定测的是频率为1k的正方波,我把PWM的频率改成200K了.没有注释掉asm(" ESTOP0")的时候,ADC在一个正方波周期采了200个点,说明采样频率是200K,但是这个时候程序不能持续运行。注释掉asm(" ESTOP0")之后,程序能持续运行,但是一个正方波周期只采了几个点,采样频率变小了很多
,
Green Deng:
有可能动作周期需要重新初始化一下,你试一下在197行代码后面加上这句:
EPwm1Regs.TBPRD = 0x1000; // Set period to 4096 counts
即:
EPwm1Regs.ETSEL.bit.SOCAEN = 0; //disable SOCAEPwm1Regs.TBCTL.bit.CTRMODE = 3; //freeze counter
EPwm1Regs.TBPRD = 0x1000; // Set period to 4096 counts add this
,
anqi Hu:
你好,我试了加上代码之后,问题还是没有解决,请问还有可能是其他原因吗?还是这个例程不能持续采样?
,
Green Deng:
你好,加上之后还是跟之前同样的问题吗?是否稍有改善或其他问题?
,
anqi Hu:
你好,加上之后还是之前的问题。请问还有没有其他可以持续采样的ADC例程呢?
,
Green Deng:
你可以看一下这个例程:C:\ti\c2000\C2000Ware_4_01_00_00\device_support\f2837xd\examples\cpu1\adc_soc_continuous
,
anqi Hu:
你好,我看了这个例程,好像没有地方能改ADC的采样频率啊,而且这个例程里也有asm(" ESTOP0"),可能会遇到一样的问题。上次的例程还有没有其他解决办法吗?
,
Green Deng:
这个例程是持续采样直到最大采样率,注释掉之后应该能持续采样。
我最近没办法测试例程,不知道你对例程有做过其他修改吗?还是只更改了采样频率和注释asm(" ESTOP0")?
如果只是注释asm(" ESTOP0")的话代码能正常运行吗?