器件型号: 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 时、是否可以输出低电平?
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
尊敬的 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 将比较事件恰好放在计数器边界处、这会产生两个问题:
在 向上/向下计数模式下、 CAU (比较 A 向上计数)在计数时计数器等于 CMPA 时触发。 与 CMPA = 0、此事件与计数器的过零重合、将输出设置为高电平。 CBD (比较 B 向下计数)事件在计数器在向下计数时等于 CMPB 时将触发。 使用 CMPB = PRD、此事件与计数器达到周期值的时间一致、但 动作限定器优先级规则 规定 CTR=PRD 事件的 优先级高于 CTR=CMPB 向下计数事件 1.这意味着您的 CBD = AQ_CLEAR 操作将被覆盖,并且输出保持高电平。
在 向上计数模式下、 CBD (Compare B Down-count) 根本不会触发、因为没有向下计数阶段、从而使清除操作不可能。
如果启用高分辨率 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