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.

[参考译文] TMS320F28P550SG:当比较值与 0 或 TBPRD 值匹配时 AQ(动作限定符)采取的操作

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1660887/tms320f28p550sg-the-action-taken-by-the-aq-action-qualifier-when-the-compare-value-matches-0-or-the-tbprd-value

器件型号: TMS320F28P550SG

尊敬的 TI 专家:

   对于 ePWM 模块、当配置为`ePWMx.AQCTLA.bit.CAU = AQ_SET`和`ePWMx.AQCTLA.bit.CBD = AQCLEAR`时、假设比较值在过零处加载为`ePWMx.CMPA.bit.CMPA = 0`且`ePWMx.CMPB.bit.PRD = PRD`、

  我的问题是:当 COUNTER = 0 时、是否可以输出高电平、当 COUNTER = PRD 时、是否可以输出低电平?

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

    否—此配置不会产生所需的输出。

    使用 AQCTLA.CAU = AQ_SET 和 AQCTLA.CBD = AQ_CLEAR、当计数器在向上计数时与 CMPA 匹配时、输出设置为高电平、当计数器在向下计数时与 CMPB 匹配时、输出设置为低电平。 但是、 CMPA = 0  CMPB = PRD 将比较事件恰好放在计数器边界处、这会产生两个问题:

    1.输出在整个周期内保持高电平

    在 向上/向下计数模式下、 CAU (比较 A 向上计数)在计数时计数器等于 CMPA 时触发。 与 CMPA = 0、此事件与计数器的过零重合、将输出设置为高电平。 CBD (比较 B 向下计数)事件在计数器在向下计数时等于 CMPB 时将触发。 使用 CMPB = PRD、此事件与计数器达到周期值的时间一致、但 动作限定器优先级规则 规定 CTR=PRD 事件的 优先级高于  CTR=CMPB 向下计数事件 1.这意味着您的 CBD = AQ_CLEAR 操作将被覆盖,并且输出保持高电平。

    在 向上计数模式下、 CBD (Compare B Down-count) 根本不会触发、因为没有向下计数阶段、从而使清除操作不可能。

    2. HRPWM 的边界边沿不可靠

    如果启用高分辨率 PWM、则在 CTR=0  CTR=PRD 微边沿定位器 (MEP) 控制不可用的位置之后和之前会有一个 3 TBCLK 死区、从而使这些边界处的边沿不稳定。

    推荐的替代器件

    要    在向上计数模式下在计数器= 0 时实现高电平、在计数器= PRD 时实现低电平、请 ZRO  PRD 直接使用与动作限定器事件 3:

    EPWMx.AQCTLA.bit.ZRO = AQ_SET;    // Set output high at counter = 0
    EPWMx.AQCTLA.bit.PRD = AQ_CLEAR;  // Clear output low at counter = PRD
    EPWMx.CMPA.bit.CMPA = <desired>;  // Use CMPA to control pulse width
    EPWMx.AQCTLA.bit.CAU = AQ_CLEAR;  // Clear on compare match for duty control

    这样可保证在零时为高电平、在周期时为低电平、并通过 CMPA 控制实际占空比

    此致、

    Sumit

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

    谢谢 Sumit。

    我还有一个 关于 相移寄存器的问题:

    如果将 ePWM 模块配置为向上/向下计数模式、并且假设 PRD = 682、那么当为相移寄存器分配大于 682 的值时、会得到什么结果? (EPwmxRegs.TBPHS.bit.TBPHS > PRD)  

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

    然后、它将错过 PRD 事件并保留、时基计数器将递增计数到寄存器最大值(即 0xFFFF)。

    之后它将复位为 TBCTR = TBPHS 、再次它将错过事件并计数到最大值。

    简而言之、它将保持在由先前设置为高电平或低电平的状态定义的一种状态、并且不会更改该状态。

    此致、

    Sumit