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.

TMS320F280041: PWM的CMPA赋值后,跟输出实际的占空比不一致

Part Number: TMS320F280041

全桥PWM输出驱动波形100KHZ,增减计数模式,周期值PRD为500;通过改变CMPA的值来调整PWM的占空比  = CMPA/2*PRD;

计算变量Cmpa_DcValue的值,在赋值给CMPA前经过了限幅50~450;总的来说对占空比进行限幅5%~45%;

赋值代码如下:

EPwm1Regs.CMPA.bit.CMPA = Cmpa_DcValue;

EPwm2Regs.CMPA.bit.CMPA = Cmpa_DcValue;             //PWM2跟PWM1波形一致,但移相180度

在稳定的工况情况,调整占空比的变化,没有什么问题;

存在问题工况是:

当计算的占空比小于5%时,即Cmpa_DcValue< 50时,Cmpa_DcValue = 0;PWM1和PWM2的占空比为0(强制低状态);等同于

EPwm1Regs.CMPA.bit.CMPA = 0;

EPwm2Regs.CMPA.bit.CMPA = 0;  

当计算的占空比大于5%时,按实际的占空比输出;

问题现象:当长期工作这种打隔断续在状态(占空比0%至5%的跳变时),监测的波形发现,有的占空比居然高达100%;

疑问即然在CMPA的赋值前对计算的Cmpa_DcValue进行了上下限幅,如5%~45%,最大的输出占空比就不应该超过45%,为什么会达到100%?

怀疑的可能:1,PWM2的CMPA赋值没有跟PWM1同步,存在微观的时间差,但这只会影响相位的偏差,但还是使用了EPWMXLINK的设置来实现同步更新;

                      2、当占空比小于5%,利用AQCSFRC的配置强制PWM为低,而不是通用改变CMPA 为0的方式;

问题的分析和解决还没有验证,或者还有其它的问题,请指教,谢谢!