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.

[参考译文] TMS320F28P550SG:当由代码写入计数器时、相位偏移和同步 EPWM 计时器的行为会模糊不清

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1637219/tms320f28p550sg-obscure-behaviour-of-phase-offsetted-and-synced-epwm-timer-when-counter-is-written-by-code

器件型号: TMS320F28P550SG

大家好:

我有一个万能的行为、我想分享一下此设置下的 PWM 计时器:
 -使 pwm8 同步到 pwm7(同步到零),并为 pwm8 一半周期的相位偏移,以获得 pwm8 和 7 之间的 180 度偏移
 -在 3500 的周期获得 40kHz PWM(向上计数),控制器在 140MHz 运行(这意味着 pwm8 相位偏移 1750)
 
当 PWM 计数器仍然停止时、我将 pwm8 计数器设置为初始化阶段内的相位偏移 1750、以便两个计时器同步运行并从一开始就偏移。
通过此设置、pwm8-CTR 计数从 1750 重复到 5250 (3500 + 1750)、从不会达到 0。 似乎 pwm8-CTR 在开始运行之前被其初始 CTR val 永久偏移。
如果在启动前未设置 CTR 值、则不会发生这种情况。
当一旦发生这种奇怪的行为、将相位清除为 0 时、pwm8 计数器会进行修复、然后 I cna 再次应用相位偏移以使 pwm8 CTR 按我预期的方式运行。

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

    您好、

    首先禁用时钟、初始化 PWM、然后启动 PWM 时钟、以确保遵循正确的 PWM 时基同步序列。

    通过此设置、pwm8-CTR 计数重复从 1750 到 5250 (3500 + 1750)、从不会出现任何

    PWM 计数器永远不会超过 PRD、不确定您的上述含义。

    请参阅 C2000 Ware 示例以了解相位延迟演示。 如果您仍有问题、请按照您所遵循的特定图表顺序详细了解问题。

    谢谢

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

    你好 Prarthan、

    我确实遵循了正确的 PWM 同步和启动顺序。

    我知道在每种情况下、PWM 计数器绝不会超过 PRD 值、但这在我看来似乎是错误情况。 在我们的正常应用中、我为您截屏了带有停止控制器的 CCS 窗口。

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

    您好、

    TBPHS 如果大于 TBPRD、则会导致 TBCTR 跳转到 SYNC 事件上高于 TBPRD 的值、并根据配置的同步 cntr 方向向上或向下计数。

    或者 TBCTR 寄存器本身写入到高于 TBPRD 的值。 您是随时间改变 TBPRD 值还是静态?

    根据实施情况、如果 PRD ==CNTR、则会复位 CNTR 值。 如果您在 cntr 中看到高于 PRD 的值、则意味着正在修改 TBCTR 以 大于 PRD。  

    谢谢

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

    由于在初始化阶段跳过使用相位值直接写入计数器值时不会发生这种情况、因此我有了适合我的代码的解决方案。

    感谢你的帮助。