TMS320F28035使用学习系列分享(十一)ePWM——PWM互补发波配置
1.简述
本篇是对TMS320F28035 ePWM发波配置及使用的总结,针对相关文件函数进行调用与配置。
2.中断设置
相关文件
DSP2803x_Gpio.h
DSP2803x_PieCtrl.h
做发波设置时部分关键步骤与ePWM定时器配置相仿,相同处理步骤具体介绍参照专栏十。
相关寄存器:
时基模块(TB):控制时序。
计数比较模块(CC):配置比较功能,产生比较事件,生成占空比。
动作模块(AQ):配置脉冲动作方式。
死区模块(DB):配置死区防止两个或多个开关管直通。
事件触发模块(ET):配置事件,得到事件次数,触发中断及各类功能。
其中设置发波方式为关键操作,一般AQ模块设置发波电平逻辑,DB模块设置死区兼同异步发波方式。
在AQ下有:
动作控制寄存器CTLA、CTLB
动作软件强制寄存器SFRC
动作连续软件强制寄存器 CSFRC
其中较为重要的是CTLA、CTLB寄存器,分别控制PWMA和PWMB的电平逻辑,两部分的功能一致,分别为CBD、CBU、CAD、CAU、PRD、ZRO。
CBD:CMPB向下计数触发
CBU:CMPB向上计数触发
CAD:CMPA向下计数触发
CAU:CMPA向上计数触发
PRD:计数值等于周期触发
ZRO:计数值等于零值触发
写入方式为00、01、10、11,分别对应不动作、清零、置一和翻转四种逻辑。
在DB下有:
死区控制寄存器CTL
死区上升沿延时寄存器RED
死区下降沿延时寄存器REF
CTL寄存器功能有HALFCYCLE、IN_MODE、POSEL、OUT_MODE。
HALFCYCLE:半周期时钟使能位,0为全周期时钟(TB,即TBCLK),1为半周期时钟(TB/2,即TBCLK*2),默认为0,不用时不做设置。
IN_MODE:死区模块输入控制
00:PWMA双边沿延时输入
01:PWMA上升沿延时输入,PWMB下降沿延时输入
10:PWMA下降沿延时输入,PWMB上升沿延时输入
11:PWMB双边沿延时输入
POSEL:极性控制
00:无翻转动作
01:PWMA翻转
10:PWMB翻转
11:全翻转
OUT_MODE:死区模块输出控制
00:ePWM不经过死区,直接传递信号
01:使能下降沿延时
10:使能上升沿延时
11:使能双边沿延时
RED与FED为10位寄存器,用以设置死区时间。
本篇以互补发波设置为例,占空比大小与PWMA输出一致,PWMA与PWMB输出互补,同时设置死区,保证一方导通瞬间另一方不会立刻导通。根据其逻辑,计数为零时PWMA电平应上升,到达比较值时应下降,要求PWMB只根据A翻转即可,因此AQ模块可设:ZRO=10,CAU=01或11;DB模块可设IN_MODE=00,POSEL=10,OUT_MODE=11,死区根据周期TB进行相应设置。
3.基本配置总结(ePWM2 100kHz带死区互补发波)
互补发波常用于各类交直流桥式电路的PWM调制中,其要求上下桥臂不能直通,因此需要设置死区以避免之。
(1)打开对应外设时钟
(2)IO功能配置
(3)中断功能设置
TB模块
CC模块
AQ模块
DB模块
ET模块
(4)使能时基计数时钟
(5)开启总中断,使能调试事件
(6)创建占空比设置函数
(7)调用占空比设置函数
4.实验结果验证
设置tbprd=600,占空比为duty=0.2,在示波器上观察波形如图11-1、11-2、11-3所示。其中绿色波形为PWM2A,紫色波形为PWM2B,整体周期为10μs,即100kHz,对应tbprd=600;单周期内PWM2A作用时间+死区时间为2μs,死区时间为400ns,当AB任意通道为高电平时另外一个必为低电平。


