28035芯片,总共要用到8个PWM端口输出,当PWM频率设置为20KHz时,TBPRD设置为1500,那么实际可调占空比的数值范围为0-1500,如何在频率不变的情况下,提高占空比数值范围?
下面是PWM设定程序
void InitEPWM_AQ_DB(void)
{
char i;
volatile struct EPWM_REGS *PWMDef[] = {&EPwm1Regs,&EPwm2Regs,&EPwm3Regs,&EPwm4Regs};
InitEPwm1Gpio(); //PWM1AB 引脚配置
InitEPwm2Gpio(); //PWM2AB 引脚配置
InitEPwm3Gpio(); //PWM3AB 引脚配置
InitEPwm4Gpio(); //PWM4AB 引脚配置
for(i=0;i<4;i++)
{
EALLOW;
//T_PWM =2 x TBPRD x T_TBCLK
PWMDef[i]->TBPRD = 1500; //频率20KHz
//EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW;
PWMDef[i]->CMPA.half.CMPA = 0; //占空比
PWMDef[i]->CMPB = 0; //PWMxB占空比
PWMDef[i]->TBPHS.half.TBPHS = 0x0000; // Phase is 0
PWMDef[i]->TBCTR = 0x0000; // Clear counter
// Setup TBCLK
PWMDef[i]->TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; // Count up down,中间对其计数模式
PWMDef[i]->TBCTL.bit.PHSEN = TB_DISABLE; // Disable phase loading
PWMDef[i]->TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE;
PWMDef[i]->TBCTL.bit.HSPCLKDIV = TB_DIV1; // Clock ratio to SYSCLKOUT;
PWMDef[i]->TBCTL.bit.CLKDIV = TB_DIV1;
PWMDef[i]->AQCTLA.bit.CAU = AQ_SET;
PWMDef[i]->AQCTLA.bit.CAD = AQ_CLEAR;
PWMDef[i]->AQCTLB.bit.CBU = AQ_SET ;
PWMDef[i]->AQCTLB.bit.CBD = AQ_CLEAR;
PWMDef[i]->DBCTL.bit.OUT_MODE = DB_DISABLE; //S1 = 0; S0 = 0 关闭死区控制
EDIS;
}
}