工具/软件:Code Composer Studio
我想使用 CMPSS 实现降压转换器的峰值电流模式控制。 因此、我编写一些代码来测试 CMPSS 和 ePWM。 测试波形如下、其中浅蓝色线表示在 CMPIN1P/ADCINA2中连接的信号、粉色线表示在 CMPIN1N/ADCINA3中连接的信号。 绿线是输出信号(ePWM6A)。
在代码中、我将默认占空比设置为50%、当 CMPSS 跳闸事件发生时、该占空比被强制为低电平。 图1给出了 CMPSS 工作时的波形、它可以强制 PWM 变为低电平。 但是、根据图 2、当 CMPIN1P > CMPIN1N 时、ePWM 始终为低电平、这不是我想要的。 我希望在 CMPIN1P > CMPIN1N 期间、PWM 始终输出我设置的占空比(50%、但不是始终为低电平)。 代码如下所示、如何设置寄存器? 非常感谢!
void InitEPwm6Examples(void){
EPwm6Regs.TBPRD = 500; //设置计时器周期
EPwm6Regs.TBPHS.bit.TBPHS = 0x0000; //相位为0
EPwm6Regs.TBCTR = 0x0000; //清除计数器
//
//设置 TBCLK
//
EPwm6Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;//向上计数
EPwm6Regs.TBCTL.bit.PHSEN = TB_DISABLE; //禁用相位加载
EPwm6Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; //时钟与 SYSCLKOUT 的比率
EPwm6Regs.TBCTL.bit.CLKDIV = TB_DIV1; //慢,只观察一下
//范围。
EPwm6Regs.TBCTL.bit.PHSEN = TB_ENABLE; 禁止相位控制 μ s
EPwm6Regs.TBCTL.bit.PRDLD = TB_SHADOW; TBPRD寄存器采用映射模式 μ s
EPwm6Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;//禁止同步信号 μ s
//设置比较
//
EPwm6Regs.CMPA.bit.CMPA = 250; 计数到此,强制拉低 μ s
//
//设置操作
//
EPwm6Regs.AQCTLA.bit.ZRO = AQ_SET; 在计数为0处,设置EPWMA为高电平 μ s
EPwm6Regs.AQCTLA.bit.CAU = AQ_CLEAR; //达到设定计数值CMPA处,EPWMA为低电平
///---------------------------------------------------------
EALLOW;
//将 DCB 配置为 TRIP4
EPwm6Regs.DCTRIPSEL.bit.DCBHCOMPSEL = 3; /选择Zone4作为触发Trip 4.
EPwm6Regs.TZDCSEL.bit.DCBEVT2 = TZ_DCBH_HI; 选择比较输出 B 事件2 μ s
EPwm6Regs.TZSEL.bit.DCBEVT2 = 1;//将 DCB 配置为 CBC
//配置要过滤和异步的 DCB 路径
EPwm6Regs.DCBCTL.bit.EVT2SRCSEL = DC_EVT_FLT; //源是 DCBEVT2 Signa
EPwm6Regs.DCBCTL.bit.EVT2FRCSYNCSEL = DC_EVT_SYNC;// 0:源是同步信号
//空窗设置
EPwm6Regs.DCFCTL.bit.Blanke=1; //1:启用消隐窗口
EPwm6Regs.DCFCTL.bit.PULSESEL=2; //时基计数器等于零(TBCTR = 0x00)
EPwm6Regs.DCFCTL.bit.SRCEL=3; //源是 DCBEVT2信号
EPwm6Regs.DCFOFFSET=0; //消隐窗口偏移
EPwm6Regs.DCFWINDOW=30; //0.1us 20.
EPwmXbarRegs.TRIP4MUXENABLE.BIT.MUX0 = 1;//为输出启用 TRIP4多路复用器
EPwm6Regs.TZCTL.bit.TZA=TZ_FORCE_LO; //强制 EPWMxA 处于低电平状态
EPwm6Regs.TZCLR.bit.CBCPULSE=0; //CTR =零脉冲清除 CBC 跳闸锁存器。 (与传统设计相同。)
EPwmXbarRegs.TRIP5MUXENABLE.BIT.MUX0 = 1;//为输出启用 TRIP4多路复用器
EDIS;
}
void InitCMPSS (void)
{
EALLOW;
//
//启用 CMPSS
//
Cmpss1Regs.COMPCTL.bit.COMPDACE = 1;
//
//NEG 信号来自 DAC
//
Cmpss1Regs.COMPCTL.bit.COMPHSOURCE = NEGIN_PIN;
//
//使用 VDDA 作为 DAC 的基准
//
Cmpss1Regs.COMPDACCTL.bit.SELREF = reference_VDDA;
//
//将 DAC 设置为中点以进行任意引用
//
// Cmpss1Regs.DACHVALS.bit.DACVAL = 800;
//
//配置 CTRIPOUT 路径
//异步输出馈送 CTRIPH 和 CTRIPOUTH
//
// Cmpss1Regs.COMPCTL.bit.CTRIPHSEL = Ctrip_synch;
// Cmpss1Regs.COMPCTL.bit.CTRIPOUTHSEL = Ctrip_synch;
EDIS;
}



