This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

28035 PWM1和PWM2进行同步,并可调频率

调频电源中,想使得PWM1A与PWM2B的波形完全相同,PWM1B与PWM2A的波形完全相同,工作时会缓慢调节PWM的频率,占空比是固定的,这种情况PWM如何配置?

  • 据我了解,一个PWM模块只能有一个同步源,没办法做到一个模块的两路PWM输出分别同步。
    如果要PWM1A与PWM2B同步,PWM1B与PWM2A同步的话,可以考虑硬件上将PWM2B与PWM2A的位置换一下。
  • 嗯,硬件更换后,需要实现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;

  • 抱歉抱歉,我说错了,不是PWM2B与PWM2A的位置换一下。应该是由原来的:

    PWM1A——PWM2A

    PWM1B——PWM2B

    换成:

    PWM1A——PWM2B

    PWM2A——PWM1B

    这样从模块的角度讲,PWM1A和PWM1B是同一个ePWM模块,而PWM2A和PWM2B也是同一个模块。这样的话就不需要做模块间的同步