全桥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的方式;
问题的分析和解决还没有验证,或者还有其它的问题,请指教,谢谢!