dsPIC33C系列芯片的PWM功能较以往更复杂,功能更加灵活,PWM的工作模式上和以往芯片也有一些不同之处,由于篇幅所限,本文侧重分析一下PWM模块运行模式的分类及特性。
一.PWM运行模式概述
图1 PWM的运行模式分类
从图1上看,PWM的工作模式主要有几种,如独立边沿PWM模式,这也是默认设置的工作模式,变相位PWM模式,独立边沿PWM双输出模式,中心对齐模式,双更新中心对齐模式,双边沿中心对齐模式等六种,其中后三种都是和中心对齐模式有关的模式。在这些PWM工作模式中,值得注意的是,有些模式采用多个PWM的计数器周期去产生单个PWM周期。
图2 PWM控制寄存器Low
图3 PWM控制寄存器Low中的模式选择位
在配置PWM的工作模式中,首先通过图2,3所示的寄存器配置PWM运行模式。
二.独立边沿PWM模式
独立边沿的PWM模式,用于产生边沿对齐的PWM信号,或者产生任意相位偏移的PWM信号,需要两个独立的寄存器去定义PWM波形的上升沿和下降沿位置。具体来说,通过PGxPHASE去定义PWM信号的上升沿位置相对于PWM周期计数器的起点的位置,而PGxDC用于定义相对于PWM周期计数器起点,到PWM波形下降沿的位置。PGxPER用于确定PWM计数器的周期。
另外,除了可以设定单个的PWM波形为独立边沿模式,还可以通过PGxPHASE寄存器来设定多个PWM信号之间同步,只要将PGxPHASE值设为相同值即可。
另外,还有一些特殊情况,比如当PGxPHASE=PGxDC时,则PWM脉冲占空比为0,而当设为PGxDC>PGxPER时,则PWM脉冲的占空比为100%。
图4 独立边沿PWM模式的波形示例
通过图4所示的独立边沿PWM模式波形示例,可以看出PGxPHASE和PGxDC都是基于同一个起点开始计算,就是PWM周期计数器的起点,所以PHASE设置会占用脉宽大小的部分。
三.变相位PWM模式
变相位PWM模式,它和独立边沿PWM模式不同,其中一个寄存器决定从PWM周期计数器起点开始计算的相位偏移的宽度,另一个寄存器决定从相位偏移开始计算的脉冲宽度。
图5 变相位模式的SFR和波形关系
这种模式下,PGxPHASE决定相位偏移宽度,而PGxDC决定脉冲宽度,PGxPER决定PWM的周期。当用户希望固定脉宽,来调制相位偏移时,或者固定相位偏移,来调制脉宽时,则这种模式比较有用。
图6 变相位的PWM模式波形示例
从图6的变相位PWM模式的波形示例来看,PGxPHASE对相位偏移的设定并不占用PGxDC对脉宽的设定部分,二者是独立的。
在使用变相位模式时,可以通过MDC去对所有PWM的脉宽进行统一设定。但是也要注意一个问题,就是变相位PWM模式并不支持跨周期运行的情况,也就是说PGxPHASE PGxDC一定要小于PGxPER这样的关系。
图7 多个PWM使用变相位模式波形示例
在图7中,PWM1-4都是用变相位模式,四个PWM设置相同的脉宽值,但是设定为了不同的相位偏移,注意此处是满足PGxPHASE PGxDC小于PGxPER这个关系的。
四.双PWM输出模式
双PWM输出模式,即在PWMxH和PWMxL上都输出独立的PWM波形。PWM双输出模式和PWM独立边沿模式不同,它允许在第二个PWM pin上输出波形,且在独立模式下。
第二个PWM的输出信号的上升沿宽度是由PGxTRIGA决定,而下降沿宽度由PGxTRIGB决定,另外一点需要注意的是,在高分辨率模式下,PWM双输出模式不能和PWM互补输出模式一起使用。(关于PWM的I/O输出模式,我们后面进一步讨论)。
图8 PWM双输出模式波形示例
在PWM双输出模式中,注意PGxTRIGA和PGxTRIGB都是基于PWM周期计数器起点开始计算宽度的。
值得注意的是,在双输出模式下,PGxTRIGA,PGxTRIGB作为正常的事件输出信号还是正常工作的,比如相位偏移触发,或者ADC触发信号等,如果需要一个纯粹的信号去做触发功能,可以选择PGxTRIGC来使用。
五.中心对齐PWM模式
中心对齐PWM模式,和边沿对齐模式PWM不同,它可以避免PWM占空比不同时,上升沿或者下降沿重叠,因此导致纹波或者滤波的需求,因此,在一些场合如逆变器中有所用途。
中心对齐模式PWM的脉宽是对称于两个PWM周期计数器的,当占空比增加时,则上升沿和下降沿部分都在增加,以保持对称。基于这个概念,中心对齐模式PWM脉冲波形是由两个PWM周期计数周期组成。
图9 中心对齐PWM模式的SFR和波形的关系
中心对齐PWM模式采用PGxDC决定从两个PWM周期中间开始计算的脉冲宽度,即真实脉宽的一半,而PGxPER决定每一个PWM周期计数器的周期。
图10 中心对齐PWM模式的波形示例
中心对齐PWM的上升沿位置在PGxPER-PGxDC 1处,而下降沿位置在PGxDC处。值得注意的是更新PWM的buffer寄存器,如PGxDC或者PGxPER等,只能在第一个PWM周期计数器开始处更新,这一点可以通过判断CAHALF位来判定是否处于第一个PWM计数周期处,当CAHALF为0时为第一个PWM计数周期,CAHALF为1时为第二个PWM计数周期。
另外一点,从图上可以看出,EOC中断事件,是在两个PWM计数周期结束后才产生的。
六.双更新中心对齐PWM模式
双更新中心对齐模式,和普通的中心对齐模式是类似的,只不过有两次EOC中断,和两次PWM数据寄存器更新。双更新的好处是减小的环路处理延时,但是有可能造成脉宽波形不对称。
图11 双更新中心对齐PWM模式
七.双边沿的中心对齐PWM模式
双边沿的中心对齐PWM模式,和双更新的PWM中心对齐模式类似,在双边沿中心对齐模式中,允许对上升沿宽度和下降沿部分宽度做相应控制,这同样会造成波形的不对称性。
这个模式的特点就是,给预用户足够的灵活性,增加了对两个边沿的控制之外,还可以减小中断事件的频率。
图12 双边沿的中心对齐PWM模式寄存器和波形关系
具体来说,通过PGxPHASE来实现对上升沿部分脉冲宽度的控制,通过PGxDC来实现对下降沿部分脉冲宽度的控制。
有一个非常灵活之处,就是在双边沿中心对齐PWM模式中,用户可以设置为单更新模式,也可以设置为双更新模式。单更新模式就是说,用户随时在允许改写宽度的阶段去改写PGxPHASE或者PGxDC,而在下一个完整PWM周期初始处去更新之。
图13 双边沿中心对齐PWM模式---单更新模式
如图13所示,我们可以看出,在PWM周期中改写了PGxDC和PGxPHASE的值,然后在下一个周期中才进行更新数据Buffer。同时,EOC中断事件也是每一个完整PWM信号周期中断一次。
和单更新对应的,就是双更新模式,在这个模式中,对应每一个PWM计数周期都有一个EOC事件中断,也有一个PWM数据更新。
图14 双边沿中心对齐PWM模式---双更新模式
在双更新的模式中,注意改写和更新的时刻,在上升沿PWM计数周期初始时刻,只能更新PGxPHASE的值,而在下降沿PWM计数周期初始时刻,只能更新PGxDC的值,用户可以用CAHALF来决定合适的寄存器改写时刻,比如,在CAHALF=0时,前面的一个PWM计数周期中,只能改写PGxDC的值,然后在后面的一个PWM计数周期初始时刻更新。而在CAHALF=1时,后面的一个PWM计数周期中,只能改写PGxPHASE的值,然后在第一个PWM计数周期初始时刻更新。每一个PWM计数周期结束后,都会进行EOC中断。总的说来,就是说先写入,然后在下一个PWM计数周期初始更新。
总结,主要分析和总结dsPIC33C系列的PWM工作模式的一些细节,后续我们会进一步讨论与运行模式相关的PWM的I/O输出模式的配置。
参考文献:dsPIC33CK FRM.
相关文章: