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.

[参考译文] TMS320F28377S:请帮我编写代码以获得不同的 TBPRD。 TBPRD 值必须在每个周期内改变。

Guru**** 2448780 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/985750/tms320f28377s-could-you-please-help-me-how-to-write-code-to-get-varying-tbprd-tbprd-value-has-to-be-changed-every-cycle

器件型号:TMS320F28377S

EpwmxRegs。 TBPRD 值是固定的、为我提供了固定的开关频率。 但我希望在每次计数器到达零时提供不同的 TBPRD。 那么、我需要设置哪些寄存器。

请帮助

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

    您好、Suryavalli、

    您可以使用 TBPRD 寄存器并在影子模式下更改周期值。 要启用影子模式、请将 TBCTL 寄存器的 PRDLD 位设置为零(这是默认值)。 默认 情况下、TBCLT2寄存器的 PRDLDSYNC 位也为零、这意味着只有当 TBCTR = 0时才会发生 TBPRD 的影子到活动加载。

    此致、

    Marlyn

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

    感谢 Marlyn 的答复。

    但这已经是完全失效的状态。 它如何帮助我们在每次 TBCTR 变为0时更改 TBPRD 值。 影子到活动加载只是加载 TBPRD 值的一种方法。  

    那么、您的意思是说这一点  

    EPwm8Regs.TBCTL.bit.PRDLD = TB_SHADOW  

    将有助于我们更改 TBPRD 值。 但是、我们应该如何告诉控制器、一旦 TBCTR =0、现在加载一个不同的 TBPRD 值。

    TBPRD 的值 应如图所示。 非常感谢您的帮助。 谢谢

    Suryavalli

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

    您好、Suryavalli、

    我不确定您的编码结构是什么样子、也不确定如何推导新的时基周期值、但您应该只能通过写入寄存器本身 EPwm8Regs.TBPRD = new_TBPRD_value 来更改它;

    如果在 TBCTR = 0时执行影子到活动加载、则意味着写入 TBPRD 的新值将仅在下一次 TBCTR = 0时生效。

    在这里/当你决定更新 TBPRD 的值时由你决定。 我建议您在程序中的 ISR 期间进行此更新。

    此致、

    Marlyn

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

    谢谢您 Marlyn。 我会这样做、并在需要时返回给您

    非常感谢