调频电源中,想使得PWM1A与PWM2B的波形完全相同,PWM1B与PWM2A的波形完全相同,工作时会缓慢调节PWM的频率,占空比是固定的,这种情况PWM如何配置?
Green Deng:
据我了解,一个PWM模块只能有一个同步源,没办法做到一个模块的两路PWM输出分别同步。
如果要PWM1A与PWM2B同步,PWM1B与PWM2A同步的话,可以考虑硬件上将PWM2B与PWM2A的位置换一下。
,
user4730663:
嗯,硬件更换后,需要实现PWM1A与PWM2A同步,将PWM2的周期寄存器和占空比比较寄存器与PWM2相同(与下图的配置有不同,禁用了死区),上机不改变EPwm1Regs.TBPRD的值时(PWM2与PWM1周期寄存器1相等),PWM2脉冲有100ns左右的延迟,可以接受;刚改变周期寄存器的值时,延迟增加,改变多次后延迟就大于1us以上了,示波器查看的脉冲,不知道什么原因。
//PWM启动 EALLOW; SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0; // Stop all the TB clocks EDIS; InitEPwm1Example();//PWM1工作方式配置 InitEPwm2Example();//PWM1工作方式配置 EPwm1Regs.TBCTR = 0x0000; //时基计数器值清零 EPwm2Regs.TBCTR = 0x0000; //时基计数器值清零 EALLOW; SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1; EDIS;
,
Green Deng:
抱歉抱歉,我说错了,不是PWM2B与PWM2A的位置换一下。应该是由原来的:
PWM1A——PWM2A
PWM1B——PWM2B
换成:
PWM1A——PWM2B
PWM2A——PWM1B
这样从模块的角度讲,PWM1A和PWM1B是同一个ePWM模块,而PWM2A和PWM2B也是同一个模块。这样的话就不需要做模块间的同步