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.
您好,
我将EPWM4作为主控,EPWM5,EPWM6,EPWM7作为从控,然后使用EPWM4将相位转换给所有人。
EPWM5带EPWM4180度相移。
EPWM6,带EPWM4 90度相移。
EPWM7,带EPWM4270度相移。
在这里,EPWM4,EPWM5,EPWM6正确通信,但EPWM7不正确通信。 EPWM7与EPWM4具有相同的相位。
因此,任何解决方案 ??????
这是我的ePWM初始化。
void InitEPwm4example()
{
EPwm4Regs.ETSEL.ALL = 0;
EPwm4Regs.ETSEL.bit.inten =1;//启用ePWM5中断
EPwm4Regs.ETSEL.bit.INTSEL = 2;// CMPA向下匹配
EPwm4Regs.etps.bit.INTPRD = 1;//第一个事件
EPwm4Regs.TBPRD = 1万;//设置计时器周期801 TBCLK
EPwm4Regs.TBPHS.bit.TBPHS = 0;//0x0000;//相位为0
EPwm4Regs.TBCTR = 0x0000;//清除计数器
EPwm4Regs.CMPA.bit.CMPA = 5000;// set比较值
EPwm4Regs.TBCTL.bit.CTRMODE = 2;//上/下模式
EPwm4Regs.TBCTL.bit.PHSEN = TB_DISABLE;
EPwm4Regs.TBCTL.bit.HSPCLKDIV = 0;// HSPCLKDIV = 1
EPwm4Regs.TBCTL.bit.CLKDIV = 0;// CLKDIV = 1;
EPwm4Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO;
//设置阴影
EPwm4Regs.CMPCTL.bit.SHDWAMODE = CC_SHAME;
EPwm4Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZE;//零加载
// EPwm4Regs.AQCTLA.ALL = 0x0060;
EPwm4Regs.AQCTLA.bit.ZRO = AQ_SET;
EPwm4Regs.AQCTLA.bit.CAU = AQ_CLEAR;
//活动低PWM -设置死区
EPwm4Regs.DBCTL.bit.out模式= DB_FULL启用;
EPwm4Regs.DBCTL.bit.POLSEL = DB_ACTV_LOC;
EPwm4Regs.DBCTL.bit.in_mode = DBA_All;
EPwm4Regs.DBRED.bit.DBRED = 100;
EPwm4Regs.DBFED.bit.DBFED = 100;
}
void InitEPwm5example()
{
EPwm5Regs.TBPRD = 1万;//设置计时器周期801 TBCLK
EPwm5Regs.TBPHS.bit.TBPHS = 1万;//0x0000;//相位为0
EPwm5Regs.TBCTR = 0x0000;//清除计数器
EPwm5Regs.CMPA.bit.CMPA = 5000;// set比较值
EPwm5Regs.TBCTL.bit.CTRMODE = 2;//上/下模式
EPwm5Regs.TBCTL.bit.PHSEN = TB_enable;//TB_disable;
EPwm5Regs.TBCTL.bit.PHSDIR = TB_DOWN;
EPwm5Regs.TBCTL.bit.HSPCLKDIV = 0;// HSPCLKDIV = 1
EPwm5Regs.TBCTL.bit.CLKDIV = 0;// CLKDIV = 1;
EPwm5Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;
//设置阴影
EPwm5Regs.CMPCTL.bit.SHDWAMODE = CC_SHAME;
EPwm5Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;//零负载
// EPwm5Regs.AQCTLA.ALL = 0x0060;
EPwm5Regs.AQCTLA.bit.ZRO = AQ_SET;
EPwm5Regs.AQCTLA.bit.CAU = AQ_CLEAR;
//活动低PWM -设置死区
EPwm5Regs.DBCTL.bit.out模式= DB_FULL启用;
EPwm5Regs.DBCTL.bit.POLSEL = DB_ACTV_LOC;
EPwm5Regs.DBCTL.bit.in_mode = DBA_All;
EPwm5Regs.DBRED.bit.DBRED = 100;
EPwm5Regs.DBFED.bit.DBFED = 100;
}
void InitEPwm6example()
{
EPwm6Regs.TBPRD = 1万;//设置计时器周期801 TBCLK
EPwm6Regs.TBPHS.bit.TBPHS = 5000;//0x0000;//相位为0
EPwm6Regs.TBCTR = 0x0000;//清除计数器
EPwm6Regs.CMPA.bit.CMPA = 5000;// set比较值
EPwm6Regs.TBCTL.bit.CTRMODE = 2;//上/下模式
EPwm6Regs.TBCTL.bit.PHSEN = TB_enable;//TB_disable;
EPwm6Regs.TBCTL.bit.PHSDIR = TB_DOWN;
EPwm6Regs.TBCTL.bit.HSPCLKDIV = 0;// HSPCLKDIV = 1
EPwm6Regs.TBCTL.bit.CLKDIV = 0;// CLKDIV = 1;
EPwm6Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;
//设置阴影
EPwm6Regs.CMPCTL.bit.SHDWAMODE = CC_SHAME;
EPwm6Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;//零负载
// EPwm6Regs.AQCTLA.ALL = 0x0060;
EPwm6Regs.AQCTLA.bit.ZRO = AQ_SET;
EPwm6Regs.AQCTLA.bit.CAU = AQ_CLEAR;
//活动低PWM -设置死区
EPwm6Regs.DBCTL.bit.out模式= DB_FULL启用;
EPwm6Regs.DBCTL.bit.POLSEL = DB_ACTV_LOC;
EPwm6Regs.DBCTL.bit.in_mode = DBA_All;
EPwm6Regs.DBRED.bit.DBRED = 100;
EPwm6Regs.DBFED.bit.DBFED = 100;
}
void InitEPwm7example()
{
EPwm7Regs.TBPRD = 1万;//设置计时器周期801 TBCLK
EPwm7Regs.TBPHS.bit.TBPHS = 5000;//0x0000;//相位为0
EPwm7Regs.TBCTR = 0x0000;//清除计数器
EPwm7Regs.CMPA.bit.CMPA = 5000;// set比较值
EPwm7Regs.TBCTL.bit.CTRMODE = 2;//上/下模式
EPwm7Regs.TBCTL.bit.PHSEN = TB_enable;//TB_disable;
EPwm7Regs.TBCTL.bit.PHSDIR = TB_UP;
EPwm7Regs.TBCTL.bit.HSPCLKDIV = 0;// HSPCLKDIV = 1
EPwm7Regs.TBCTL.bit.CLKDIV = 0;// CLKDIV = 1;
EPwm7Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;
//设置阴影
EPwm7Regs.CMPCTL.bit.SHDWAMODE = CC_SHAME;
EPwm7Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;//零负载
// EPwm7Regs.AQCTLA.ALL = 0x0060;
EPwm7Regs.AQCTLA.bit.ZRO = AQ_SET;
EPwm7Regs.AQCTLA.bit.CAU = AQ_CLEAR;
//活动低PWM -设置死区
EPwm7Regs.DBCTL.bit.out模式= DB_FULL启用;
EPwm7Regs.DBCTL.bit.POLSEL = DB_ACTV_LOC;
EPwm7Regs.DBCTL.bit.in_mode = DBA_All;
EPwm7Regs.DBRED.bit.DBRED = 100;
EPwm7Regs.DBFED.bit.DBFED = 100;
}
PLZ建议了一些解决方案。对于任何值,我都不能使用EPWM4获得EPWM7正确的相位移。使用EPWM4时始终获得相同的相位。