您好,
我已经为28335 DSP 编写了一个代码。 它专为升压转换器而设计,在该转换器中,我希望使用动作限定符寄存器手动为 MOSFET 生成 PWM。 以下是我的 PWM 配置:
空 InitEPwm3Examples()
{
///PWM 频率20KHz
EPwm3Regs.TBPRD = 1875;
EPwm3Regs.TBPHS.Half.TBPHS = 0x0000;
EPwm3Regs.TBCTR = 0x0000;
EPwm3Regs.TBCTL.bit.CTRMODE = 3;//TB_COUNT_UPDOWN;
EPwm3Regs.TBCTL.bit.PHSEN = TB_DISABLE;
EPwm3Regs.TBCTL.bit.HSPCLKDIV=1;
EPwm3Regs.TBCTL.bit.CLKDIV = 0;
//设置比较
EPwm3Regs.CMPA.half.CMPA = 0;
EPwm3Regs.CMPCTL.bit.SHDWAMODE = 0;
EPwm3Regs.CMPCTL.bit.LOADAMODE = 0;
//设置操作
EPwm3Regs.AQCTLA.bit.CAU = 1;
EPwm3Regs.AQCTLA.bit.CAD = 2;
// EPwm2Regs.AQCTLB.bit.CAU = AQ_CLEAR;
// EPwm2Regs.AQCTLB.bit.CAD = AQ_SET;
//高电平有效互补 PWM -设置死区
EPwm3Regs.DBCTL.bit.OUT_MODE = 0x3;//死区完全启用
EPwm3Regs.DBCTL.bit.POLSEL = 0x2;//高电平有效互补
EPwm3Regs.DBCTL.bit.IN_MODE = 0x0;//EPWMxA 是上升沿延迟和下降沿延迟信号的源
EPwm3Regs.DBRED = 75;//1us
EPwm3Regs.DBFED = 75;
// EPwm2_DB_DIRECTION = DB_UP;
//Trip Zone Settings (//跳闸区域设置)
EALLOW;
EPwm3Regs.TZCTL.ALL = 0xA;//在 TZ 时强制 epwmxA 和 ePWMxB 都处于低电平状态。
EDIS;
//中断,我们将在其中修改死区
// EPwm2Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO;//选择零事件时的 INT
// EPwm2Regs.ETSEL.bit.INTEN = 1;//启用 INT
// EPwm2Regs.ETPS.bit.INTPRD = 0x1;//在第3个事件发生时生成 INT
}
我已使用以下代码初始化 PWM:
EALLOW;
EPwm3Regs.TZFRC.bit.OST=0;
EPwm3Regs.TZCLR.bit.OST=1;
EDIS;
这一个工作正常,我的开关打开。 但当我想使用以下代码关闭开关时: EPwm3Regs.AQCSRC.all=1将 PWM 设置为低电平, 这不起作用,MOSFET 短路。 (PWM 始终处于高电平)。
原因是什么、您能帮我解决这个问题吗?
(出于某些原因,我不想使用 TZ 寄存器,因为我的频率不是恒定的)