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.

[参考译文] TMS320F280025C:使用 CLB 减小 PWM 占空比

Guru**** 2391415 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1371104/tms320f280025c-reduce-pwm-duty-using-clb

器件型号:TMS320F280025C

工具与软件:

您好、CLB 专家:

我想持续降低2个 PWM 的占空比(相同的频率200kHz、相同的占空比、相位偏移180°)、只要发生错误(CMPSS3.CTRIPOUTH= HIGH)、如下图所示

只要存在误差、占空比就会持续降低 x%、直到达到极限值。

我正在考虑一个解决方案:

  • 使用 CLB 计数器从 TBCTR=0开始计数到 TBCTR=CMPA、以获得当前占空比。
  • 然后使用 HLC 指令将其减小一个数量。
  • 然后更新 PWM。 使用 HLC 直接连接 CMPA 或
  • 将其放入 SPI RX 缓冲器、与 SPIRX/CLB 中断链接的 DMA 将更新 PWM.CMPA。

 

您认为它是可行的、您能帮助我改进它并实施 HLC 指令吗?

 

谢谢。此致、

夸伊

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

    您好、Qy、

    我假设您想在没有任何 CPU 干预的情况下减小 PWM 占空比。 您是使用实际的 ePWM 模块还是纯 CLB 来重新创建您的 PWM 信号?

    这似乎毫无疑问是可行的、可以在.syscfg 文件中共享您的 CLB 实现、如果您在创建过程中需要帮助、请告诉我。 我不清楚 HLC 如何更新 ePWM.CMPA。 如果你不知道如何做到这一点,我可以提供一些建议,以实现相同的最终结果。

    谢谢!

    卢克

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

    Luke、您好!

     

    感谢您的答复。

     

    当然、在与 CMPSS 链接的中断服务中更改占空比很容易、但我认为对于200kHz PWM 来说、这是缓慢的。

     

    我更喜欢实际的 PWM、因为它比使用 CLB 创建有许多优势。 我还想用 PWM 边沿触发 ADC 转换。

     

    我不知道 HLC 是如何更新 ePWM 的。 CMPA。 这只是我的想法。

     

    请找到随附的我的 syscfg 文件。

    • 当 CTRIPOUTH =低电平时、每个谱系我计算 PWM5的占空比
    • 当 CTRIPOUTH=高电平且 TBCTR=0时、我触发 HLC 到
      • 将当前计数器值 C0移到 R0
      • 然后、R0 = R0 - 5以减小占空比、
      • 在下一个 PWM 周期中将 R0移到 C0以进行下一次减小
      • 然后触发 SPI 将 R0推至 SPIRX 缓冲器
    • 与 SPIRX 链接的 DMA 将数据从 RXBUF 传输到 EPWM5.CMPA 和 EPWM4.CMPA

     

    我不知道如何检查 R0是否<= DutyLimit、然后设置 R0 = DutyLimit

     

    请检查是否正确,并建议我一些改进。

    谢谢你。

    夸伊

    e2e.ti.com/.../5810.empty.zip

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

    您好、Qy、

    要使 R0 = DutyLimit、您可以将 DutyLimit 存储在 R1中并触发 HLC 以将 R1的内容移动到 R0中。

    我不知道如何检查 R0 <= DutyLimit 是否仅与 CLB 相关。 您在做这项检查是为了什么? 或许有另一种方法可以在不进行此检查的情况下获得相同的结果。

    谢谢!

    卢克

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

    Luke、您好!

    这是我们硬件工程师的要求。 它们不希望在出现错误时完全关闭能量、否则再次打开时会出现相同的问题。

    我们能否与其他模块结合使用、在这种情况下进行比较?

    此致、

    夸伊

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

    需要说明的是、您希望占空比始终至少达到一个最小值?

    为此、您可以与另一个占空比最小的 PWM 或 CLB 计数器输出进行或运算。

    如果这种方法对您有用、请告诉我。

    Luke