工具/软件:Code Composer Studio
首先、我将在下图中显示异常波形、红线(CH2)是电流、蓝线(CH3)是 ZCD 信号、黄线是栅极驱动器 EPWM2B (GPIO3)、当 EPWM2B 设置为1时、电流增大、当 EPWM2B 设置为0时、电流将减小。
在这里、我使用 DCAEVT1.SYNC 来生成同步脉冲、作为 发送到我的 ePWM 模块的 EPWMxSYNCI 信号。
正如我们在第一个图中看到的、当电流降至零时、ZCD 信号将从0触发为1、该 ZCD 信号将配置为 TZ1至 X-BAR 的 Input1、
相关代码如下所示:
EPwm2Regs.DCTRIPSEL.bit.DCAHCOMPSEL = DC_TZ1;// DCAH = TZ1
EPwm2Regs.TZDCSEL.bit.DCAEVT1 = TZ_DCAH_HI;
EPwm2Regs.DCACTL.bit.EVT1SRCSEL = DC_EVT1;//DCAEVT1 =DCAEVT1 (未滤波)
EPwm2Regs.DCACTL.bit.EVT1FRCSYNCSEL = DC_EVT_异 步;//DC_EVT_SYNC;//DC_EVT_异 步;//DC_EVT_SYNC;//采用异步路径
EPwm2Regs.TZCTL.bit.TZA = TZ_NO_CHANGE;//TZ_FORCE_HI;// EPWM1A 将变为高电平
EPwm2Regs.TZCTL.bit.TXB = TZ_NO_CHANGE;//TZ_FORCE_LO;// EPWM1B 将变为低电平
EPwm2Regs.TZCTL.bit.DCAEVT1 = TZ_NO_CHANGE;//TZ_FORCE_HI;// EPWM1A 将变为高电平
EPwm2Regs.DCACTL.bit.EVT1SYNCE = 1;
EPwm2Regs.DCACTL.bit.EVT1SOCE = 0;
然后 、DCAEVT1.SYNC 将 ePWM 模块的时基计数器(TBCTR)设置为零(TBPHS = 0)、并且驱动器信号将从0更改为1。 当 TBCTR 增加到达到 CMPA 时、驱动器信号将设置为0。
相关代码如下所示:
PWM GPIO 配置
GpioCtrlRegs.GPAMUX1.bit.GPIO2 = 0;//首先将 GPyMUX 位设置为零以避免多路复用器中的毛刺脉冲
GpioCtrlRegs.GPAGMUX1.bit.GPIO2 = 0;
GpioCtrlRegs.GPAMUX1.bit.GPIO2 = 1;
GpioCtrlRegs.GPACSEL1.bit.GPIO2 = GPIO_MUX_CPU1;
GpioCtrlRegs.GPAMUX1.bit.GPIO3 = 0;//首先将 GPyMUX 位设置为零以避免多路复用器中的毛刺脉冲
GpioCtrlRegs.GPAGMUX1.bit.GPIO3=0;
GpioCtrlRegs.GPAMUX1.bit.GPIO3=1;
GpioCtrlRegs.GPACSEL1.bit.GPIO3 = GPIO_MUX_CPU1;
GpioCtrlRegs.GPAPUD.bit.GPIO2 = 1;//禁用 GPIO0上的上拉电阻(EPWM2A)
GpioCtrlRegs.GPAPUD.bit.GPIO3=1;//禁用 GPIO1上的上拉电阻(EPWM2B)
EALLOW;
InputXbarRegs.INPUT1SELECT = 21;//12;//
InputXbarRegs.INPUT5SELECT = 50;//12;//
InputXbarRegs.INPUT6SELECT = 50;//12;//
EDIS;
EPwm2Regs.AQCTLA.bit.ZRO = AQ_CLEAR;// 强制 EPWMxA 输出为低电平。
EPwm2Regs.AQCTLA.bit.CAU = AQ_SET; 强制 EPWMxA 输出高电平
EPwm2Regs.AQCTLA.bit.PRD = AQ_CLEAR;// 强制 EPWMxA 输出为低电平。
EPwm2Regs.DBCTL.bit.IN_MODE = DBA_ALL; //s5=0、s4=0
EPwm2Regs.DBCTL.bit.OUT_MODE = DB_FUL_ENABLE; // s1=1、s0=1
EPwm2Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC; //s3=0、s2=1
EPwm2Regs.DBFED = 0x05;
EPwm2Regs.DBRED = 0x02;
EPwm2Regs.DBCTL.bit.OUTSWAP = 0x00;
在大多数情况下,它运行良好,但有时在一个开关周期中,当 TBCTR 增加到 CMPA 时,驱动器信号无法设置为0。 这种情况非常混乱,会导致很大的电流尖峰。