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.

[参考译文] TMS320F28377D:HRPWM 在 CMPA 更改附近无法正常工作

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/651713/tms320f28377d-hrpwm-not-working-properly-near-cmpa-changes

器件型号:TMS320F28377D

大家好、

我正在使用28377D 进行 PWM 转换器设计、以实现调制器。  一位同事和我注意到、在某些情况下、在某些区域、HRPWM 模块的响应不正确。  我们观察到 CMPA 和 CMPAHR 寄存器、发现 CMPAHR 值按预期增加。  在高速数字示波器上、我们测量了脉冲宽度、并观察了脉冲宽度随 CMPAHR 寄存器中的增加而变化的情况。  我们观察到、对于几组有效 CMPAHR 计数、占空比不变、直到微控制器达到粗略 CMPA 寄存器值的变化。  这是 HRPWM 模块的已知问题、还是我们使用的硬件有问题?  请提供任何可能的帮助或指导。  失去实质性 PWM 分辨率并不是很好的、可能会导致我们的转换器限制周期、从而导致我们试图避免的噪声。  

谢谢、

Lance Hummel

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

    为了添加一些附加信息,我观察了 HRPWM 模块输出,并创建了一个环路来测试模块,我注意到外设在 CMPAHR 寄存器中的值高达64*256时工作正常, 但是、一旦超过该值、PWM 输出将不再显示对脉宽的任何微调。 我使用的是 SFO、MEP_ScaleFactor 通常在65-67范围内、最终导致脉宽响应中的死区。 我以250kHz 的频率操作转换器、转换器通过同步整流与4个独立相位交错。 如果需要更多有用的信息、请告诉我。

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

    此处捕获的一些数据显示了该问题。  我们递增了 CMPAHR 寄存器的 HRPWM 高8位、并在高速示波器上测量了占空比、并对波形求平均值。  橙色线表示 CMPAHR 寄存器值每次递增时的占空比变化。  当 MEP 不再工作时、橙色的差分图将变为接近零。  可以观察到、即使该条件对 MEP 阶跃数有效、测得的占空比不会在值超过63时增加。  有一些测量噪声、可以通过对更多样本求平均值来降低这些噪声、但使用64个平均点的数据充分显示了一般趋势、即脉冲宽度不会增加、即使编程为这样做也是如此。

    兰斯

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    作为额外的信息、我移植了28377D 代码以在28377S 微型系统上运行、该器件生成了69的 MEP_ScaleFactor、并且在 CMPAHR 计数超过66时停止工作。 似乎根据对多个器件的测试、非线性在 SFO 返回的 MEP_ScaleFactor 以下发生3次计数。 我在文档中找不到任何内容表明这是预期的操作、但我想我会与大家分享。

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

    尊敬的 Lance:

    很抱歉耽误你的时间。

    让我确保我理解问题。 您看到的是,当校准例程返回的 MEP 换算系数为65时,CMPAHR 值一旦增加到65*256以上就不会产生任何影响?

    这种行为似乎表明 在 PWM 配置中 HRCNFG[AUTOCONV]位没有被置位。 设置此位后、您应该能够向 CMPAHR 寄存器写入0到0xFFFF、并在整个范围内看到线性响应。

    如果情况并非如此、或者我在这里遗漏了一些东西、请告诉我。

    谢谢。

    Hrishi

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

    Hrishi、您好!

    问题比这个复杂一点。  在上述测试期间、autoconv 位确实设置为0、但这是出于目的。  如果 autoconv=0且 MEP_SCALL_factor = 67、我们应该在 CMHR 寄存器中看到一直到67x256的线性延迟响应、但我们通常看到最后几个计数(57~63的范围、取决于 PWM 模块)确实会产生额外的延迟。

    当我们将 MEP 调制更改为 CMPA 信号的上升沿(远离之前的周期结束)时、我们发现问题需要解决、问题本身也得到了解决。  我们尝试在发生 COMP0事件时使用 HRPWM 系统(我们使用的是下降斜升方案)。  将 HRPWM 边沿切换到上升边沿意味着我们必须反转 MEP 计数的极性。  粗计数与之不同、高计数意味着更宽的占空比、在 HRPWM 中、较高的 MEP 计数意味着更窄的占空比、因此我们添加了一些简单的数学运算来处理这种情况。  我们还启用 了 autoconv 位以节省一些计算时间。  

    谢谢、

    Peyman。