TI中文支持网
TI专业的中文技术问题搜集分享网站

为什么F28035的EPWM不能同步

在我的应用中需要用到4路EPWM,同步输出, 我按照手册里面的方法和官方历程的方法进行了PWM的初始化,同步部分的程序如下:

 EPwm1Regs.TBPHS.half.TBPHS = 0;                // Phase is 0

 EPwm2Regs.TBPHS.half.TBPHS = 0;

 EPwm3Regs.TBPHS.half.TBPHS = 0;

 EPwm4Regs.TBPHS.half.TBPHS = 0;

 EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;        // Disable phase loading  

EPwm2Regs.TBCTL.bit.PHSEN = TB_ENABLE;  

EPwm3Regs.TBCTL.bit.PHSEN = TB_ENABLE;  

EPwm4Regs.TBCTL.bit.PHSEN = TB_ENABLE;

 

 EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO;  //计数为0时输出同步信号  

EPwm2Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;   //同步信号输入

 EPwm3Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;   //同步信号输入  

EPwm4Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;   //同步信号输入

 

 EPwm2Regs.TBCTL.bit.PHSDIR = TB_UP;         //    同步后递增  

EPwm3Regs.TBCTL.bit.PHSDIR = TB_UP;         //    同步后递增  

EPwm4Regs.TBCTL.bit.PHSDIR = TB_UP;         //    同步后递增

  程序好像没啥问题,在实际运行时,EPWM1的计数器 TBCTR会比 其他三路的 TBCTR大2 ,这是怎么回事呢?反映到波形上就是PWM1超前其他路的PWM   不知道各位大神有没有遇到过这样的问题。请帮忙解决一下。

 

Brian Wang0:

不知道您是否有尝试过软件强制同步?

在我的应用中需要用到4路EPWM,同步输出, 我按照手册里面的方法和官方历程的方法进行了PWM的初始化,同步部分的程序如下:

 EPwm1Regs.TBPHS.half.TBPHS = 0;                // Phase is 0

 EPwm2Regs.TBPHS.half.TBPHS = 0;

 EPwm3Regs.TBPHS.half.TBPHS = 0;

 EPwm4Regs.TBPHS.half.TBPHS = 0;

 EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;        // Disable phase loading  

EPwm2Regs.TBCTL.bit.PHSEN = TB_ENABLE;  

EPwm3Regs.TBCTL.bit.PHSEN = TB_ENABLE;  

EPwm4Regs.TBCTL.bit.PHSEN = TB_ENABLE;

 

 EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO;  //计数为0时输出同步信号  

EPwm2Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;   //同步信号输入

 EPwm3Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;   //同步信号输入  

EPwm4Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;   //同步信号输入

 

 EPwm2Regs.TBCTL.bit.PHSDIR = TB_UP;         //    同步后递增  

EPwm3Regs.TBCTL.bit.PHSDIR = TB_UP;         //    同步后递增  

EPwm4Regs.TBCTL.bit.PHSDIR = TB_UP;         //    同步后递增

  程序好像没啥问题,在实际运行时,EPWM1的计数器 TBCTR会比 其他三路的 TBCTR大2 ,这是怎么回事呢?反映到波形上就是PWM1超前其他路的PWM   不知道各位大神有没有遇到过这样的问题。请帮忙解决一下。

 

LEI BO:

回复 Brian Wang0:

我在打开PWM开始发波的时候执行过一次  

EPwm1Regs.TBCTL.bit.SWFSYNC=1; EPwm2Regs.TBCTL.bit.SWFSYNC=1; EPwm3Regs.TBCTL.bit.SWFSYNC=1; EPwm4Regs.TBCTL.bit.SWFSYNC=1;

在PWM正常运行的时候没有执行强制同步,问题还是存在 。难道每个周期都需要进行软件强制同步?

在运行过程中点暂停 依然是 EPWM1 的TBCTR为:

其他三路的TBCTR数值一样为:

赞(0)
未经允许不得转载:TI中文支持网 » 为什么F28035的EPWM不能同步
分享到: 更多 (0)