主题中讨论的其他器件: C2000WARE、 SysConfig
工具与软件:
TMS320F28375D 控制器用于使用200MHz 的系统时钟和100MHz 的 ePWM 时钟、以1kHz 步进分辨率生成0.9至1.1 MHz 高分辨率 PWM (HRPWM)信号。
问题在于、在具有500MHz 带宽的示波器中、信号的上升沿或下降沿都会出现占空比抖动(大约10ns 至12ns)。
对于以下配置、用于 epwm6A。
EPwm6Regs.TBPRD = 99;
EPwm6Regs.TBPRDHR = 0;
EPwm6Regs.TBPHS.bit.TBPHS = 0x0000;
EPwm6Regs.TBCTL.bit.FREE_SOFT = 3;
EPwm6Regs.TBCTL.bit.PHSDIR = 0;
EPwm6Regs.TBCTL.bit.CLKDIV = 0;
EPwm6Regs.TBCTL.bit.HSPCLKDIV = 0;
EPwm6Regs.TBCTL.bit.SWFSYNC = 1;
EPwm6Regs.TBCTL.bit.SYNCOSEL = 0;
EPwm6Regs.TBCTL.bit.PRDLD = 0;
EPwm6Regs.TBCTL.bit.PHSEN = 0;
EPwm6Regs.TBCTL.bit.CTRMODE = 00;
EPwm6Regs.TBSTS.bit.CTRMAX = 0;
EPwm6Regs.TBSTS.bit.SYNCI = 0;
EPwm6Regs.TBSTS.bit.CTRDIR = 0;
EPwm6Regs.CMPCTL.bit.SHDWBFULL = 0;
EPwm6Regs.CMPCTL.bit.SHDWAFULL = 0;
EPwm6Regs.CMPCTL.bit.SHDWBMODE = 0;
EPwm6Regs.CMPCTL.bit.SHDWAMODE = 0;
EPwm6Regs.CMPCTL.bit.LOADBMODE = 0x00;
EPwm6Regs.CMPCTL.bit.LOADAMODE = 0x00;
EPwm6Regs.CMPA.bit.CMPA = 50;
EPwm6Regs.CMPB.bit.CMPB = 50;
EPwm6Regs.AQCTLA.bit.cbd = 00;
EPwm6Regs.AQCTLA.bit.CBU = 00;
EPwm6Regs.AQCTLA.bit.CAD = 00;
EPwm6Regs.AQCTLA.bit.CAU = 01;
EPwm6Regs.AQCTLA.bit.PRD = 00;
EPwm6Regs.AQCTLA.bit.ZRO = 10;
EPwm6Regs.AQCTLB.bit.cbd = 00;
EPwm6Regs.AQCTLB.bit.CBU = 01;
EPwm6Regs.AQCTLB.bit.CAD = 00;
EPwm6Regs.AQCTLB.bit.CAU = 00;
EPwm6Regs.AQCTLB.bit.PRD = 00;
EPwm6Regs.AQCTLB.bit.ZRO = 10;
EPwm6Regs.ETSEL.bit.SOCBEN = 0;
EPwm6Regs.ETSEL.bit.SOCBSEL = 0;
EPwm6Regs.ETSEL.bit.SOCAEN = 0;
EPwm6Regs.ETSEL.bit.SOCASEL = 0;
EPwm6Regs.ETSEL.bit.INTEN = 0;
EPwm6Regs.ETSEL.bit.INTSEL = 0;
EPwm6Regs.AQCSFRC.bit.CSFB = 01;
EPwm6Regs.AQCSFRC.bit.CSFA = 01;
EPwm6Regs.HRCNFG.ALL = 0x0;
EPwm6Regs.HRCNFG.bit.EDGMODE = HR_FEP;
EPwm6Regs.HRCNFG.bit.CTLMODE = HR_CMP;
EPwm6Regs.HRCNFG.bit.HRLOAD = HR_CTR_PRD;
EPwm6Regs.HRCNFG.bit.EDGMODEB = HR_FEP;
EPwm6Regs.HRCNFG.bit.CTLMODEB = HR_CMP;
EPwm6Regs.HRCNFG.bit.HRLOADB = HR_CTR_PRD;
EPwm6Regs.HRCNFG.bit.AUTOCONV = 0;
EPwm6Regs.HRPCTL.bit.TBPHSHRLOADE = 0;
EPwm6Regs.HRMSTEP.bit.HRMSTEP = 28;
EPwm6Regs.HRPCTL.bit.HRPE = 1;
注意:
//----- 不同频率的设置--- //
//------- 对于1MHz、------------------------------------------------------- //
EPwm6Regs.TBPRD = 99;
EPwm6Regs.TBPRDHR = 0;
EPwm6Regs.CMPA.bit.CMPA = 50;
EPwm6Regs.CMPA.bit.CMPAHR = 0;
//------- 对于1.1MHz、------------------------------------------------------- //
EPwm6Regs.TBPRD = 89;
EPwm6Regs.TBPRDHR = 59577;
EPwm6Regs.CMPA.bit.CMPA = 45;
EPwm6Regs.CMPA.bit.CMPAHR = 3386;
//------- 对于0.9MHz、------------------------------------------------------- //
EPwm6Regs.TBPRD = 110;
EPwm6Regs.TBPRDHR = 7281;
EPwm6Regs.CMPA.bit.CMPA = 55;
EPwm6Regs.CMPA.bit.CMPAHR = 4110;
//------------------------------------------------------- //
那么、抖动的原因可能是什么?
我们观察到、200MHz ePWM 时钟没有抖动、为 ePWM 使用200MHz 时钟是安全的。