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.
工具与软件:
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 时钟是安全的。
您好!
您是否已经将配置与我们的 C2000Ware 示例进行了比较? (C:\ti\c2000\C2000Ware_5_02_00_00\driverlib\f2837xd\examples\cpu1\HRPWM)、仔细阅读我们的技术参考手册 HRPWM 一章?
我还会注意到、使用我们的 SysConfig GUI 进行开发还有助于在不兼容的 HRPWM 设置上捕获一些警告/错误。
您能否详细说明您需要哪个目标 ePWM 输出? 快速的图表始终有助于直观地显示时序和所需的输出。
对于 HR 设置、您是否只想用 HR (高分辨率占空比控制)控制下降沿、然后用 HR (高分辨率频率控制)控制时基周期? 您能否尝试启用自动转换并确保使用以 PRD 为中心的操作的向上/向下计数、以及在 CTR = 0和 CTR = PRD 上使用影子加载?
此致、
Allison
感谢 Allison 的及时回复、
我尝试了使用自动转换的向上/向下计数模式、它解决了我的问题。