TI中文支持网
TI专业的中文技术问题搜集分享网站

TMS320F28035: 请帮忙看下HV_1PH_DCAC中的PWM配置

Part Number:TMS320F28035Other Parts Discussed in Thread:CONTROLSUITE

位置:C:\ti\controlSUITE\development_kits\HV_1PH_DCAC\v1_04_00_00      

VoltageSourceInerter例子中PWM配置:

setupInverterPWM(PWM_NO,INV_PWM_PERIOD,INV_DEADBAND_PWM_COUNT,INV_DEADBAND_PWM_COUNT);

(下面代码只摘录关键部分)

// configure PWM 2 as slaves and let it pass the sync in pulse from PWM1
ePWM[inv_pwm_no+1]->TBCTL.bit.SYNCOSEL=TB_SYNC_IN;
ePWM[inv_pwm_no+1]->TBCTL.bit.PHSEN=TB_ENABLE;
ePWM[inv_pwm_no+1]->TBPHS.bit.TBPHS=2;
ePWM[inv_pwm_no+1]->TBCTL.bit.PHSDIR=TB_UP;

(*ePWM[inv_pwm_no+1]).AQCTLA.all = 0; // set to take no action
(*ePWM[inv_pwm_no+1]).AQCTLA.bit.CAD = AQ_CLEAR; // CTR = CMPA@Down , clear

(*ePWM[inv_pwm_no+1]).DBCTL.bit.IN_MODE = DBA_ALL;
(*ePWM[inv_pwm_no+1]).DBCTL.bit.OUT_MODE = DB_FULL_ENABLE;
(*ePWM[inv_pwm_no+1]).DBCTL.bit.POLSEL = DB_ACTV_HIC;
(*ePWM[inv_pwm_no+1]).DBRED = pwm_dbred_ticks;
(*ePWM[inv_pwm_no+1]).DBFED = pwm_dbred_ticks;

以及updateInverterPWM(PWM_NO); 这个函数:

if(EPwm1Regs.TBSTS.bit.CTRDIR==0) // make sure the PWM is counting down
{
if(invDutyPU>=0)
{
(*ePWM[inv_pwm_no]).AQCTLA.bit.CAU = AQ_SET; // CTR = CMPA@UP , set to 1
(*ePWM[inv_pwm_no]).AQCTLA.bit.CAD = AQ_TOGGLE; // CTR = CMPA@Down , toggle
(*ePWM[inv_pwm_no]).AQCTLA.bit.ZRO = AQ_CLEAR; // CTR=0, clear to 0
(*ePWM[inv_pwm_no+1]).AQCTLA.bit.CAD = AQ_CLEAR; // CTR = CMPA@Down , clear

}
else
{
(*ePWM[inv_pwm_no]).AQCTLA.bit.CAU = AQ_CLEAR; // CTR = CMPA@UP , clear to 0
(*ePWM[inv_pwm_no]).AQCTLA.bit.CAD = AQ_TOGGLE; // CTR = CMPA@Down , toggle
(*ePWM[inv_pwm_no]).AQCTLA.bit.ZRO = AQ_SET; // CTR=0, set to 1
(*ePWM[inv_pwm_no+1]).AQCTLA.bit.CAD = AQ_SET; // CTR = CMPA@Down , set
}
}

感觉这种配置 PWM2B产生不了跟PWM2A互补的50Hz PWM波形啊。

PWM1在计数过零点发出同步信号,PWM2同步时从TBPHS=2开始向上计数,而其只配置了CAD这个动作(正半周CAD=CLEAR,负半周CAD=SET),

这里有2个细节:

1、假设PWM1与PWM2同时从0点开始向上计数,PWM1向下计数到达0点发送同步信号,PWM2被同步后计数值为2,比PWM1计数快了一步,所以下次PWM1发送同步信号前,PWM2已回到0了,

      所以PWM2的CAD事件能正常触发,这个没有问题(如果PWM2计数比PWM1慢,PWM2可能没有进过CAD事件就被强制同步计数值=2且向上计数,那么它的CAD事件就永远触发不了)

2、再看看PWM2A/2B的产生方式:DB_ACTV_HIC

      PWM2的计数方式决定了PWM2A永远没有高电平产生(上半周),即没有RE和FE,那么在产生互补PWM的RED和FED模块怎么去处理?这点相关资料上没有讲,即一个原始信号总是高电平或

低电平的信号(占空比0%或100%),经过RED和FED后是否可以产生死区并互补输出?  如上所述,PWM2A只配置了CAD时间,是否还需要配置一个其他事件产生哪怕很短时间的高电平脉冲?

至少它会出现边沿嘛。

请TI技术工程师解惑,谢谢!

Jun Zhang4:

问题已解决。实际测试了一下这样配置是可行的:已F2803x为例,见Figure 3. ePWM Submodules and Critical Internal Signal Interconnects图,DB模块在AQ模块之后,在一个PWM周期内只配置CAD事件确实不会有边沿产生,但是在正弦由正半周到负半周反转时,AQ动作变更会使EPWM2A产生电平翻转,这时DB模块就能动作了。实测如下波形(代码中配置PWM为低有效互补):


,

Green Deng:

非常感谢你的反馈和分享。

赞(0)
未经允许不得转载:TI中文支持网 » TMS320F28035: 请帮忙看下HV_1PH_DCAC中的PWM配置
分享到: 更多 (0)

© 2024 TI中文支持网   网站地图 鲁ICP备2022002796号-1