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.

TMS320F28035: 发波异常

Part Number: TMS320F28035

想做个PWM1A、2A、3A同步计数,然后2A、3A相对于1A同时改变占空比与位移的程序,结果发现 经常会出现占空比出错的问题,某个pwm会随机发出100%占空比的输出一个周期,下个周期才能正常,有办法解决嘛。相位与占空比都限制了上限,不会超过80%占空比。

  • 您好,收到了您的案例,调查需要些时间,感您的耐心等待。

  • 您好,

          请问改变占空比与位移时,PWM禁止了吗?

    • 使用了影子寄存器,是下一周期更新,看了几个帖子,说明要保持tbphs>cmpa但是我这个发波,是一个svpwm的模式,在某扇区整个扇区都会出现某相的pwm设置cmpa>tbphs无法用临时cmpa的模式,三相在本扇区的波形关系如图,在对应扇区频繁出现波形错误,黄色会随机出现满占空比导致输入交流电流畸变
  • 用影子寄存器在ctr=0时候更新,看了几个帖子说出的解决方案都不太适合我这个例子。我实际应用如下图,采用svpwm调制。在图中扇区,整个扇区基本黄色驱动的cpma都大于tbphs,无法采用临时cmpa=tbphs的方式解决问题,有什么别的方案吗?

  • 用影子寄存器在ctr=0时候更新,看了几个帖子说出的解决方案都不太适合我这个例子。我实际应用如下图,采用svpwm调制。在图中扇区,整个扇区基本黄色驱动的cpma都大于tbphs,无法采用临时cmpa=tbphs的方式解决问题,有什么别的方案吗?

  • 使用影子寄存器在下个周期更新,CTR=0更新

  • 采用影子寄存器更新,CTR=0时 。

  • 您好,

         您所遇到的PWM同步和随机100%占空比脉冲的问题似乎与PWM相位偏移和动作限定符(AQ)事件被遗漏的已知现象有关。以下是关键点和解决方案:

        1 根本原因:问题发生在以下情况下:

        - 当 TBCTR 小于 CMPA 而 TBPHS 值大于 CMPA(计数上升)

        - 或者 TBCTR 大于 CMPA 而 TBPHS 值小于 CMPA(计数下降)

       在这些情况下,当发生同步时,计数器可能会跳过 CMPA 值,从而错过本应发生的动作限定事件,导致您观察到的临时 100% 占空比。

      2 推荐的解决方案:为了解决这个问题,您可以实施以下步骤:

      a) 使用T1/T2行为限定符事件来捕捉遗漏的操作:

         在检测到上述条件时启用T1或T2事件;

         配置T1/T2以执行在CMPA时应发生的相同操作;

        将EPWM_SYNC设置为T1事件源;

        配置在T1上升/下降时采取的行动以匹配您想要的PWM行为。

    b) 对于SVPWM,因您提到在CMPA > TBPHS的区段中操作:

      考虑使用上下计数模式并进行适当的相位移计算;

      在使用上下模式时,请记住相位移需要考虑2*TBPRD;

      您可能需要调整TBPHS并为您的区段转换适当地设置PHSDIR。

    3 附加考虑事项:

       确保阴影寄存器为您的更新方案正确配置;

       多个阴影寄存器可以在需要时用来加载复杂波形序列;

       验证您的TBCLK同步是否正确配置。

       确保您的占空比更新在适当的计数值上进行,以避免时间冲突

  • 谢谢,我试试这个方案。

  • 您好我不太理解您说的用EPWM_SYNC做为触发源是如何配置,我想了一个利用et的事件触发,当向上计数到cmpa时触发判断tbphs是否大于cmpa,然后立刻强制aq置低来实现补漏的功能,我发现没用,您的这个建议具体配置有参考吗?

  • 您好,

          请参考此E2E帖子讨论的内容

          (+) TMS320F28379D: TMS320F28379D: Phase-shift PWM, missing pulse - C2000 microcontrollers forum - C2000Tm︎ microcontrollers - TI E2E support forums

          当 tbphs 大于 cmpa 时,你可以使用 T1/T2 事件进行补偿。