paradoxfx

【原创】TI C2833x介绍---HRPWM(15)

0
阅读(4005)

脉宽调制PWM的本质就是把基波/调制波信号用三角载波(或者其它更新奇的载波,例如抛物线形式的载波)进行叠加、调制,从而得到脉宽可变的方波波形。一般情况下载波的频率远高于调制波的频率,所以如果我们使用一个低通滤波器或者限波器等滤除载波频率的话,基本上就能复原调制波的波形了(当然会有一定的相位滞后、幅值衰减、谐波造成的波形畸变)。基于同样的道理,在不使用外部DAC芯片的情况下(一般外部DAC价格相对较高,而且性能相对价格的比值也很高),并且不考虑相位滞后、幅值衰减等因素的情况下,我们可以使用PWM把想观察的信号调整输出,然后用简单的滤波电路提取出信号,就构成了一个基本的DAC电路了。

一般情况下使用的DAC其内部调制频率也在几百kHz到上MHz的级别上了,所以我们使用HRPWM来模拟这样的操作是非常合适的。假设以下参数:

PWM开关频率=400kHz(在系统时钟为100M的情况下,ePWM周期值为250);

PWM调制模式为非对称的单向增模式;

需要的PWM分辨率为14bit(考虑MEP步长为150ps的典型值情况);

则我们可以使用以下的代码模拟一个DAC(简化起见,暂不使用SFO实时校正)。

初始化代码:

void HrPwmDacDrvCnf(void) {

//与前面Buck变换器的初始化代码类似,思路是一样的,先初始化传统PWM

EPwm1Regs.TBCTL.bit.PRDLD = TB_IMMEDIATE; //立即装载模式

EPwm1Regs.TBPRD = 250; // 400 kHz PWM

hrDAC_period = 250; // Q15Q0的转换

EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;

EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE; // EPWM1主模式

EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE;

EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;

EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1;

//B通道只用来对比

EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;

EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;

EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;

EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;

EPwm1Regs.AQCTLA.bit.ZRO = AQ_SET;

EPwm1Regs.AQCTLA.bit.CAU = AQ_CLEAR;

EPwm1Regs.AQCTLB.bit.ZRO = AQ_SET;

EPwm1Regs.AQCTLB.bit.CBU = AQ_CLEAR;

//配置HRPWMEALLOW保护的

EALLOW;

EPwm1Regs.HRCNFG.all = 0x0; //清除所有配置

EPwm1Regs.HRCNFG.bit.EDGMODE = HR_FEP; //下降沿控制没送

EPwm1Regs.HRCNFG.bit.CTLMODE = HR_CMP; //使用CMPAHR控制MEP.

EPwm1Regs.HRCNFG.bit.HRLOAD = HR_CTR_ZERO; // CTR=Zero时加载影子寄存器的值

EDIS;

MEP_ScaleFactor = 66*256; //使用典型的MEP预定标因子

//可以添加SFO初始化

}

驱动HRPWM的代码为:

EPWM1_BASE .set 0x6800 ; 0x00 6800ePWM1寄存器的地址

CMPAHR1 .set EPWM1_BASE+0x8

;=================================================

这段代码可以放在定时中断或者一个循环里

;=================================================

MOVW DP, #_HRDAC_In

MOVL XAR2,@_HRDAC_In ;指向输入的Q15格式的占空比(XAR2)

MOVL XAR3,#CMPAHR1 ;指向HRCMPA寄存器(XAR3)

; EPWM1A输出的HRPWM

MOV T,*XAR2 ; T <= duty

MPY ACC,T,@_hrDAC_period ; Q15Q0的转换

ADD ACC,@_HrDAC_period<<15 ;双极性操作:有符号到无符号

MOV T,@_MEP_ScaleFactor ; MEP预定标因子

MPYU P,T,@AL ; P <= T * AL,优化的定标

MOVH @AL,P ; AL <= P,把结果存入ACC

ADD ACC, #0x180 ; MEP的范围限幅

MOVL *XAR3,ACC ; CMPA:CMPAHR(31:8) <= ACC

; ePWMxB通道只用于对比观测

MOV *+XAR3[2],AH ;ACCH存入CMPB

Baidu
map