paradoxfx

【原创】TI C2833x介绍---ePWM(15)

0
阅读(5657)

举几个例子来说明ePWM调制中周期寄存器和比较寄存器值的计算。

1. 以对称载波的PWM波形为例。假设载波周期(PWM开关周期)为150kHz,占空比为25%,ePWM的时基频率为150MHz为例,并设定动作限定子模块中PWM的开关动作为软件强制高,则有:

周期寄存器的值TBPRD=ePWM时基频率fTBCLK /(2 * PWM载波频率fPWM)

=150MHz /(2 *150kHz)= 500

比较寄存器的值CMPA =(100% - 占空比)* TBPRD

=(100% - 25%)* 500 =375

如果需要很低的载波频率,例如1kHz的话,怎么办?

若此时ePWM的时基频率仍为150MHz,则有

TBPRD = 150MHz /(2 *1kHz)=75000

但是TBPRD是个16位的寄存器,用16位无符号的整数表示时最大只能表示到65535。这时就需要对ePWM时基频率进行处理了,比如2分频,则表示1kHz只需要用到37500了。

2. 以非对称载波的PWM波形为例。此时仍假设载波周期为150kHz,占空比为25%,ePWM的时基频率为150MHz,设定动作限定子模块中PWM的开关动作为软件强制高,则有:

TBPRD= fTBCLK / fPWM – 1 =150MHz / 150kHz – 1 = 999

CMPA =(100% - 占空比)* (TBPRD + 1)- 1

=(100% - 25%)* 5(999+1)- 1 =749

因为是从0开始计数,所以非对称载波的PWM在计算时实际计算出的值总要减去1才能得到正确的周期寄存器和比较寄存器的值,这里一定要注意了。对比也可以看出,非对称载波的PWM需要的周期值和比较值是同等载波频率、时基频率和占空比情况下对称载波的接近2倍(2倍- 1)。这样如果非对称载波PWM想同样输出一个1kHz甚至更低载波频率的情况下,就需要对ePWM的时钟频率进行更高次的分频才能正确赋值给周期寄存器了。

Baidu
map