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.

[参考译文] TMS320F28069:延迟了 ePWM 执行

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/925924/tms320f28069-delayed-epwm-execution

器件型号:TMS320F28069

您好!


我们使用 TMS320F28069的 ePWM 输出来控制半桥。
初始化后、仅调整 PWM 机器的比较值。
这发生在 CLA 中断中。 PWM 机器以30kHz 的频率在上行关闭模式下运行。
Epwm1A 和 Epwm1B 用于上 IGBT 和下 IGBT 同步和反相。
我们希望更改 CTR =零和 CTR =周期时的占空比。 CMPA 应用于两个 PWM。

在我的测试中、我注意到在比较值有效之前、输入 CLA_int 的2到3倍。
我的预期是、在 CLA_int 中计算得出的 CompareValue 将从下一个 CTR =零或 CTR =周期事件生效。

这种延迟来自哪里?

Epwm1的初始化如下:

   EPwm1Regs.TBPRD = PWM_PERIode _已使用;//90e6/30e3
   EPwm1Regs.TBPHS.Half.TBPHS = 0;
   EPwm1Regs.TBCTL.bit.CLKDIV = TB_CLKDIV_DIV1;//0
   EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_HSPCLKDIV_DIV1;//0
   EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO;//1.
   EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW;//0
   EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;//0
   EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;//2.
   EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADODE;//0
   EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;//0
   EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_Zero_PRD;//2.    
   EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_Zero_PRD; //2.
   EPwm1Regs.AQCTLA.bit.CAU = AQ_CLEAR;//1.
   EPwm1Regs.AQCTLA.bit.CAD = AQ_SET;//2.
   EPwm1Regs.AQCTLB.bit.CAU = AQ_SET;//2 -可能不需要
   EPwm1Regs.AQCTLB.bit.CAD = AQ_CLEAR;//1-可能不需要
   EPwm1Regs.DBCTL.bit.HALFCYCLE = 0;
   EPwm1Regs.DBCTL.bit.IN_MODE = DBA_ALL;//0
   EPwm1Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC;//2.
   EPwm1Regs.DBCTL.bit.OUT_MODE = DB_FUL_ENABLE;//3.
   EPwm1Regs.DBRED = 42;
   EPwm1Regs.DBFED = 42;
   EPwm1Regs.TBCTL.bit.FREE_SOFT = 0;

此致、

Dominik

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

    Dominik、

    导致 CLA 任务触发的是什么?

    您期望的事件顺序是什么? 更新 CMPA->启动 CLA 任务->更新占空比??  

    此致、
    Cody

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

    您好 Cody、

    CLA 由 ADC 中断触发、该中断由 EPwm1的零或周期事件触发。

    ADC int 有效为空。 CLA 将 ADC 结果转换为其实际值并计算下一个比较值。

    比较值随后在 CLA 中断中写入 EPwm1.CMPA.half-CMPA。

    我的解释是、CompareValue 将用于下一个零或周期事件。

    例如:我说我们使用30kHz。 33µs、每1 μ s 调用一次 ADC。 我们的 CLA 10µs 其计算需要 arround Δ t。 我的23µs 将是、该比较值稍后将被使用。

    此致、

    Dominik

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

    Dominik、

    我不希望出现延迟。 如果一个值被写入 CMPA、那么下一个 CTR = 0或 CTR = PRD 事件应该会使 CMPA 值生效。

    您的 CLA 任务是否有可能被延迟? 也许触发器被重新配置为其他东西、或者 CLA 正在执行另一个任务?

    如何判断先前写入的值是否已生效?

    我建议在代码中进行一些 GPIO 切换、以查看 CMPA 何时更新、然后查看其生效所需的时间。 不应比下一个 CTR=0或 CTR=PRD 事件花费任何时间。

    此致、
    Cody

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

    Dominik、

    您是否仍有此问题?

    此致、
    Cody

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

    您好、Cody、

    我仍然有问题、但它们比我最初想象的要小。

    我通过将 GPIO 上的 CMPA 从0更改为1000进行测量。 但是、我的 GPIO 是一个滤波信号、需要0.1ms 才能达到3、3V。我误判了它、因为我的逻辑分析仪将较低的电压解释为高信号。

    现在、我的触发信号更快、我在没有新比较值的情况下测量0-1个周期。 如果下一个事件在 CMPA =周期时有效、而在 CMPA =零时无效(请参阅图)。

    此外、如果我将 CMPA 从1000更改为0、它每次都能正常工作。

    此致、

    Dominik

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

    Dominik、

    我对您的描述不是100%肯定、但听起来您遇到了此问题。

    F28069具有更现代的1类 PWM。  https://e2e.ti.com/support/microcontrollers/c2000/f/171/t/646249

    此致、
    Cody

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

    您好 Cody、

    我不确定我是否有与 Ricky 完全相同的问题。 但是、我可以从对话中吸取的内容以及最终对我有用的内容都在发生变化

       EPwm1Regs.AQCTLA.bit.ZRO = AQ_NO_ACTION;
       EPwm1Regs.AQCTLA.bit.PRD = AQ_NO_ACTION;

    更改为

       EPwm1Regs.AQCTLA.bit.ZRO = AQ_SET;//当 CMPA 从0变为 x 以立即工作时需要
       EPwm1Regs.AQCTLA.bit.PRD = AQ_CLEAR;//当 CMPA 从 TBPRD 更改为 x 以立即工作时需要

    请注意、我的 PWM 逻辑反转至 Rickys。

    在传输阴影寄存器之前是否处理了 ZRO 或 PRD 事件? 这会阻止 CAU 和 CAD 事件清除或设置输出吗?

    此致、

    Dominik

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

    Dominik、

    您仍有问题吗?

    另一篇文章的另一篇文章应该是、比较 CMPA 事件之前会发生像您的影子负载这样的新器件。

    TRM 中讨论了事件的优先级。

    有许多因素可能导致错过 CAU 或 CAD。

      • 在 TBPHS 超过 CAU 或 CAD 事件时调整 TBCTR。
      • 使用立即模式更改 CMPA 值  
        • 在递增计数时减小该值可能会导致漏掉偶数
        • 在递减计数时增大该值可能会导致漏掉偶数
      • 更高的优先级、甚至像软件力量

    此致、
    Cody  

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

    您好 Cody、

    我的问题通过我在上一条消息中所述的更改来解决。

    不幸的是、我不希望我的更改能够处理您最后一条消息的信息、因为...

    (笑声) TBPHS 在初始化后不会被改变。 TBCTR 不会手动更改。

    (笑声) 立即模式禁用

    (笑声) Cau 的优先级高于 ZRO、CAD 的优先级高于 PRD

    我会将最后一条消息标记为"这解决了我的问题"、因为我无法再进行测试、因为其他问题的优先级更高。

    感谢您的帮助和问候、
    Dominik

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

    Dominik、

    明白。 如果您需要其他支持、请随时启动"相关主题"。

    此致、
    Cody