主题中讨论的其他器件:DESIGNDRIVE
工具/软件:Code Composer Studio
你(们)好
我尝试使用比较器产生两个跳闸信号:一个来自比较器高电平、另一个来自比较器低电平。 我使用这两个信号连接到数字比较模块来产生 DCAEVT2和 DCBEVT2数字比较信号。 之后、我将 TZ1和 TZ2连接到这些数字比较信号。 TZ1和 TZ2使用 ePWM 动作限定器进行设置。 但是、我看不到正确的 PWM 输出。
我将在这里上传代码片段。
数字比较代码片段
//
//将 TRIP4配置为从比较器1跳闸的高电平
//将 TRIP5配置为比较器1的低跳闸
//
//首先清除所有内容
//
EPwmXbarRegs.TRIP4MUX0TO15CFG.ALL = 0x0000;
EPwmXbarRegs.TRIP4MUX16TO31CFG.ALL = 0x0000;
EPwmXbarRegs.TRIP5MUX0TO15CFG.ALL = 0x0000;
EPwmXbarRegs.TRIP5MUX16TO31CFG.ALL = 0x0000;
//
//为 CMPSS1H 和1L 的输入启用多路复用器
//
EPwmXbarRegs.TRIP4MUX0TO15CFG.bit.MUX0 = 0;//cmps1 CTRIPH
EPwmXbarRegs.TRIP5MUX0TO15CFG.bit.MUX1 = 0;//cmps1 CTRIPL
//首先禁用所有多路复用器
EPwmXbarRegs.TRIP4MUXENABLE.ALL = 0x0000;
EPwmXbarRegs.TRIP5MUXENABLE.ALL = 0x0000;
//启用 Mux4至 TRIP4
//启用 Mux0至 TRIP5
EPwmXbarRegs.TRIP4MUXENABLE.bit.MUX0 = 1;
EPwmXbarRegs.TRIP5MUXENABLE.bit.MUX1 = 1;
// EPwm2 Trip 4 DC A low --> DCAEVT2
EPwm2Regs.DCTRIPSEL.bit.DCALCOMPSEL = 3;//跳闸4 DC A 低电平
EPwm2Regs.TZDCSEL.bit.DCAEVT2 = 4;// DCAL 高电平 DCAH 无关
EPwm2Regs.DCACTL.bit.EVT2SRCSEL = 0;//无滤波器
EPwm2Regs.DCACTL.bit.EVT2FRCSYNCSEL = 1;//异步
// EPwm2 Trip 5 DC B low --> DCBEVT2
EPwm2Regs.DCTRIPSEL.bit.DCBLCOMPSEL = 4;//跳闸5 DC B 低电平
EPwm2Regs.TZDCSEL.bit.DCBEVT2 = 4;// DCBL 高电平 DCBH 无关
EPwm2Regs.DCBCTL.bit.EVT2SRCSEL = 0;//无滤波器
EPwm2Regs.DCBCTL.bit.EVT2FRCSYNCSEL = 1;//异步
// EPwm3跳闸4 DC A low --> DCAEVT2
EPwm3Regs.DCTRIPSEL.bit.DCALCOMPSEL = 3;//跳闸4 DC A 低电平
EPwm3Regs.TZDCSEL.bit.DCAEVT2 = 4;// DCAL 高电平 DCAH 无关
EPwm3Regs.DCACTL.bit.EVT2SRCSEL = 0;//无滤波器
EPwm3Regs.DCACTL.bit.EVT2FRCSYNCSEL = 1;//异步
// EPwm3跳闸5 DC B low --> DCBEVT2
EPwm3Regs.DCTRIPSEL.bit.DCBLCOMPSEL = 4;//跳闸5 DC B 低电平
EPwm3Regs.TZDCSEL.bit.DCBEVT2 = 4;// DCBL 高电平 DCBH 无关
EPwm3Regs.DCBCTL.bit.EVT2SRCSEL = 0;//无滤波器
EPwm3Regs.DCBCTL.bit.EVT2FRCSYNCSEL = 1;//异步
//将数字比较连接到 PWM 操作
EPwm2Regs.AQTSRCSEL.bit.T1SEL=1;// DCAEVT2连接到 T1
EPwm2Regs.AQTSRCSEL.bit.T2SEL=3;// DCBEVT2连接到 T2
EPwm3Regs.AQTSRCSEL.bit.T1SEL=1;// DCAEVT2连接到 T1
EPwm3Regs.AQTSRCSEL.bit.T2SEL=3;// DCBEVT2连接到 T2
//清除任何杂散 OV 跳闸
EPwm2Regs.TZCLR.bit.DCAEVT2 = 1;
EPwm2Regs.TZCLR.bit.DCBEVT2 = 1;
EPwm3Regs.TZCLR.bit.DCAEVT2 = 1;
EPwm3Regs.TZCLR.bit.DCBEVT2 = 1;
EDIS;
//
// v 相的 EPWM2
//
//
//设置 TBCLK
//
EPwm2Regs.TBCTL.bit.HSPCLKDIV=1;//除以2
EPwm2Regs.TBCTL.bit.CLKDIV=2;//除以4 12.5MHz EPWMCLOCK
EPwm2Regs.TBCTL.bit.CTRMODE=0;//向上计数模式
EPwm2Regs.TBCTL.bit.PHSEN=0;//禁用相位加载
//
//启用 PWM
//
EPwm2Regs.TBPRD = 62499;// 200Hz PWM
EPwm2Regs.TBPHS.bit.TBPHS= 0;//相位为零
EPwm2Regs.TBCTR = 0;//清除计数器
// EPWM2死区
//
EPwm2Regs.DBCTL.bit.out_mode=3;// DBM 已完全启用
EPwm2Regs.DBCTL.bit.POLSEL=2;//高电平有效互补
EPwm2Regs.DBCTL.bit.IN_MODE=0;// EPWMA 是下降沿和上升沿延迟的源
EPwm2Regs.DBRED.bit.DBRED=25;//死区时间2us
EPwm2Regs.DBFED.bit.DBFED=25;//死区时间2us
//
// EPWM3用于 w 相
//
//
//设置 TBCLK
//
EPwm3Regs.TBCTL.bit.HSPCLKDIV=1;//除以2
EPwm3Regs.TBCTL.bit.CLKDIV=2;//除以4 100MHz
EPwm3Regs.TBCTL.bit.CTRMODE=0;//向上计数模式
EPwm3Regs.TBCTL.bit.PHSEN=0;//可调相加载
//
//启用 PWM
//
EPwm3Regs.TBPRD = 62499;// 200Hz
EPwm3Regs.TBPHS.bit.TBPHS= 0;//相位为零
EPwm3Regs.TBCTR = 0;//清除计数器
//
// EPWM3死区
//
EPwm3Regs.DBCTL.bit.out_mode=3;// DBM 已完全启用
EPwm3Regs.DBCTL.bit.POLSEL=2;//高电平有效互补
EPwm3Regs.DBCTL.bit.IN_MODE=0;// EPWMA 是下降沿和上升沿延迟的源
EPwm3Regs.DBRED.bit.DBRED=25;//死区时间2us
EPwm3Regs.DBFED.bit.DBFED=25;//死区时间2us
// PWM 动作限定符
EPwm2Regs.AQCTLA2.bit.T1U = 2;// 2A 高电平
EPwm2Regs.AQCTLB2.bit.T1U = 1;// 2B 低
EPwm3Regs.AQCTLA2.bit.T1U = 1;// 3A 低电平
EPwm3Regs.AQCTLB2.bit.T1U = 2;// 3B 高电平
EPwm2Regs.AQCTLA2.bit.T2U = 1;// 2A 低电平
EPwm2Regs.AQCTLB2.bit.T2U = 2;// 2B 高电平
EPwm3Regs.AQCTLA2.bit.T2U = 2;// 3A 高电平
EPwm3Regs.AQCTLB2.bit.T2U = 1;// 3B 低电平