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:PWM 调制问题

Guru**** 2394305 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/610128/tms320f28377s-pwm-modulation-problem

器件型号:TMS320F28377S

大家好、TI 社区、

我目前正在尝试使用 CPU 计时器中断来调制我的 PWM。 不过、我将生成调制 PWM 频率、但我的当前问题是、在进行调制之前存在大约20秒的延迟。 我初始化了我的 PWM、使其计数器冻结。 我还初始化了 CPU 计时器、计数器也停止了。 我让 CPU 计时器以我要调制的采样数乘以我要创建的正弦波的频率的速度中断。 我认为这是某种同步问题。 是否有方法将 ePWM 和 CPU 定时器计数器同步在一起?

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

    如果频率不是太慢、我建议使用两个 ePWM 模块代替 ePWM + CPU 计时器。 EPWM 具有许多专用机制来确保精确同步。

    如果频率较慢、应该可以在每个周期中只进入 ePWM ISR、并在软件中实现较慢的计时器。 这也将确保精确同步、因为它仅在发生精密 ePWM 事件时进行计数。

    另一个需要检查的问题是 PLL 已正确锁定、并且器件正在所需的 SYSCLK 频率下运行。 您应该启用 XCLOCKOUT 引脚并在调制运行前后测量频率。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Devin、

    进行调试。 我创建了一个具有递增变量和延迟的无限循环。 我注意到、在我在示波器上观察 PWM 调制之前、持续大约需要21.5秒。 在512 kHz 频率等较快的 CPU 定时器中断调制频率下、主循环递增变量停止递增、程序卡在 CPU 中断中(我可以通过看到中断计数表达式递增来判断)。 在大约1000Hz 的较慢 CPU 定时器速度下、我的主测试循环变量能够继续递增、并且我的程序不会卡在我的中断中。

    在我开始处理程序的某些不同方面之前、我曾使用过此代码、但现在我只对其他所有内容进行注释、并仅关注此问题。 作为参考、我的 CPU 计时器需要能够在高达512kHz 的频率下运行、而我的 ePWM 已设置为600kHz (以便能够以足够快的速度运行)。 我相信我也已将这两个外设配置为遵循100 MHz CPU 时钟。 在我跳转到使用另一个 ePWM 生成中断以将占空比值加载到我的主 ePWM 之前、我想知道是否有人可能会看到我的问题是什么、因为我觉得它与我错误更改的某些配置有关。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我还尝试查看了系统时钟。 我注意到 CPU1.SYSCLK 和 PLLSYSCLK 在调制前后保持一致、但我注意到它们仅以25MHz 的频率运行、比我认为的运行频率(200MHz)慢。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Brenden、

    如果您的 CPU 时钟运行速度低于预期、并且执行从未离开 CPUT 计时器 ISR、我猜主 CPU 线程会因中断而无法运行周期。 如果执行只会非常频繁地退回到主线程、它可能会解释为什么要花费~20秒将计数器递增到所需的值。