DSP之pwm周期时间、死区时间

系统时钟频率:

TBCLK=SYSCLKOUT/(HSPCLKDIV*CLKDIV)

增减计数周期:

T=2*PRD/TBCLK=10^-3

单增或单减计数周期:

T=(PRD+1)/TBCLK

死区时间:

Tdb=DBRED*TBCLK=10^-6
 

参考代码

#include "DSP2833x_Device.h"
#include "DSP2833x_Examples.h"
#include "epwm.h"
 
void EPWM2_Init(float DA)
{
    //使能ePWM 外设时钟及失能时基模块时钟
    EALLOW;
    SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0;//禁用ePWM中的TBCLK
    SysCtrlRegs.PCLKCR1.bit.EPWM2ENCLK = 1;//使能ePWM2时钟
    EDIS;
 
    //开启ePWM 对应GPIO 时钟及初始化配置
    InitEPwm2Gpio();//EPWM2A对应GPIO2,EPWM2B对应GPIO3
 
    //1、时基子模块设置
    EPwm2Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE;// 禁用EPWMxSYNCO信号
    EPwm2Regs.TBCTL.bit.PHSEN = TB_DISABLE;//禁止TBCTR加载相位
    EPwm2Regs.TBPHS.half.TBPHS = 0;//相位为0
    EPwm2Regs.TBCTR = 0x0000; //清除计数器
    EPwm2Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; //上下计数模式///
    //时基频率TBCLK=SYSCLKOUT/(HSPCLKDIV*CLKDIV)=150/(2*1)=75MHZ
    EPwm2Regs.TBCTL.bit.HSPCLKDIV=TB_DIV2;//系统150MHz2分频/
    EPwm2Regs.TBCTL.bit.CLKDIV=TB_DIV1;//时钟不分频/
    //向上、下计数时,Fpwm=TBCLK/(TBPRD+1)
    //上下计数时:Fpwm=TBCLK/(2*TBPRD)
    EPwm2Regs.TBPRD = 3750;///周期
 
    //2、比较功能子模块设置
    EPwm2Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;// CMPA寄存器选择直接模式
    EPwm2Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;// CMPB寄存器选择直接模式
    //设置比较器值
    EPwm2Regs.CMPA.half.CMPA =(1-DA)*3750; //设置比较器A值//占空比D(A)=1-CMPA/TBPRD、D(B)=1-D(A)
 
    //3、动作限定模块设置
    EPwm2Regs.AQCTLA.bit.CAU = 2; //CTR=CMPA增计数时,EPwmA输出高电平
    EPwm2Regs.AQCTLA.bit.CAD = 1; //CTR=CMPA减计数时,EPwmA输出低电平
    EPwm2Regs.AQCTLB.bit.CAU = 2; //CTR=CMPA增计数时,EPwmB输出高电平
    EPwm2Regs.AQCTLB.bit.CAD = 1; //CTR=CMPA减计数时,EPwmB输出低电平
 
    //4、事件中断设置
    EPwm2Regs.ETSEL.bit.INTSEL = 2;//EPwm中断条件为CTR=PRD
    EPwm2Regs.ETSEL.bit.INTEN = 1;//EPwm中断使能
    EPwm2Regs.ETPS.bit.INTPRD = 1;//事件分频寄存器,每发生一次事件,中断一次
 
    //5、死区设置
    EPwm2Regs.DBCTL.bit.IN_MODE = 2;//EPwmxA为上升沿延时,EPWMxB为下降沿延时
    EPwm2Regs.DBCTL.bit.POLSEL = 2;//EPWMxA不翻转,EPWMxB翻转
    EPwm2Regs.DBCTL.bit.OUT_MODE = 3;//使能上升沿下降沿延时
    //TDCLK频率为75MHZ,时间为1/75us,5us死区时间则把DBRED和DBFED设置为5*75=375
    EPwm2Regs.DBRED =375;//上升沿死区时间5us
    EPwm2Regs.DBFED =375;//下降沿死区时间5us
 
    //6、使能时基计数器时钟
    EALLOW;
    SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1;
    EDIS;
}
 

你可能感兴趣的:(单片机,嵌入式硬件)