This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS320F28379D: 关于例程采样频率变化的原因

Part Number: TMS320F28379D
Other Parts Discussed in Thread: C2000WARE

对于例程adc_soc_epwm_cpu01,我们在设置采样频率为200k后,为了持续采样,将211行asm("   ESTOP0");注释掉,结果虽然程序持续运行了,但采样频率却改变了,我们输入正方波后采样结果对比如下

未注释掉时采样频率正确:

注释掉时,采样频率明显下降(没几个数就出现0):

请问这是为什么呢,如何解决呢?

  • 你好,这个例程的采样频率是通过PWM触发的,所以你是更改了PWM的频率?具体是如何修改的?

    另外,你说输入的是正方波?这样的话确实会有高低电平的变化,那采样结果不对的是未注释掉时的波形?

  • 你好,修改代码如下图,没有注释掉时采样率就是200k,结果正确,但是注释掉之后,采样结果就不对了。

  • 你好,这个还是先回答一下第一次的问题吧。

    你确定你测的是方波?

  • 你好,我确定测的是频率为1k的正方波,我把PWM的频率改成200K了.没有注释掉asm("   ESTOP0")的时候,ADC在一个正方波周期采了200个点,说明采样频率是200K,但是这个时候程序不能持续运行。注释掉asm("   ESTOP0")之后,程序能持续运行,但是一个正方波周期只采了几个点,采样频率变小了很多

  • 有可能动作周期需要重新初始化一下,你试一下在197行代码后面加上这句:

    EPwm1Regs.TBPRD = 0x1000;             // Set period to 4096 counts

    即:

    EPwm1Regs.ETSEL.bit.SOCAEN = 0;  //disable SOCA
    EPwm1Regs.TBCTL.bit.CTRMODE = 3; //freeze counter

    EPwm1Regs.TBPRD = 0x1000;             // Set period to 4096 counts   add this

  • 你好,我试了加上代码之后,问题还是没有解决,请问还有可能是其他原因吗?还是这个例程不能持续采样?

  • 你好,加上之后还是跟之前同样的问题吗?是否稍有改善或其他问题?

  • 你好,加上之后还是之前的问题。请问还有没有其他可以持续采样的ADC例程呢?

  • 你可以看一下这个例程:C:\ti\c2000\C2000Ware_4_01_00_00\device_support\f2837xd\examples\cpu1\adc_soc_continuous

  • 你好,我看了这个例程,好像没有地方能改ADC的采样频率啊,而且这个例程里也有asm("   ESTOP0"),可能会遇到一样的问题。上次的例程还有没有其他解决办法吗?

  • 这个例程是持续采样直到最大采样率,注释掉之后应该能持续采样。

    我最近没办法测试例程,不知道你对例程有做过其他修改吗?还是只更改了采样频率和注释asm("   ESTOP0")?

    如果只是注释asm("   ESTOP0")的话代码能正常运行吗?