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.
我在调试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
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的驱动:
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