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:在固定相移周期内的 EPWM 未命中脉冲问题

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1615756/tms320f28377d-epwm-miss-pulse-issue-with-fixed-phase-shift-period

器件型号: TMS320F28377D

尊敬的专家:

这是一个与早期主题相关的问题。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1583665/tms320f28377s-missing-epwm-pulse-in-phase-shifted-epwms-having-a-common-sync-source

我们在此面临类似的问题。

我们使用向上计数、CAU 为低、CAD 为高。 涉及 3 个 ePWM、2 个 ePWM 通过恒定的 120 度实现相位优化。 频率是固定的、占空比可能会变化。

当 CMPA 接近或等于 TBPHS 时、我们还会看到脉冲丢失。

我们的困惑如下:

在初始同步后、所有 PWM 的所有 TBCTR 值都应保持彼此精确的相位、这是否成立、因为所有这些值都由同一个外设时钟驱动? 在这种情况下 、后续的 SYNC 事件几乎不应产生影响。  

对于 TBCTR 到 CMPA、TBCTR 必须有“跳过“、例如在某些时候、TBCTR 在向上计数时从 x 变为 x+2、因此它错过 CMPA=x+1。 但是、任何“跳过“都必须对周期产生影响、如果周期长期正确、计数器中不应出现任何跳过。

让我们举一个简单的例子:

PRD=6 CMPa=2、TBPHS (ePWM2)=3、同步到递增计数、递增计数、计数器应如下所示:

ePWM1:[2 1 0 1 2]

ePWM2:[0 1 3 4 5]  

我假设 TBCTR2 从 1 跳到 3、在此期间错过了 CAU、但我们来看下一个周期。

ePWM1:[3 4 5 4 3 2 1 0 (SYNC)]

ePWM1:[4 3 2 1 0 1 2 3 (SYNC)]

在此期间根本不会跳过、以下期间也是如此。

因此、只要所有 ePWM 的 TBPHS 和 PBPRD 保持不变、第二和下一个周期就不会有任何“跳过“(可能会在第一次同步时跳过)

如果我们可以确保 TBCTR 不会跳过、则导致脉冲丢失的原因可能是 CMPA 变化。 但是、由于 CMPA 仅在 CMPA=0 时负载(不加载同步)、我无法看到 CTR 可能会丢失 CTR。

您能帮助我们进一步解释一下漏脉冲是如何发生的吗

此致、

挂起

 

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

    您好 Hang、

    我来试试。

    出现此问题的原因是 TBCTR 值与 CMPA 之间的相互作用(当它们非常接近或相等时)。 具体情况如下:

    1. 发生同步事件时、TBCTR 会加载 TBPHS 值
    2. 如果 CMPA 恰好等于或非常接近 TBPHS、计数器可以在同步事件期间“跳过“经过比较点
    3. 这会导致错过预期的比较事件(和相应的输出转换)

    您理论上理解计数器应该如何行为是正确的、但硬件实现存在这种边沿情况、在同步转换期间可能会错过比较事件。

    发生跳过的原因:

    虽然 TBCTR 值应在初始同步后保持其相位关系、但在某些特定情况下、硬件行为会导致问题:

    • 当在 SYNC 点加载 TBPHS 时、硬件会优先执行此操作
    • 如果 CMPA = TBPHS(或非常接近)、则比较逻辑可能没有足够的时间在此转换期间检测匹配条件
    • 计数器会有效地从其当前值“跳转到 TBPHS、从而可能跳过 CMPA 值

    多种解决方案方法

    1. 影子寄存器和加载事件:确保 CMPA 更新在零/周期 (CTRMODE=updown) 发生,以防止在关键计时点发生更改

    2. 添加较小的偏移:修改算法以防止 CMPA 完全等于 TBPHS 值:

    3. SYNC 时序调整:将同步配置为在周期中远离预期比较事件的某个点发生

    4. 使用时基时钟预分频器:更高的 TBCLK 分频因子有助于降低定时灵敏度

    请告诉我是否有这些功能。

    谢谢

    Srikanth

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

    Srikanth,

    感谢您帮助我理解此处的问题、我想通过以下示例确认我是否正确理解您:

    PRD=6 CMPA=3、TBPHS (ePWM2)=3、同步到递增计数、递增计数、计数器应如下所示:

    ePWM1:[2 1 0 (SYNC) 1 2]

    ePWM2:[1 2 3(同步)4 5]

    当 ePWM2 TBCTR = 3 时、同步事件和 CAU 事件同时发生。  

    如果 CMPA = TBPHS(或非常接近)、则比较逻辑可能没有足够的时间在此转换期间检测匹配条件

    在这种情况下、您是否意味着在这种情况下将跳过 CAU? 由于 CTR 在 SYNC 之前已经保持 3、并 在整个 周期中保持 3、这与常规计数周期相同。 为什么比较逻辑可能没有足够的时间来检测事件?

    如果我的理解不正确、您能给我举一个类似上面的例子吗?

    假设我们已确保 ePWM 影子寄存器仅在 CMP1=0 时处于活动状态、并且 ePWM1 和 ePWM2 的相位在第一个周期后同步、TBPRED 和 TBPHS 是固定的、并且 CTR 可能会发生变化、您能说明一下如何在接下来的周期中错过 CAU 吗?

    此致、

    挂起

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

    您好 Hang、

    让我后退一步。

    您在初始问题中解释的内容是有意义的。 由于 ePWM2 TBCTR 跳过 CMPA 值 2、因此可以看到脉冲跳跃。 它应该只在您第一次同步时发生。

    如果我们可以确保 TBCTR 不会跳过、那么导致脉冲丢失的原因可能是 CMPA 变化。 但是、由于 CMPA 仅在 CMPA=0 时加载(不加载同步)、我无法看到 CTR 无法丢失 CTR。

    请问您提到的 ePWM CTR = 0 是什么? 我认为 ePWM1 的 TBCTR=0 发生了同步。 请您在此处详细说明您的担忧

    谢谢

    Srikanth

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

    尊敬的 Srikanth:

    您提到了哪个 EPWM CTR = 0?

    我指的是每个 EPWM 的 CTR = 0。 对于所有 CTR、影子到活动仅在发生自己的 PWM=0 事件时发生、而不是同步事件。 当然、对于 ePWM1、同步事件也会在 CTR =0 时发生。

    也就是说、我怀疑的是、好像我们仅在 CMPA=0 时确保影子到活动状态、prd 和 PHS 是恒定的并排除第一个周期、看起来 CTR 无法跳过 CTR。 在这种情况下、理论无法解释我们看到的漏脉冲。

    此致、

    挂起

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

    您好 Hang、

    为了更好地提供帮助、您可以共享配置的图形说明以及跳过 PWM 波形的示波器结果。

    谢谢

    Srikanth