大家好,我是电源漫谈,在电源项目应用中,有时候不同PWM频率信号之间需要同步,此时需要一些特殊设置可以实现,本文就介绍其中一种方法,基于dsPIC33CK256MP506实验平台,采用ADC分频触发事件,结合PWM的PCI同步功能来实现这一需求。
首先设置两路不同频率的PWM信号,这里PWM3设置为500kHz,PWM4设为100kHz,分别设置为自触发模式,互补模式输出,此时我们查看二者波形。
图1 CH1-PWM3L, CH2-PWM4L
从图1上看,PWM3L的频率为500k,而PWM4L的频率为100kHz,符合我们前面的基本设置要求,不过,此时我们还没有对二者做同步的动作。
图2 采用ADC分频触发功能
这里选择PG3EVTL寄存器中的ADTR1PS项进行ADC触发分频设置,并且使能ADTR1EN1对应TRIGA输出,根据需要我们选择1:5的分频。
图3 输出ADC分频触发事件信号
在PWMEVTy寄存器中,这里我们通过对EVTySEL设置,将ADC触发1这个信号输出在一个I/O口上,这里以RC12为例。
图4 使用PWM3的ADC分频触发信号1作为PWM4的PCI同步输入信号
这里我们设置PWM4的PCI同步的源,PWM3的PWMEVTA事件作为同步源信号,此时PWMEVTA也就是刚刚我们设置的ADC trigger1的信号,相对于PWM3来说,就是5:1的频率的信号,如图5所示。
图5 对PWMEVTA进行配置
图6 CH1-PWM3L,CH2-PWM4L,CH3-ADC Trigger1 Event
图7 CH1-PWM3L,CH2-PWM4L,CH3-ADC Trigger1 Event
在图7中,我们将PWM3的触发信号TRIGA向后进行了200nS延时,以验证设置的合理性。在图6中TRIGA为0,所以触发信号基本和PWM3L的下降沿对齐。
图8 设置PWM4的周期起始信号SOCS
由于我们采用PWM4的同步PCI的信号作为触发信号,那么我们需要将PWM4的SOCS(Start of Cycle Selection)选项设置为0b1111,即通过TRIGA bit或者PCI sync 功能设置SOCS.
图9 设置PWM4的相应的SOCS 寄存器为PCI sync功能
图10 MCC中的配置相应与寄存器设置可以同步更新
图11 PWM3设置为自触发模式TRIGA为触发输出信号
图12-1 PWM4SPCIH设置
图12-2 PG4SPCIL设置
以上图12为PWM4的PCI Sync功能设置,详细功能请参考规格书内容。
图13 PG4频率设为250kHz验证PCI同步的作用
图14 CH1-PWM3L,CH2-PWM4L,CH3-ADC Trigger1 Event
基于图13的设置,我们将PWM4频率设为为250kHz,但是此时看到PWM4的同步PCI源在起作用,PWM4L的频率由PWM3的ADC Trigger1信号分频触发为100kHz,即从图14上看到的周期约为10uS.
图15 设置PWM4的频率为100kHz且占空比40%
图16 设置PWM3的频率为500k且占空比30%
图17 PWM3的触发选项设置
这里我们由PWM3触发PWM4,所以设置ADC Trigger1为触发信号,且使用TRIGA信号,延时200ns,如果实际应用不需要延时,可以不设置这个数值,默认为0.
此时的波形为图18,19所示。
图18 CH1-PWM3L,CH2-PWM4L,CH3-ADC Trigger1 Event
图19 CH1-PWM3L,CH2-PWM4L,CH3-ADC Trigger1 Event
从图19来看,基于PWM3和PWM4都是互补模式输出,死区设置都在50ns以内,那么从PWM3L的下降沿到ADC Trigger1的事件之间的时间主要是我们设置的触发延时200ns产生,基于此PWM4和PWM3是完全同步的PWM波形。
以上我们对PWM不同频率的通道之间的同步做了一个基本的说明,这个过程通过PWM自带的ADC分频触发信号进行分频触发,使用PWM事件作为PWM4的PCI 同步源,以实现二者的同步。