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:单极调制

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1512642/tms320f28069

器件型号:TMS320F28069

工具/软件:

e2e.ti.com/.../_5553F8760690D85368565553816727602D00CC5381672760_.pdf

#ifdef UNIPOLA_MODULATION EALLOW;

/*------------------------------------ EPWM 1 ------------------------ *//*设置计时器周期、周期= CPUClockFreq/PWMfrequency*/

EPwm1Regs.TBPRD = PERIOD>>1;

/*对称波*/

EPwm1Regs.TBCTL.BIT.CTRMODE = TB_COUNT_UPdown;

/*禁用相位加载*/

EPwm1Regs.TBCTL.BIT.PHSEN = TB_ENABLE;

/*时钟比与 SYSCLKOUT*/

EPwm1Regs.TBCTL.BIT.HSPCLKDIV = 0;

/* SYSCLKOUT/1*/

EPwm1Regs.TBCTL.BIT.CLKDIV = 0;

/*同步输入信号*/

EPwm1Regs.TBCTL.BIT.SYNCOSEL = TB_CTR_ZERO;

/* PRD*/的影子加载

EPwm1Regs.TBCTL.BIT.PRDLD = TB_SHADOW;

/*设置重影*/

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;

/*设置操作*/

EPwm1Regs.AQCTLA.bit.cad = AQ_SET;

EPwm1Regs.AQCTLA.bit.CAU = AQCLEAR;

EPwm1Regs.AQCTLA.bit.ZRO = AQNO_ACTION;

/*设置死区、1A 时的上升延迟和1B 时的下降延迟*/

EPwm1Regs.DBCTL.BIT.OUT_MODE = DB_FULL_ENABLE;

/*低电平有效互补模式(EPWMxB 反相)*/

EPwm1Regs.DBCTL.BIT.POLSEL = DB_ACTV_HIC;

/* 1B 是上升沿和下降沿延迟源*/

EPwm1Regs.DBCTL.BIT.IN_MODE = DBA_ALL;

/*上升沿和下降沿延迟*/

EPwm1Regs.DBRED = DEADTIME_RISING;

EPwm1Regs.DBFED = DEADTIME_FALLING;

/*------------------------------------ 结束 EPWM 1 ------------------------ */

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

/*设置计时器周期、周期= CPUClockFreq/PWMfrequency */

EPwm2Regs.TBPRD = PERIOD>>1;

/*对称波*/

EPwm2Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;

/*时钟比与 SYSCLKOUT*/

EPwm2Regs.TBCTL.BIT.HSPCLKDIV = 0;

/* SYSCLKOUT /*/

EPwm2Regs.TBCTL.BIT.CLKDIV = 0;

/*启用相位加载*/

EPwm2Regs.TBCTL.BIT.PHSEN = TB_ENABLE;

/*同步输入信号和传递*/

EPwm2Regs.TBCTL.bit.SYNCOSEL = TB_sync_in;

/* PRD*/的影子加载

EPwm2Regs.TBCTL.BIT.PRDLD = TB_SHADOW;

/*配置时基以在接收到同步事件时进行计数*/

EPwm2Regs.TBCTL.bit.PHSDIR = TB_UP;

/* fo 2的值用于逻辑延迟*/

EPwm2Regs.TBPHS.half.TBPHS = 2;

/*设置重影*/

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.AQCTLA.bit.cad = AQ_SET;

EPwm2Regs.AQCTLA.bit.CAU = AQCLEAR;

EPwm2Regs.AQCTLA.bit.ZRO = AQNO_ACTION;

/*设置 PWM1的死区、1A 时的上升延迟和1B 时的下降延迟*/

EPwm2Regs.DBCTL.BIT.OUT_MODE = DB_FULL_ENABLE;

/*高电平有效互补模式(EPWMxA 反相)*/

EPwm2Regs.DBCTL.BIT.POLSEL = DB_ACTV_HIC;

/* 1A 用于上升和下降*/

EPwm2Regs.DBCTL.BIT.IN_MODE = DBA_ALL;

/*上升沿和下降沿延迟*/

EPwm2Regs.DBRED = DEADTIME_RISING;

EPwm2Regs.DBFED = DEADTIME_FALLING;

/*---------------------------- 结束初始化 EPWM n+1 ---------------------------- */

/*清除 TB 计数器*/

EPwm1Regs.TBCTR = 0x0;

EPwm2Regs.TBCTR = 0x0;

/* counter=zero 处一个组上的 ADC SOC */

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 UNIPOLAL_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 μ s+Half_period;

EPwm2Regs.CMPA.half.CMPA=_IQ24mpy、half_period)Duty(+half_period;

#endif

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