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.

TMS320F280049: HRPWM frequency shaking

Part Number: TMS320F280049

我在调试HRPWM过程中发现,PWM的频率会发生抖动,我的应用是变频控制,但是在程序内固定某个频率条件下,发现输出的PWM的频率在抖动;

比如,fPWM = 500KHz时,TBPRD = 100,up-down模式,此时PWM输出很稳定。但是当fPWM = 501KHz时,PWM输出的频率在500KHz和502KHz之间跳动;

类似的,fPWM = 1000KHz时,TBPRD = 100,up-down模式,此时PWM输出很稳定。但是当fPWM = 999KHz时,PWM输出的频率在990KHz和1000KHz之间跳动;

请问,这种现象是MCU的HRPWM本身的问题,还是我的HRPWM配置有问题?

thanks

  • 应该是配置方面的问题,最好把相关代码发上来看一下,有可能跟CMPAU/CMPAD的设置有关。

  • hi Green,

    PWM配置如下图

  • hi Green,

    我们是有用CMPA和CMPB去做移相控制,所以AQCTL寄存器的配置可能不太一样,这个功能有在EPWM做过验证

    EPwm4Regs.AQCTLA.bit.CAU = AQ_SET; /* Set PWM4A on Zero */
    EPwm4Regs.AQCTLA.bit.CBD = AQ_CLEAR; /* Clear PWM4A on event A, up count */
    EPwm4Regs.AQCTLB.bit.CAU = AQ_SET; /* Set PWM4B on Zero */
    EPwm4Regs.AQCTLB.bit.CBD = AQ_CLEAR; /* Clear PWM4B on event B, up count */

    thanks.

  • 好的收到,我会跟其他工程师咨询一下之后回复你,还请耐心等待。

  • hello Green,

    我昨天调试的时候有试过如下配置,但还是有相同的问题

    EPwm4Regs.AQCTLA.bit.CAU = AQ_SET; 
    EPwm4Regs.AQCTLA.bit.CAD = AQ_CLEAR; 
    EPwm4Regs.AQCTLB.bit.CBU = AQ_SET; 
    EPwm4Regs.AQCTLB.bit.CBD = AQ_CLEAR; 

    我们这边有在想是不是跟同步有关,所以我把同步这部分的代码附上,如下:

    EPWM4~7作为LLC的驱动:

  • 需要使用 CHANNEL A + CMPA + CMPAHR 和 Channel B 相同。你们是在每个事件上都同步了? 连续同步可能是抖动的来源。

  • hi Green,

    "需要使用 CHANNEL A + CMPA + CMPAHR 和 Channel B 相同",没有明白你的意思

    thanks.

  • hi Green,

    我今天有试了hrpwm_ex2_prdupdown_sfo_v8这个TI例程,在400KHz到1.2MHz这个范围,确实不会出现frequency shaking现象,但是当我把频率提升到4MHz以上,就会出现frequency shaking现象。我看到TI的例程中, PWM的更新不是在Adc中断里面,而是在mainloop中,而且mainloop的程序很少执行时间很短。所以,我想问一下,我们的设计是PWM的周期寄存器是在一个100KHz的Adc中断里面更新,PWM的变频范围是400KHz到1.2MHz这个范围,这种架构是否有问题,HRPWM对TBPRD或者TBPRDHR的更新时机是否有特殊要求?

  • 回复收到,我再去咨询一下。

  • ADC 中断和 EPWM TB 是否相互异步? 或者说,是否更新了 ADC ISR 中的 EPWM 寄存器,并且此更新可以在 EPWM 0-PRD-0 周期的任何时候进行?

  • hi Green,

    EPWM的CMPA CMPB还有TBPRD 以及他们的HR寄存器都是在ADC中断里面更新的

    ADC中断和EPWM TB没有做同步处理

    这个问题我们已经找到了,是HRPWM这个特定的外设时钟没有打开

    但是我们在移相的过程中,还是会出现频率抖动的问题,这个后面我会再提一个topic

  • 好的,感谢反馈!