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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/772333/tms320f28069-pwm-duty-cycle-confusion

器件型号:TMS320F28069

在 TRM 中可以很好地说 TBPRD 寄存器必须比 PWM 周期少一个。 因此、如果我想生成40kHz PWM (假设90MHz 运行)、我会将 TBPRD 设置为2250 - 1 = 2249、如果我想生成400kHz PWM、我会将 TBPRD 设置为225-1 = 224

此外、如果我想使400kHz PWM 具有50%的直流、我需要将 CMPA 设置为225/2 = 112.5、因此我将 CMPA 设置为(225/2)-1 = 111、并将 CMPAHR 设置为0.5 * 65536=32768、这样就可以获得良好的 PWM。

但是、我注意到、当我想使40kHz PWM 具有50%直流电时、我需要将250/2 = 1125输入 CMPB 而不是1124。

这现在令人困惑。 何时需要为占空比考虑适当的周期以及何时需要为占空比减1?

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

    Rein、

    您只减1是因为计时器从零开始计数、是的、您应该考虑这一点、但误差最小。 因此、我要回答您的问题、说这个世界并不完美、也不会是您的空循环。

    在400kHz 时、您将看到+或- 0.222%的误差、具体取决于您选择113还是112。 根据您的系统、您需要选择这些值之一。 一些客户选择对 PWM 信号进行抖动、并在每个周期的112至113之间切换、平均值为50%。 在较慢的信号上、您将看到更小的百分比误差。

    您可以使用 HRPWM、但我怀疑这不是必需的。

    此致、
    Cody  

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

    遗憾的是、对于我的解决方案而言、精度很重要、即使是0.222%也是误差太大。 因此、我将从400kHz (225个 SYSCLK 周期)切换到401.786kHz、以便能够使用50.0%的占空比(恰好为112个 SYSCLK)。 所以、我一直在漂移、当我需要考虑这1个 SYSCLK 时、确切的规则是什么? 我假设我始终需要考虑这一点、但40kHz PWM 表明、在该 cas 中、我不需要使用它。 它是否与 HRPWM 配置标志有关?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    由于根本原因不正确、需要从比较器中移除1个 SYSCLK 的占空比起始点、因此问题已得到解决。 一旦我在零事件时启动了所有占空比、那么我不必从比较器值中减去1、对于50%的占空比、比较器应该始终是实际周期的一半、而不是 TBPRD (即周期- 1)