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.
全桥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的方式;
问题的分析和解决还没有验证,或者还有其它的问题,请指教,谢谢!
补充一下,除了用下述方式赋值0来关PWM
EPwm1Regs.CMPA.bit.CMPA = 0;
EPwm2Regs.CMPA.bit.CMPA = 0;
赋值完成后,还通过AQCSFRC的方式关了一次
好的,知道了,但是为什么每次在关闭PWM后,就会出现一个2.5V左右的尖峰,跟整个波形的上升沿周期相同,整个PWM的幅值为3.3V;关闭PWM代码如下:
EPwm1Regs.AQCSFRC.all = 5; //见下图波形
正常连续发波时是没有的,只有在关闭时出现,有什么方法可以清除?
Hi zhou,
能否在调用AQSFRC置低前后翻转GPIO?我们想看一下AQSFRC被调用以及尖峰出现的时间。
另外再和您确认一下,有配置DB子模块和TZ子模块吗?
只抓了一PWM1A:黄色,PMW2A绿色,红色为IO
对应关闭代码如下:
TEST_HIGH_ON(); //IO高
EPwm1Regs.AQCSFRC.all = 5;
EPwm2Regs.AQCSFRC.all = 5;
TEST_HIGH_OFF(); //IO低