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

大家好,我是电源漫谈,很高兴和各位一起分享我的第1篇原创文章,喜欢和支持我的工程师,一定记得给我点赞、收藏、分享。

加微信[13764329639]与作者微信及进群沟通交流。

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

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

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

图1 具有BUFFER的PWM数据寄存器

从上图来看,具有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 bit及UPDREQ bit,如图2,3,4,5所示。

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

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寄存器设置位UPDTRG<1-0>.

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

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

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

 

如果其它的PWM产生器,也设置为了合适的接收模式,可参考图7所示表格,那么一旦它接收到了主PWM产生的更新信号,则它会将Local 自己PWM产生器的UPDREQ位设置为1,UPDATE位也会变为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波形中,死区正在进行,如果针对死区需要立即更新,那么死区时间在更新后将会加长,这是因为若死区未结束时,死区计数器会在立即更新后重新装载,那么就会变为更长的死区。不过,在下一个周期中会变为更新后的正常死区。

总结,以上就是dsPIC33C这个典型的数字电源控制器在PWM数据更新方面的一些基本内容,希望对理解闭环控制方面的代码有一定帮助。

 今天的内容就到这里了,感谢观看,记得点赞,分享,收藏。我是电源漫谈,谢谢鼓励和支持!

声明:本内容为作者独立观点,不代表电子星球立场。未经允许不得转载。授权事宜与稿件投诉,请联系:editor@netbroad.com
觉得内容不错的朋友,别忘了一键三连哦!
赞 5
收藏 4
关注 25
成为作者 赚取收益
全部留言
0/200
成为第一个和作者交流的人吧