TMS320F28335在实现PWM波占空比0%~100%变化时了解到占空比不能直接设置为0%或者100%,比如直接设100%的时候会出现向下闪动的信号,应该如何对这两个点进行特殊设置?谢谢!
Jones Chen:
请参考文献:
Using the ePWM Module for 0% – 100%Duty Cycle Control【spraai1】
TMS320F28335在实现PWM波占空比0%~100%变化时了解到占空比不能直接设置为0%或者100%,比如直接设100%的时候会出现向下闪动的信号,应该如何对这两个点进行特殊设置?谢谢!
Hardy Zhou:
回复 Jones Chen:
计数器计数方向是上升下降计数还是上升计数还是下降计数。输出高低电平方面怎么进行set 和reset 的.
TMS320F28335在实现PWM波占空比0%~100%变化时了解到占空比不能直接设置为0%或者100%,比如直接设100%的时候会出现向下闪动的信号,应该如何对这两个点进行特殊设置?谢谢!
peter xue:
回复 Hardy Zhou:
这是我用的子程序,用的是上升计数的
PWMA_below, pwma分母
PWMA_above, pwma分子
PWMB_below, pwmb分母
PWMB_above,pwmb分子
函数是这样定义的:比如说PWMA_below=2,PWMA_above=1,那么设置的占空比是1/2
void HRPWM1_Config(period,PWMA_below,PWMA_above,PWMB_below,PWMB_above)
{
EPwm1Regs.TBCTL.bit.PRDLD = TB_IMMEDIATE; // set Immediate load 1
EPwm1Regs.TBPRD = period; // PWM frequency = 1 / period PWM 周期=1/频率
EPwm1Regs.CMPA.half.CMPA = period / PWMA_below * (PWMA_below – PWMA_above);
EPwm1Regs.CMPA.half.CMPAHR = (1 << 8); // initialize HRPWM extension
EPwm1Regs.CMPB = period / PWMB_below * PWMB_above; EPwm1Regs.TBPHS.all = 0;
EPwm1Regs.TBCTR = 0;
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP; //计数增模式 用于非对称
EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE; // EPWM1 is the Master
EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE;
EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV4; //定时器选择,决定频率的范围
EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV4;
EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;
EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;
EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
EPwm1Regs.AQCTLA.bit.ZRO = AQ_CLEAR; // PWM toggle low/high
EPwm1Regs.AQCTLA.bit.CAU = AQ_SET;
EPwm1Regs.AQCTLB.bit.ZRO = AQ_SET;
EPwm1Regs.AQCTLB.bit.CBU = AQ_CLEAR;
EALLOW;
EPwm1Regs.HRCNFG.all = 0x0;
EPwm1Regs.HRCNFG.bit.EDGMODE = HR_REP; //MEP control on Rising edge
EPwm1Regs.HRCNFG.bit.CTLMODE = HR_CMP;
EPwm1Regs.HRCNFG.bit.HRLOAD = HR_CTR_ZERO;
EDIS;
}
TMS320F28335在实现PWM波占空比0%~100%变化时了解到占空比不能直接设置为0%或者100%,比如直接设100%的时候会出现向下闪动的信号,应该如何对这两个点进行特殊设置?谢谢!
peter xue:
回复 Jones Chen:
非常谢谢你这么快速的回复,我下载了文档了,很有参考价值,3Q
TMS320F28335在实现PWM波占空比0%~100%变化时了解到占空比不能直接设置为0%或者100%,比如直接设100%的时候会出现向下闪动的信号,应该如何对这两个点进行特殊设置?谢谢!
Hardy Zhou:
回复 peter xue:
ePwm1.A 和ePwm1.B互补输出 配置成互补形式
EPwm1Regs.AQCTLA.bit.ZRO = AQ_CLEAR; // PWM toggle low/high
EPwm1Regs.AQCTLA.bit.CAU = AQ_SET;
EPwm1Regs.AQCTLB.bit.ZRO = AQ_SET;
EPwm1Regs.AQCTLB.bit.CBU = AQ_CLEAR;
改成
EPwm1Regs.AQCTLA.bit.ZRO = AQ_SET; // PWM toggle low/high
EPwm1Regs.AQCTLA.bit.CAU = AQ_CLEAR;
EPwm1Regs.AQCTLB.bit.ZRO = AQ_CLEAR;
EPwm1Regs.AQCTLB.bit.CBU = AQ_SET;
需要输出满占空比时,比较值应该写入一个period大的值,如:period+1,这一操作可以通过软件来进行设计
这样更改之后 比较值也需要做相应改变。