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.

[参考译文] MSPM0G3507:PWM 占空比捕获问题

Guru**** 2587365 points
Other Parts Discussed in Thread: MSPM0G3507

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1576187/mspm0g3507-pwm-duty-cycle-capture-issue

器件型号:MSPM0G3507


工具/软件:

需要捕获频率为 400kHz 的输入 PWM 信号的占空比。 为此、我使用了现有的示例  timx_timer_mode_capture_duty_and_period_LP_MSPM0G3507_nortos_ticlang、并进行了以下更改  

1. CPU 时钟频率随 SYSCLK 变为 80MHz

2.捕捉模块和 PWM 模块使用 80MHz 时钟  

问题  

对于输入 PWM 信号频率 400kHz、占空比计算值为 117、占空比设置为 60   

CPU 时钟  

采集模块  

PWM 模块  

输出

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

    嗨、Deven、感谢您联系我们。 让我在我这边重复一下、看看如何解决问题。 我会让你不断更新!

    -布赖恩

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

    使用 80MHz CPU 时钟和 400kHz 信号时、PWM 周期为 200 个 CPU 时钟、听起来好像很多、但会很快(尤其是在 2 个等待状态下)。 如果占空比为 50%、您需要在 100 个 CTR 时钟内获取 CC[0](实际上,重新加载 CPU 值)、这会更严格一些。  

    在 PwmPeriod = 35 时获得 117 (%) 的值意味着测量的差值为 41、这表明 100 个时钟不足以到达 setTimerCount () 调用、同时还有另一个捕获。

    建议:

    1) 实验:减慢输入 PWM 的速度——说是周期的两倍或三倍——看看你能不能得到更合理的读数。

    2) 如果您还没有,请尝试增加优化 (-O) 级别。 我的观察结果是使用-O0 时、许多/大多数“内联“函数转变为库调用、大大增加了低级运行时间。

    3) 在 ISR 中获取 CC[0]以及 CC[1]。 将这两个抽取物分开,这就邀请了一个(不同的)种族。

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

    1.在较低的 PWM 频率(如 400Hz)下、PWM 占空比逻辑工作正常  

    2.提高优化水平对任何随机值在 dutycycle 变量中都没有帮助  

    3、 在 ISR 中对 CC0 和 CC1 进行加载没有任何帮助  

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

    1.在较低的 PWM 频率(如 400Hz)下、PWM 占空比逻辑工作正常  

    2.提高优化水平对任何随机值在 dutycycle 变量中都没有帮助  

    3. 在 ISR 中获取 CC0 和 CC1 没有任何帮助  

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

    您可能会达到此 MCU+固件的极限。 如果您有时间、可以尝试微调 PWM 频率以查看实际限制。

    长期来看、您可能能够使用 DMA 执行某些操作、但这超出了本特定示例的范围。

    无论哪种情况、您都需要以到达速率处理结果流、这(仍然)每次测量仅为您想要执行的所有操作提供 200 个 CPU 时钟。