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.

[参考译文] TMS320F28379D:在可变频率应用中偶尔出现 ePWM 漏脉冲

Guru**** 2537350 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1493828/tms320f28379d-epwm-missing-pulses-occasionally-in-variable-frequency-application

部件号:TMS320F28379D

工具/软件:

在相位控制转换器应用中、我们需要两个 PWM 驱动器、这两个驱动器可以改变它们在两个方向上的相对相位、并且还可以变频工作。 我们的应用将 ePWM1用作 ePWM4的同步源、并且都在向上/向下计数器模式下运行。 ePWM1同步输出事件为 ePWM1=0 CTR、用于在 ePWM4中加载 PHS=0.5*TBPRD、并在 SYNC 后开始递减计数。 该相位值可以通过控制器的操作进行修改、即向上(朝向+180°)或向下(朝向-180°)。

新频率值的计算以及将这些新值写入 ePWM 模块由恒定速率 ISR 任务处理。

下面是    Simulink 中的示例模型的简单版本、其中频率会在再次复位之前逐渐递增至一个值。

当频率是恒定的(即 TBPRD 固定的情况)时、方案可按预期工作。 然而、当 TBPRD 变化时、当 ePWM4 PHS=0.5*TBPRD 时、当频率增加时(但不在频率降低的情况下)、ePWM4会发生脉冲下降。

脉冲下降/缺失事件似乎仅在 ePWM4的相位非常接近或等于0.5时发生。 但是、是否有问题的确切范围取决于频率的变化率。

如果 ePWM1的 SYNCO 被禁用、则不会发生脉冲丢失/丢失、但在我们的应用中、需要同步才能将所需的相位值加载到 ePWM4中。

我们注意到、这与 CTRD = CMPA 和 CTRD = CMPB 相关、但不知道为什么会这样。

随附的示波器屏幕截图显示 ePWM1为黄色、ePWM4为青色、以及 GPIO 以洋红色切换时的触发事件(CTRD = CMPA)输出。

当 ePWM4中的 PHS=0.5*TBPRD 时、这些触发事件(CTRD = CMPA)不会如期发生、不时会出现间歇性漏脉冲。

然而、当 ePWM4中的 PHS=0.501*TBPRD 时、这些触发事件似乎符合预期、而 ePWM4不会丢失任何脉冲。

如有任何建议和解释、将不胜感激。
谢谢

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

    您好:

    如果未实现几件事、这将是在4类 ePWM 上发生的一个问题。 首先来看、很可能的问题是 TBPHS 不会与 CMPA 和 TBPRD 同时更新、而是在一个周期后更新。 发生这种情况是因为 TBPHS 没有影子寄存器、然后在该周期内错过 CMP 上的操作。 修复方法是使用 CMPA 和 CMPB 而不是 TBPHS 寄存器来生成波形。

    但是、为了获取更多信息并正确提供帮助、您能告诉我您是否正在使用全局加载(该加载应该与变频应用一起使用)? 如何设置和清除 PWM 波形?

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

    尊敬的 Stevan:

    非常感谢您的答复。 我们确实希望使用全局加载、但我尚未在 Simulink 中找到该选项。 我的理解是、我们可能必须在 Simulink 中使用自定义代码来启用相关寄存器? 此外、阅读本 文档时、应用中可能会出现一个边界情况、需要通过其中提到的权变措施来缓解该情况。 我还没有从如何在 Simulink 中实施这些权变措施的角度探讨这些问题。

    关于 PWM 波形的设置和清除、请参阅随附的图。

    谢谢你。   

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

    嗨、Hitesh、

    是的、MATLAB 目前不提供全局加载特性、因此您需要通过代码手动对其进行配置。

    我已代表您向 MathWorks 提交申请- C2000 Blockset 中缺少 ePWM 特性- MATLAB Answers - MATLAB Central

    谢谢、
    Aditya.

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

    感谢您发送编修。 我们将等待更新。

    此致、

    Hitesh

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

    尊敬的 Stevan:

    希望您做得好。

    我想知道全局加载是否可以解决我的问题? "你以为你赢了吗?

    谢谢。

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

    您好 Hitesh、

    使用全局加载可确保所有寄存器在指定事件中同时更新。 始终建议将全局加载特性用于变频应用。

    使用 CMPA 和 CMPB 方法添加相移将解决 TBPHS 漏操作和干扰问题。 与 CMPx 寄存器不同、TBPHS 没有影子寄存器。