主题中讨论的其他器件:C2000WARE
尊敬的 TI 团队:
为了使用 ePWM 模块生成互补信号、我使用并修改了代码部分(从 :C:\ti\c2000\C2000Ware_3_04_00_00\device_support\f2837xd\examples\cpu1\ePWM_dul带\cpu01)
EPwm1Regs.TBPRD = 1000;//设置定时器周期
EPwm1Regs.TBPHS.bit.TBPHS = 0x0000;//相位为0
EPwm1Regs.TBCTR = 0x0000;
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;//TB_COUNT_UP;//计数模式
EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;//禁用相位加载。 #define TB_DISABLE 0x0
EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;//TB_DIV1 = 0x0 ->除以1
EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1;//TB_DIV1 = 0x0 ->除以1
//EPwm1Regs.PERCLKDIVSEL.bit.EPWMCLKDIV =
EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADODE;//每0加载一次寄存器
EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;
EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;
//
//设置比较
//
EPwm1Regs.CMPA.bit.CMPA = 750;
EPwm1Regs.AQCTLA.bit.CAU = AQ_SET;//将 EPWMxA 设置为高电平
EPwm1Regs.AQCTLA.bit.CAD = AQ_CLEAR;//将 EPWMxA 设为低电平
// AQCTLB:输出 B 的操作限定器控制寄存器
EPwm1Regs.AQCTLB.bit.CAU = AQ_CLEAR;//将 EPWMxB 设为低电平
EPwm1Regs.AQCTLB.bit.CAD = AQ_SET;//将 EPWMxB 设置为高电平
从上面的代码部分可以看出、EPWM1A 和 EPWM1B 输出信号应该是互补的、对吗? 但是、在我的示波器上、这两个信号是相同的。
我的问题是:
(1)我的代码或设置是否有任何错误?
(2)在以下代码中隐藏寄存器的目的是什么:
EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADODE;//每0加载一次寄存器
EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;
EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;
非常感谢你的帮助。 因为我是 C2000的新手、所以您的指导对我非常有意义。
此致、