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.

TMS320F28027: 在做逆变电源,调试的过程中发现PWM波有问题,此外顺便问下死区的问题

Part Number: TMS320F28027


PWM发波问题如下:

1.PWM2采取以20K的频率运行,PWM发波原本遵循SPWM的规律,PWM的CTRMODE = TB_COUNT_UPDOWN;即UPDOWN模式,动作配置如下

EPwm2Regs.TBPRD =1500;//CLK=60MHZ 则PWM频率F=60*1000/2*1500=20K

EPwm2Regs.AQCTLA.bit.CAU = AQ_SET; 
EPwm2Regs.AQCTLA.bit.CAD = AQ_TOGGLE;

EPwm2Regs.AQCTLA.bit.ZRO = AQ_CLEAR;

死区设置如下:

EPwm2Regs.DBCTL.bit.IN_MODE = DBA_ALL; // EPWMxA is the source for both delays

EPwm2Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE;  // Enable Dead-band module
EPwm2Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC;// Active High Complementary (AHC)

EPwm2Regs.DBFED = 60; // 死区设置 TBCLKs 6US---360
EPwm2Regs.DBRED = 60; //

故这个时候只需要设置CMPA (EPwm2Regs.CMPA.half.CMPA )即可设置PWM输出的占空比的值,PWM的数组元素个数为200个即正弦逆变50HZ的半个周期,现在我只做正弦半轴逆变,数组元素从0~199的占空比如下图所示(即图片最下面的所示情况Uc):

我从第49到199这期间把CMPA设置为1499(TBPRD 为1500)按道理来说PWM2A说出为低电平,PWM2B输出为高电平,但实际运行情况是49到199期间PWM2A有高电平,PWM2B有低电平的发出

当我对49到199使用TZ强制PWM2A为低 PWM2B为高就不会出现这种情况,程序代码如下:

代码一为CMPA赋值1499

if((spwm_table_cnt>=49)&&(spwm_table_cnt<=199)) {

    EPwm2Regs.CMPA.half.CMPA  = 1499;

}

else{

EALLOW;
if(EPwm2Regs.TZFLG.bit.OST==1){

   EPwm2Regs.TZCLR.bit.OST=1;}

   EDIS;

}

代码二使用TZ强制PWM输出

if((spwm_table_cnt>=49)&&(spwm_table_cnt<=199)) {

    EPwm2Regs.CMPA.half.CMPA  = 1499;

   EALLOW;
   EPwm2Regs.TZCTL.bit.TZA=TZ_FORCE_LO;
   EPwm2Regs.TZCTL.bit.TZB=TZ_FORCE_HI;
  EPwm2Regs.TZCLR.bit.OST=1;
  EDIS;

}

else{

EALLOW;
if(EPwm2Regs.TZFLG.bit.OST==1){

   EPwm2Regs.TZCLR.bit.OST=1;}

   EDIS;

}

代码一和代码二的输出情况导致H桥的波形如下图:

代码一PWM2控制的H桥输出波形

代码二PWM2控制的输出波形如下

死区的图如下,死区问题如下:

按照我的代码的设置即本咨询开头的关于死区的设置,现在假设如下,不使用TZ,假设情况如下:

一、当最左边EPWMxA in为高电平,死区的两个边沿计数器设置值均为60,那么此时最右边EPWMxA是输出高电平还是低电平?因为这个时候PWMXA的脉宽为2*(1500-1499)《60即脉宽值小于死区计数器设置值的时候PWMxA输出情况是怎么输出的?是保持以前的电平输出还是输出低电平?

二、当CMPA设置值为1的时候那么EPWMxB引脚输出的电平是高还是低?或者保持以前输出电平不变?

因为CMPA为1的时候那么此时EPWMxA in的脉宽小于下降沿计数器的值 那么此时死区计数的输出情况不明白 

谢谢!