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.

28035使用ePWM2的A,B输出互补的50hz的信号?为什么在他们在高低点频翻转的时候没有互补?占空比也不对?



28035使用ePWM2的A,B输出互补的50hz的信号?为什么在他们在高低点频翻转的时候没有互补?占空比也不对?我的配置是这样那个的

EPwm2Regs.TBPRD = 750;
EPwm2Regs.CMPA.half.CMPA = 0;
EPwm2Regs.CMPB = 0;
EPwm2Regs.TBPHS.half.TBPHS = 0;
EPwm2Regs.TBCTR = 0x0000;

EPwm2Regs.TBCTL.bit.CTRMODE = 2; // up-down
EPwm2Regs.TBCTL.bit.PHSEN = 0;
EPwm2Regs.TBCTL.bit.PRDLD = 0;
EPwm2Regs.TBCTL.bit.SYNCOSEL = 1;
EPwm2Regs.TBCTL.bit.HSPCLKDIV = 0;


EPwm2Regs.CMPCTL.bit.SHDWAMODE = 0;
EPwm2Regs.CMPCTL.bit.SHDWBMODE = 0;
EPwm2Regs.CMPCTL.bit.LOADAMODE = 0;
EPwm2Regs.CMPCTL.bit.LOADBMODE = 0;

EPwm2Regs.AQCTLA.bit.CAU = 1;
EPwm2Regs.AQCTLA.bit.CAD = 2;
EPwm2Regs.AQCTLA.bit.PRD = 0;
EPwm2Regs.AQCTLA.bit.ZRO = 2;//只有2可以将工频的两个管子都城互补,其余不行

EPwm2Regs.AQCTLB.bit.CBU = 1;
EPwm2Regs.AQCTLB.bit.CBD = 2;
EPwm2Regs.AQCTLB.bit.PRD = 0;
EPwm2Regs.AQCTLB.bit.ZRO = 2;


EPwm2Regs.DBCTL.bit.OUT_MODE = 0;

是这样进行判断的:

if(PLL_DIRF == 1
{
EPwm2Regs.CMPA.half.CMPA = 750;
EPwm2Regs.CMPB = 0;

}
if(PLL_DIRZ == 1 )
{

EPwm2Regs.CMPA.half.CMPA = 0;
EPwm2Regs.CMPB = 750;
}

当我设置

EPwm2Regs.AQCTLA.bit.ZRO = 1;

EPwm2Regs.AQCTLB.bit.ZRO = 1;

的时候:

但是

EPwm2Regs.AQCTLA.bit.ZRO = 2;

EPwm2Regs.AQCTLB.bit.ZRO = 2;

就像

这个应该不会影响什么的吧?思考了一天都没有什么头绪!谢谢大家的指点!