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.

[参考译文] TMS320F28069:PWM 生成

Guru**** 2039500 points
Other Parts Discussed in Thread: TMS320F28069
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/661638/tms320f28069-pwm-generation

器件型号:TMS320F28069

我使用 TMS320F28069来控制电源转换器、我需要两个 PEM 信号、其中一个信号的频率是另一个信号的两倍。 我在同时更新两个 PWM 信号(它们的 CMPA 寄存器)时遇到问题、因为该寄存器在 CTR = PRD 时更新、这两个信号是不同的。 是否有方法可以同步这两个寄存器、以便在 低频信号的 CTR = PRD 时更新?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Saad、

    在较低频率 PWM 的 CTR = PRD 上、没有更新2个 PWM 的内置功能。

    尝试以下操作:  将 PWM 配置为在 TBCTR = PRD 上具有中断、在周期中间(较慢 PWM 的周期)、较快的 PWM 将具有中断、尝试使用该中断中的影子寄存器更新两个 CMPA 值。 我想这将为您带来所需的结果。

    如果这不会产生所需的效果、您应该能够在软件中使用一些简单变量来同步它。 只需创建一个变量、该变量将在较慢 PWM 的前半部分阻止对 CMPA 的写入、您就可以在 PWM 的 ISR 中更新此变量。

    此致、
    Cody  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我尝试过这么做。 它的工作原理。 现在、我将遇到另一个问题。 当我写入该 ISR 中的 ePWM 寄存器时、每个写入操作至少需要4条指令。 例如  

     EPwm1Regs.CMPA.half.CMPA = X;具有以下组件:

    008025:761F0280 MOVW DP、#0x280

    008027:921B MOV AL、@0x1b
    008028:761F01A0 MOVW DP、#0x1a0
    00802a:9609 MOV @0x9、AL

    我们可以减少每次 ePWM 写入的指令数量吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Saad、

    ".bit"和".half-"指令将始终执行读-修改-写序列、您可以在此处看到这种序列。 您应该能够通过使用".all"写入来减少指令数量、并写入整个寄存器。

    此致、
    Kris