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.

TMS320F28069:单极调制

Part Number: TMS320F28069


Tool/software:

单相逆变器单极性-双极性.pdf

#ifdef UNIPOLAR_MODULATION EALLOW;

/* ---------------------- EPWM 1 -------------------- */ /* Set timer period, period = CPUClockFreq/PWMfrequency*/

EPwm1Regs.TBPRD = period>>1;

/* Symmetric wave*/

EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;

/* Disable phase loading*/

EPwm1Regs.TBCTL.bit.PHSEN = TB_ENABLE;

/* Clock ratio to SYSCLKOUT*/

EPwm1Regs.TBCTL.bit.HSPCLKDIV = 0;

/* SYSCLKOUT / 1*/

EPwm1Regs.TBCTL.bit.CLKDIV = 0;

/* Sync with Sync in signal*/

EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO;

/* Shadow load for PRD*/

EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW;

/* Setup shadowing*/

EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;

EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;

EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;

EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;

/* Set Actions*/

EPwm1Regs.AQCTLA.bit.CAD = AQ_SET;

EPwm1Regs.AQCTLA.bit.CAU = AQ_CLEAR;

EPwm1Regs.AQCTLA.bit.ZRO = AQ_NO_ACTION;

/* Set Dead Band, Rising Delay on 1A & Falling Delay on 1B*/

EPwm1Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE;

/* Active Low complementary mode (EPWMxB is inverted)*/

EPwm1Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC;

/* 1B is the source for Rising and Falling edge delay */

EPwm1Regs.DBCTL.bit.IN_MODE = DBA_ALL;

/* Delay at Rising and falling edge*/

EPwm1Regs.DBRED = deadband_rising;

EPwm1Regs.DBFED = deadband_falling;

/* ---------------------- End EPWM 1 ---------------------*/

/* ---------------------- EPWM 2 -------------------------*/

/* Set timer period, period = CPUClockFreq/PWMfrequency */

EPwm2Regs.TBPRD = period>>1;

/* Symmetric wave*/

EPwm2Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;

/* Clock ratio to SYSCLKOUT*/

EPwm2Regs.TBCTL.bit.HSPCLKDIV = 0;

/* SYSCLKOUT / */

EPwm2Regs.TBCTL.bit.CLKDIV = 0;

/* Enable phase loading*/

EPwm2Regs.TBCTL.bit.PHSEN = TB_ENABLE;

/* Sync with Sync in signal and pass through*/

EPwm2Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;

/* Shadow load for PRD*/

EPwm2Regs.TBCTL.bit.PRDLD = TB_SHADOW;

/* Configure time base to count up when it receives the sync event */

EPwm2Regs.TBCTL.bit.PHSDIR = TB_UP;

/* Value fo 2 is for logic delay */

EPwm2Regs.TBPHS.half.TBPHS = 2;

/* Setup shadowing*/

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;

/* Set Actions */

EPwm2Regs.AQCTLA.bit.CAD = AQ_SET;

EPwm2Regs.AQCTLA.bit.CAU = AQ_CLEAR;

EPwm2Regs.AQCTLA.bit.ZRO = AQ_NO_ACTION;

/* Set Dead Band for PWM1, Rising Delay on 1A & Falling Delay on 1B*/

EPwm2Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE;

/* Active high complementary mode (EPWMxA is inverted)*/

EPwm2Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC;

/* 1A for Rising& Falling*/

EPwm2Regs.DBCTL.bit.IN_MODE = DBA_ALL;

/* Delay at Rising and falling edge*/

EPwm2Regs.DBRED = deadband_rising;

EPwm2Regs.DBFED = deadband_falling;

/* ------------------ End Init EPWM n+1 ------------------ */

/* Clear TB counter*/

EPwm1Regs.TBCTR = 0x0;

EPwm2Regs.TBCTR = 0x0;

/* ADC SOC on A group at counter=zero */

EPwm1Regs.ETSEL.bit.SOCAEN = 1;

EPwm1Regs.ETSEL.bit.SOCASEL = ET_CTR_ZERO ;

EPwm1Regs.ETPS.bit.SOCAPRD = ET_1ST;

/* 为所有 PWM 模块发出同步信号*/

SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1;

/* CPU 暂停跳闸的逐周期中断 */

EPwm1Regs.TZSEL.bit.CBC6=0x1;

EPwm2Regs.TZSEL.bit.CBC6=0x1;

/* 我们希望 OST/CBC 事件做什么 */

/* EPWMxA & B 将走低 */

EPwm1Regs.TZCTL.bit.TZA = TZ_FORCE_LO;

EPwm1Regs.TZCTL.bit.TZB = TZ_FORCE_LO;

EPwm2Regs.TZCTL.bit.TZA = TZ_FORCE_LO;

EPwm2Regs.TZCTL.bit.TZB = TZ_FORCE_LO;

/* 软件强制跳闸以禁用逆变器 */

EPwm1Regs.TZFRC.bit.OST=0x1;

EPwm2Regs.TZFRC.bit.OST=0x1;

伊迪斯;

#endif

#ifdef UNIPOLAR_MODULATION

duty=_IQ24mpy(InvSine,InvModIndex);

half_period=((int32)EPwm1Regs.TBPRD)>>1;

/* _IQ24mpy(I8Q24(占空比), I32Q0(half_period)) = I32 */

EPwm1Regs.CMPA.half.CMPA= _IQ24mpy(half_period,_IQ24mpy(duty,_IQ24(-1.0))))+half_period;

EPwm2Regs.CMPA.half.CMPA=_IQ24mpy(half_period,duty)+half_period;

#endif

这是单极调制的代码。我想知道 InvSine 和 InvModIndex 是如何配置的?