请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
部件号:TMS320F28069 尊敬的团队:
我的客户希望实施 HRPWM 相移控制,但他发现,在配置完成后,HRPWM 相移不会实施,如下所示。 配置错误在哪里?
PWM 初始化:
void InitEPwm2Example() //滞后臂
{
//
// Setup TBCLK
//
EALLOW;
EPwm2Regs.TBCTL.bit.PRDLD = TB_SHADOW;
EPwm2Regs.TBPRD = period1; // Set timer period
// EPwm2Regs.TBPHS.all = 0;
EPwm2Regs.TBPHS.half.TBPHS = PHS; // Phase is 0
EPwm2Regs.TBPHS.half.TBPHSHR = 0; // Phase is 0
EPwm2Regs.CMPA.half.CMPA=272;
// EPwm2Regs.CMPB = 100;
EPwm2Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;
EPwm2Regs.TBCTL.bit.PHSEN = TB_ENABLE;
EPwm2Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;
EPwm2Regs.TBCTR = 0x0000; // Clear counter
EPwm2Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; // Clock ratio to SYSCLKOUT
EPwm2Regs.TBCTL.bit.CLKDIV = TB_DIV1;
EPwm2Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
EPwm2Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
EPwm2Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;
EPwm2Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;
// EPwm2Regs.AQCTLB.bit.CAU = AQ_CLEAR;
// EPwm2Regs.AQCTLB.bit.PRD = AQ_SET;
EPwm2Regs.AQCTLB.bit.CAU = AQ_NO_ACTION;
EPwm2Regs.AQCTLB.bit.PRD = AQ_NO_ACTION;
EPwm2Regs.DBCTL.bit.IN_MODE = 3;
EPwm2Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE;
// EPwm2Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC;
EPwm2Regs.DBFED = db; //死区300ns
EPwm2Regs.DBRED = db;
EDIS;
EALLOW;
EPwm2Regs.HRCNFG.all = 0x0;
EPwm2Regs.HRCNFG.bit.EDGMODE = HR_BEP;
EPwm2Regs.HRCNFG.bit.CTLMODE = HR_PHS;
EPwm2Regs.HRCNFG.bit.HRLOAD = HR_CTR_ZERO;
EPwm2Regs.HRCNFG.bit.SWAPAB=0;
EPwm2Regs.HRCNFG.bit.SELOUTB=0;
EPwm2Regs.HRCNFG.bit.AUTOCONV = 0;
EPwm2Regs.HRPCTL.bit.HRPE = 1;
EPwm2Regs.HRPCTL.bit.TBPHSHRLOADE = 1;
EDIS;
EALLOW;
EPwm2Regs.TZCTL.bit.TZA = 2;
EPwm2Regs.TZCTL.bit.TZB = 2;
EDIS;
}
相移:
PID_Value.pidvalue = 100.5; EPwm2Regs.TBPHS.half.TBPHS = (Uint16) PID_Value.pidvalue; EPwm2Regs.TBPHS.half.TBPHSHR =( (Uint16) (( (PID_Value.pidvalue - EPwm2Regs.TBPHS.half.TBPHS)*61+0.5))) <<8;
此致