首页/文章/ 详情

数字电源控制器高速PWM更新模式探讨

2年前浏览584

dsPIC33CH/dsPIC33CK系列数字电源控制器芯片,在目前诸多典型应用中都得到了广泛使用。在闭环控制中,尤其是电压模式控制中,对PWM数据寄存器进行实时更新是必要的一个动作,本文主要就这一话题做一些分析和讨论。


.PWM DATA缓存寄存器功能的说明

所谓PWM模块的BUFFER寄存器,就是PWM模块在以当前寄存器值运行时,允许其SFR特殊功能寄存器值进行改写,这些值先缓存在寄存器中,在后续的某一个时刻会应用在PWM模块的输出中。在芯片中允许进行BUFFER的寄存器及寄存器位如图1所示。

1 具有BUFFERPWM数据寄存器


从上图来看,具有BUFFER的寄存器包括常见的周期,相位,占空比,触发点,TRIGA,TRIGB,TRIGC等,也包含死区,交换功能,软件改写值位及使能位等。


.PWM数据寄存器的更新模式及寄存器说明

数据更新的方式有哪些呢?具体说来,包含三种典型的方式,它们都可以事先用PWM模块来指定其更新方式。


首先,PWM模块可以允许在下一个周期初始时刻,将PWM寄存器的数据缓存值加载到PWM的内部数据寄存器中,这种方式较为简单明了。其次,PWM数据寄存器的值也可以被要求立即生效,这就是所谓的立即更新方式,这种情况会复杂一些,后面我们会详细描述这种更新方式涉及到的一些问题。最后,PWM数据寄存器的缓存值可以被HOLD OFF在缓存中,而等待外部事件去驱动一个更新动作,这个外部事件可以是其它PWM模块的更新动作。

2 PWM数据更新模式相关寄存器说明1

3 PWM数据更新模式相关寄存器说明2

图4 PWM数据更新模式相关寄存器说明3

图5 PWM数据更新模式相关寄存器说明4


涉及到PWM数据更新的问题,有三个寄存器位不得不提,那就是UPDMOD<2-0>,UPDATE bitUPDREQ bit,如图234,5所示。


UPDMOD控制位决定了寄存器的更新模式,分为立即更新和SOC更新,及Client的立即更新和ClientSOC更新,后续我们会详细说明。


UPDATE bit的值可以让用户看到PWM数据更新处于什么状态,例如,UPDATE=0时,说明PWM数据更新已经结束,此时可以允许用户写入新的PWM寄存器值,从而开启新一次的更新,而UPDATE=1时,说明PWM数据更新正在Pending,此时用户不能写入新的PWM寄存器值,只能等硬件对UPDTAE清零后才能允许下一次的更新。


UPDREQ bit是允许用户写入1,写入1表示PWM模块锁定了写入的PWM寄存器新值,此时用户不能再改变PWM寄存器的值,一直到PWM更新结束后硬件清零了这个位。注意,UPDREQ bit读取的值永远为0.

图6 自动更新PWM数据寄存器说明1

图7 自动更新PWM数据寄存器说明2


默认状态下,用户必须要在UPDREQ中写1才能允许PWM寄存器更新,但是在实际的使用中,往往希望能够减小CPU的负担,所以使用自动更新的方式,那么,触发自动更新的动作,用户可以根据需要设定,如图6,7寄存器设置位UPDREQ<1-0>.


PGxDC是通常使用的寄存器更新的触发方式,一旦写入PGxDC寄存器值就认为PWM模块设置了更新命令。在变相位应用中,可以使用PGxTRIGAPGxPHASE等进行触发更新设置。值得注意的是,这里被选择作为触发更新的寄存器一定要是最后一个更新的寄存器,更新了这个寄存器就认为所有寄存器都进行了值的更改。


三.同步多个PWM产生器的BUFFER更新

dsPIC33CH/dsPIC33CK中允许不同的PWM产生同步更新数据BUFFER寄存器,具体而言,采用对MSTENbit进行设置,MSTEN设置为1,则允许当前PWM产生器对其它PWM产生器进行广播更新要求及SOC信号,其UPDREQUPDATE bit可以广播给其它的PWM产生器。


如果其它的PWM产生器,也设置为了合适的接收模式,可参考图7所示表格,那么一旦它接收到了主PWM产生的更新信号,则它会将Local 自己PWM产生器的UPDREQ位设置为1UPDATE位也会变为1.Local PWM产生器进行了更新之后,UPDATE位自动被硬件清零。

图8 PWM数据更新模式分类

8中给出了几种PWM数据的模式,其中SOC更新和立即更新是针对独立的PWM产生而言。Slaved SOC更新和Slaved立即更新是针对处于slave状态的PWM产生器接收主PWM更新信号后的PWM更新模式。

图9 PWM数据寄存器更新的注意事项


在图8所示的更新模式中,一个值得注意的地方,我们放在图9所示,针对SOC更新,UPDREQ的置位时刻需要和下一个PWM周期的边界保持一定的时间间隔,这样才能使得更新生效,否则数据更新将会被delay到接下来的一个PWM周期中。

图10 PWM定时周期和PWM数据更新的关系

由于PWM的运行模式及I/O输出模式会导致每一个PWM周期由不同个数的PWM定时器周期组成,那么在数据更新上也会有一定的区别,如图10所示,给出了不同PWM模式下的对应的PWM定时器周期个数,及定时器周期中断和数据寄存器更新的个数。


四.立即更新模式讨论

有些时候,为了PWM下达更新命令后尽可能快的去应用这个更新,那么可以选择立即更新模式,以避免不希望的事情在期间发生。


当进行PWM周期PGxPER更新时,这个更新会立即生效,但是,当需要更新的新的周期值小于现有周期PGxPER时,需要注意一下。存在一种情况,如果PWM定时器计时已经超过了这个新的变小的PGxPER,那么定时计数器就会计时到0xFFFF,然后Rollover,这必然会造成一个长的周期。遇到这种情况,一个比较安全的方式,是捕捉到发生更新的PWM时基值,然后写入一个安全的最小的PWM周期。

11 对占空比的立即更新


对占空比的立即更新,有两种情况需要说明。一种情况是,更新命令发生时,PWM脉冲宽度已经结束,那么这个立即更新会延时到下一个周期生效。


另外一种情况是,新的脉冲较小,PWM计时周期已经超过了它,而此时发生了PWM立即更新命令,那么PWM的下降沿会消失,所以产生一个100%占空比的当前PWM周期。


当进行相位更新时,新的PWM正在进行,若新的PWM相位大于现有的PWM相位,则PWM相位更新立即生效。


特殊的情况需要注意,当相位偏移减小或者脉宽变长时,如果需要立即更新,则最好对PWM发生更新的时基捕捉,然后去更新占空比和相位,一个安全的相位可以写入。


当新的相位小于现有相位时,而PWM计时定时器已经超过了这个新相位,那么在当前PWM周期中,会产生占空比为0%的周期。


五.PWM死区的更新的简单讨论

如果在PWM波形中,死区正在进行,如果针对死区需要立即更新,那么死区时间在更新后将会加长。这是因为若死区未结束时,死区计数器会在立即更新后重新装载,那么就会变为更长的死区。不过,在下一个周期中会变为更新后的正常死区。



来源:电源漫谈
科普电源芯片控制
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2022-09-19
最近编辑:2年前
仿真秀32093466624
硕士 签名征集中
获赞 89粉丝 74文章 164课程 0
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈