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.

TMS320F28377D: ePWM 使用上升下降模式 进行调制时出现异常驱动

Part Number: TMS320F28377D

ePWM 使用上升下降模式 进行调制时出现异常驱动;

在PWM封波后发出一个周期长脉冲

控制代码:

if( mInvtCtl.Pwmap < mInvtCtl.MinPwm) { L1H.CMPA.bit.CMPA = 0; L1H.AQCSFRC.all = 0b0101;}
else if(mInvtCtl.Pwmap > mInvtCtl.MaxPwm){ L1H.CMPA.bit.CMPA = EPwm1Regs.TBPRD; L1H.AQCSFRC.all = 0b1010;}
else { L1H.CMPA.bit.CMPA = mInvtCtl.Pwmap; L1H.AQCSFRC.all = 0; }

if( mInvtCtl.Pwman < mInvtCtl.MinPwm) { L1L.CMPA.bit.CMPA = 0; L1L.AQCSFRC.all = 0b0101;}
else if(mInvtCtl.Pwman > mInvtCtl.MaxPwm){ L1L.CMPA.bit.CMPA = EPwm1Regs.TBPRD; L1L.AQCSFRC.all = 0b1010;}
else { L1L.CMPA.bit.CMPA = mInvtCtl.Pwman; L1L.AQCSFRC.all = 0; }

EPWM配置

p->TBPRD = 2000; // Set timer period
p->TBPHS.bit.TBPHS = 0x0000; // Phase is 0
p->TBCTR = 0x0000; // Clear counter

//
// Setup TBCLK
//
p->TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; // Count up
p->TBCTL.bit.PHSEN = TB_ENABLE; // Disable phase loadingTB_ENABLE;//
p->TBCTL.bit.HSPCLKDIV = TB_DIV1; // Clock ratio to SYSCLKOUT
p->TBCTL.bit.CLKDIV = TB_DIV1;

p->CMPCTL.bit.SHDWAMODE = CC_SHADOW; // Load registers every ZERO
p->CMPCTL.bit.SHDWBMODE = CC_SHADOW;
p->CMPCTL.bit.LOADAMODE = CC_CTR_ZERO_PRD;
p->CMPCTL.bit.LOADBMODE = CC_CTR_ZERO_PRD;


p->TBCTL.bit.SYNCOSEL = TB_SYNC_IN; //
//
// Setup compare
//
p->CMPA.bit.CMPA = 1000;

//
// Set actions
//
p->AQCTLA.all = 0;
p->AQCTLA.bit.CAU = AQ_CLEAR; // Set PWM1A on Zero
p->AQCTLA.bit.PRD = AQ_NO_ACTION;
p->AQCTLA.bit.CAD = AQ_SET;
p->AQCTLA.bit.ZRO = AQ_NO_ACTION;
p->AQCTLB.all = 0;
p->AQCTLB.bit.CAU = AQ_CLEAR; // Set PWM1A on Zero
p->AQCTLB.bit.PRD = AQ_NO_ACTION;
p->AQCTLB.bit.CAD = AQ_SET;
p->AQCTLB.bit.ZRO = AQ_NO_ACTION;
//
// Active Low PWMs - Setup Deadband
//
p->DBCTL.bit.OUT_MODE = DB_FULL_ENABLE;
p->DBCTL.bit.POLSEL = DB_ACTV_HIC;
p->DBCTL.bit.IN_MODE = DBA_RED_DBB_FED;
p->DBRED.bit.DBRED = EPWM1_MIN_DB;
p->DBFED.bit.DBFED = EPWM1_MIN_DB;
//EPwm1_DB_Direction = DB_UP;
p->AQCSFRC.all = 0x9;

  • 感谢您对TI产品的关注!
    关于你的咨询,我们正在确认你的问题,稍后回复您。

  • 你好,

    似乎ePWM被绊倒了。可能延长脉冲使电流增加并达到跳闸阈值。看起来,当条件发生变化并且您更改了动作限定符时,扩展脉冲会发生在拐角处。默认情况下,您需要添加额外的AQ操作,以避免脉冲延长。 此外,您正在对同一事件设置和清除ePWMA和ePWMB,您不希望它们是互补的吗?