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.

[参考译文] TM4C123GH6PGE:PWM 同步

Guru**** 2533390 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/879432/tm4c123gh6pge-pwm-synchronization

器件型号:TM4C123GH6PGE

您好!

对于一个项目、多个通道被用来并行输出 PWM 信号。 各种 PWM 信号对该功能至关重要。

多个通道应进行时间同步以同时启动、并且最好不要进行相移(交错)。

同步功能已知。

但是、当前使用单独的汇编器线程来修改 PWM 以同时启动。 这不是首选方法、因为任何可能的跳过/延迟都会损坏应用。

请在这方面为我提供支持。

此致

Kevin

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

    尊敬的 Kevin:

    这里的关键问题是需要同步启动多少个 PWM。

    从我看到的情况来看 、PWMGenEnable 可被用来启动一个 PWM 对、该 PWM 对属于一个特定的发生器模块-也就是两个 PWM 通道-同时。 除此之外、我看不到在启动时立即同步的方法。 对于通用 MCU、该要求可能过于具体。 为 PWM 外设提供的同步选项运行良好、并且即使在处理 PWM 同步应用时、此同步启动问题也不是我之前提到的问题。

    如果他们需要两个以上的通道... 也许他们可以使用三态来保持信号、直到所有发生器都被设置好? 前提是三态本身不会引入某些异步行为。

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

    您好 Ralph、

    我们的小组-通过过去的经验-可能会在"多通道同步 PWM 操作"中证明很有用。

    我们将通过以下方式记录我们的信念:

    • 外设驱动程序库的特定"PWM 同步"。 功能
    • 我们的团队开发了(长期)实际的"工作代码"
    • 此外、我们相信 PWM 模块(即8个通道)的"完整内容"可以同步!

    驱动程序库提供2个关键功能:  (两个 API 功能似乎都"直接满足此海报的需求")

    21.2.2.9 PWMGenConfigure
    说明:此函数用于设置 PWM 发生器的工作模式。 计数模式、同步模式和调试行为均已配置

    当 PWM 发生器参数(周期和脉宽)被修改时、它们对输出 PWM 信号的影响会被延迟。   在同步模式下、在发生同步事件之前不会应用参数更新。 此模式允许修改多个参数并同时生效、而不是一次生效。   此外、同步模式下多个 PWM 发生器的参数可同时更新、使其被视为统一的发生器。

    21.2.2.35 PWMSyncTimeBase
    同步一个或多个 PWM 发生器模块中的计数器。

    现在、我们的海报指出、"同步功能是已知的。"   然而、似乎(甚至)知识-海报寻求(进一步)清晰和理解。   相信这篇帖子的答案需要...

    以及我们过去的准则:  (被认为"对 Gov't 工作有好处")

    //将两个 PWM 发生器配置为递增/递减计数模式、同步更新以及在调试事件发生时停在零。  (再次说明-所有4个'Gens'都可以//可以容纳)

    ROM_PWMGenConfigure (PWM0_BASE、PWM_GEN_0、(PWM_GEN_MODE_UP_DOWN |
    PWM_GEN_MODE_GEN_SYNC_LOCAL |
    PWM_GEN_MODE_DB_SYNC_LOCAL |
    PWM_GEN_MODE_FAULT_EXT | PWM_GEN_MODE_FAULT_MINPER |
    PWM_GEN_MODE_DBG_STOP);

    ROM_PWMGenConfigure (PWM0_BASE、PWM_GEN_2、(PWM_GEN_MODE_UP_DOWN |
    PWM_GEN_MODE_GEN_SYNC_LOCAL |
    PWM_GEN_MODE_DB_SYNC_LOCAL |
    PWM_GEN_MODE_FAULT_EXT | PWM_GEN_MODE_FAULT_MINPER |
    PWM_GEN_MODE_DBG_STOP);

    //同步发生器的时基。
    //
    ROM_PWMSyncTimeBase (PWM0_BASE、PWM_GEN_0_BIT | PWM_GEN_2_BIT | PWM_GEN_3_BIT);  //这些参数非常直观。   //我们已将它们"重新命名"(未显示)、在该过程中、参数与特定 PWM 发生器函数的关系要好得多...