工具/软件:Code Composer Studio
TMS320F28375D 规范规定 PWM 频率最大为100MHz、
但它看起来是在200MHz 下工作、具有以下设置。
这是否超出保修期、还是我的误解?
====================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
EALLOW;
ClkCfgRegs.PERCLKDIVSEL.BIT.EPWMCLKDIV = 0x0;// 0 =/1。 1 =/2。
EDIS;
//至 SHARC1 PWM。
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;//顺计时
EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE; //禁用相位加载
EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; //时钟与 SYSCLKOUT 的比率
EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1;
EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO;
EPwm1Regs.TBPRD = 25; //设置定时器周期
EPwm1Regs.TBPHS.bit.TBPHS = 0x0000; //相位为0
EPwm1Regs.TBCTR = 0x0000; //清除计数器
//将影子寄存器加载设置为零
EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;
EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;
//设置比较值
EPwm1Regs.CMPA.bit.CMPA = 0; //设置比较 A 值
EPwm1Regs.CMPB.bit.CMPB = 0; //设置比较 B 值
//设置操作 A (上部)
EPwm1Regs.AQCTLA.bit.ZRO = AQ_SET; //将 PWM1A 设置为零
EPwm1Regs.AQCTLA.bit.PRD = AQ_CLEAR; //清除 PWM1A ON 周期
EPwm1Regs.AQCTLA.bit.CAU = AQ_NO_ACTION; //不执行任何操作
EPwm1Regs.AQCTLA.bit.CAD = AQ_NO_ACTION; //不执行任何操作
EPwm1Regs.AQCTLA.bit.CBU = AQ_NO_ACTION; //不执行任何操作
EPwm1Regs.AQCTLA.bit.CBD = AQ_NO_ACTION; //无
//设置操作 B (较低)
EPwm1Regs.AQCTLB.bit.ZRO = AQ_SET; //将 PWM1B 设置为零
EPwm1Regs.AQCTLB.bit.PRD = AQ_CLEAR; //在周期上清除 PWM1B
EPwm1Regs.AQCTLB.bit.CAU = AQ_NO_ACTION; //不执行任何操作
EPwm1Regs.AQCTLB.bit.CAD = AQ_NO_ACTION; //不执行任何操作
EPwm1Regs.AQCTLB.bit.CBU = AQ_NO_ACTION; //不执行任何操作
EPwm1Regs.AQCTLB.bit.CBD = AQ_NO_ACTION; //无
//设置其他
EPwm1Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE;//启用死区
EPwm1Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC; //反转 AQOUTB
EPwm1Regs.DBCTL.bit.IN_MODE = DBA_RED_DBB_FED;//(AQOUTA:红色 AQOUTB:FED)
EPwm1Regs.DBCTL.bit.HALFCYCLE = 0;
EPwm1Regs.DBRED.bit.DBRED = 1;//上死区时间
EPwm1Regs.DBFED.bit.DBFED = 1;//缩短死区时间
//中断,我们将在其中更改比较值
EPwm1Regs.ETSEL.bit.INTSEL = ET_CTR_PRD; //在 PRD 事件上选择 INT。
EPwm1Regs.ETSEL.bit.INTEN = 1; //启用 INT
EPwm1Regs.ETPS.bit.INTPRD = et_1st; //在1st 上生成 INT
EPwm1Regs.ETCLR.bit.INT = 1; // INT flg 清零
====================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
抱歉、无法放置示波器图像、
但从一个上升沿到下一个上升沿的时间为250ns。
250ns = 25 (PRD)* 2 (上行/下行)* 5ns
指出您是否犯错。
谢谢、此致。