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.

TMS320F28335 PWM2A与PWM1A实现左右移相输出

1,PWM2A与PWM1A均为互补输出,上下计数,这里不考虑死区问题。

2,系统频率为150M,设PWM1,2的TBPRD为9000。

3,我要实现PWM1A与PWM2A,左右能可控距离移动。见下图。我用别人说的用移相寄存器来实现,发现只能方便实现图中的向右移,因为寄存器的值只能是正数,当为0时PWM1A,PWM2A正好是对齐的,即不法向左移动。

4,有什么办法能方便实现向左右可控移动?

5,要实现的移动轨迹:开始时为对齐->向右缓慢移动,直到移动到下图向右的极限(如500)->开始向左缓慢移动,直到移动到左边的极限(如-500)。

6,尽量不要用移相寄存器来实现,因为向左移动时无法达到向左移过PWM1A,在这个解决方案中不能变更TBPRD的值。

  • 我查看别人的汇编码,寄存器0x6800,0x6840的值=0X0032,没有开同步,没有用移相
  • 你好,暂时没有很确切的方法,我会咨询一下这方面的专家之后给你答复。
  • 感谢,非常期待,这个问题困了我很长时间了,关键是别人用28335实现了,我确找不到一点头绪。

  • 这边收到回复:
    如果设置TBPHS = TBPRD-负相移。 可以使PWM 2滞后于PWM 1。
    如果将正值输入到TBPHS寄存器中,就可以使PWM2领先于PWM1。
  • 因为我要动态改变移相角,PWM2A,相对于PWM1A只要左右移动5度左右,但是要连续左右移动,到了最左边5度时又要移回到向右5度,中间要连续。

    不能影响到中断时间,不能影响输出波形。我用改变EPwm2Regs.TBCTL.bit.PHSDIR,方向继存器来实现,发现在改变的那一次会丢失一次PWM波,这是不能接受的。

    我想一定还不用移相寄存器实现精确左右移相的,因为人家人的28335程序就不是用移相继存器实现的,这会是用什么办法呢?

  • 订正一下,改变EPwm2Regs.TBCTL.bit.PHSDI不是丢失PWM波,是丢失2次中断,PWM1A,PWM2A各一次。