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.

[参考译文] TMS320F2.8027万:不合理的PWM初始输出脉冲

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/631651/tms320f28027-unreasonable-pwm-initial-output-pulse

部件号:TMS320F2.8027万

大家好,代码如下,我配置了PWM频率40kHz,上下计数模式,TBPRD=750。 CMPA=0,CMPB=750。 TBCLK=SYSCLK=60MHz。

void Initepwm2 ()

EPwm2Regs.TBPRD = 750;//40kHz
EPwm2Regs.TBPHS.Half.TBPHS = 0x0000;
EPwm2Regs.TBCTR = 0x0000;
EPwm2Regs.TBCTL.bit.CTRMODE = TB_COUNT_UDOWN;
EPwm2Regs.TBCTL.bit.PHSEN = TB_DISABLE;
EPwm2Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;
EPwm2Regs.TBCTL.bit.CLKDIV = TB_DIV1;
EPwm2Regs.CMPCTL.bit.SHDWAMODE = CC_SHAME;
EPwm2Regs.CMPCTL.bit.SHDWBMODE = CC_SHADO;
EPwm2Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;
EPwm2Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;
EPwm2Regs.CMPA.Half.CMPA = 0;
EPwm2Regs.CMBB =750;
EPwm2Regs.AQCTLA.bit.ZRO = AQ_SET;
EPwm2Regs.AQCTLA.bit.CAU = AQ_CLEAR;
EPwm2Regs.AQCTLB.bit.PRD = AQ_SET;
EPwm2Regs.AQCTLB.bit.CBD = AQ_CLEAR;
EPwm2Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO;  
EPwm2Regs.ETSEL.bit.inten = 1;  
EPwm2Regs.ETPS.bit.INTPRD = ET_1st;
}

有了这样的代码,我应该总是对PWMA和PWMB输出都很低。

但事实是,我在PWMB上总是只能得到一次12.5us (=750TBCLK,这是PWM周期的一半)的高脉冲。 PWMA始终较低。

然后我更改了CMPA=50,波形如下所示。 可以看到,PWMB输出在TBCTR =0开始时变为高,并开始递增,当TBCTR =TBPRD时变为低

我已经检查 了EPwm2Regs.AQCTLB.bit.ZRO=00,这意味着当TBCTR =0时,PWMB上不应该有任何操作。

YELYE-PWMA,

蓝PWMB。

那么为什么PWMB上只有一个脉冲?

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

    您好,Howard:

    我不在办公室,所以我没有任何硬件可以尝试,但这很可能是由于第一个周期完成后卷影寄存器被加载(下一个计数器=0)。 您是否可以尝试强制执行同步事件或类似事件以触发阴影以进行活动负载? 这将取决于您的阴影配置要使用的适当事件。

    此致,

    克里斯

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Kris,
    感谢您的回复。 我尝试将阴影模式更改为非阴影模式,它可以正常工作。
    但解释不能令人信服。 根据示波器捕获的上述波形,PWMA和PWMB在TBCTR =0时均设置为1。 即使在第一个周期,由于它是阴影模式,CMPA和CMBB都是0,PWMB也应在TBCTR =周期时设置为1,而不是在TBCTR =0时设置为1。
    此外,同步事件是否可以触发阴影以激活加载? F2.8027万的技术参考手册中没有提到这一点。 同步事件只能触发TBPHS加载到TBCTR。 并且CMPA和CMBB对活动负载的阴影只能在TBCTR =0或期间发生。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在客户的系统中,将阴影模式更改为非阴影模式是不实际的。 我一开始就无法使用阴影模式并强制阴影通过软件进行活动加载。 希望您能提供一些想法。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Howard:

    我正在准备一个板来尝试这个。 我们强烈建议使用阴影模式。 我将向您详细说明原因。

    此致,

    克里斯

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

    您好,Howard:

    我复制了该问题,并确定这是因为事件优先级。 请参考 表9。 ePWM User's Guide (ePWM用户指南)的UP-DOWN Count Mode (上行-下行计数模式)的action-Qualifier Event Priority (操作限定符事件优先级)

    CMPA和CMBB事件的优先级高于TBCTR =0。 您已将通道A配置为在CMPA上清除并在TBCTR =0上设置。 在启动时,这两种情况都同时发生,因为CMPA=0。 由于CMPA具有更高的优先级,因此PWM输出被清除。 在通道B上,由于您已将CMPB=750设置为不存在优先级冲突,因此发生了TBCTR =0事件。

    此致,

    克里斯

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

    我注意到了那张桌子。 它没有解释,因为当发生TBCTR =0事件时,我没有配置任何通道B输出更改。

    我希望您注意到,通道A没有任何问题,只有通道B