强型脉冲宽度调制器,是电源系统中重要的控制单元。在开关电源控制环路中,PWM控制器将数字信号转化为占空比(模拟值),进行MOSFET控制,因此PWM也被称为功率数模转换器(Power DAC)。
TI的TMS320F28335内置了6路ePWM模块,每路ePWM模块有两路输出,即EPWMxA和EPWMxB。
每个ePWM模块相互独立,在一些多管驱动的应用场景,有时需要调用多个ePWM模块,且各个模块的时序需要同步。EPWMxSYNCI和EPWMxSYNCO分别为同步信号的输入和输出信号。同步输入EPWMxSYNCI只作用于ePWM1模块,输出EPWMxSYNCO作用于其他ePWM模块。
每个ePWM模块可以触发PIE中断和ADC转换启动(EPWMxSOCA和EPWMxSOCB)。
每路ePWM模块包含7个子模块,分别为:
- 时基模块(Time-base module,TB)
- 计数比较器模块(Counter-compare module,CC)
- 动作模块(Action-qualifier module,AQ)
- 死区模块(Dead-band module,DB)
- PWM斩波模块(PWM-chopper module,PC)
- 事件触发模块(Event-trigger module,ET)
- 跳闸模块(Trip-zone module,TZ)
图 ePWM子模块
各个子模块连续工作,产生用户需求的PWM波形,驱动开关管,控制开关电路。时基模块负责产生PWM时钟信号,设定PWM的频率。时基时钟在计数过程中,与用户设定的计数比较值作比较,利用计数比较模块输出相应的比较触发信号。这些触发信号将作用于动作模块,进行置一或置零等操作,形成初步的PWM波形。
在某些应用场景,需要设置互补且具有死区的PWM波形。死区模块通过对动作模块输出的PWM波形进行上升沿延时或下降沿延时,或翻转等操作,形成该应用场景下的波形。
另外,PWM斩波,外部事件触发,错误状态保护等功能适用于不同的应用场景。这些模块均可以禁止或使能。
1. 时基模块TB
时基模块负责ePWM的时序控制,如控制PWM波的频率,同步各个ePWM模块时序等等。
时基模块会产生三个触发信号作用于动作模块:
- CTR = PRD:时基计数器计数到周期值时(即TBCTR = TBPRD),输出该信号;
- CTR = 0:时基计数器计数到0时(即TBCTR = 0x0000),输出该信号;
- CTR_Dir: 时基计数器在加计数时,该信号为高电平;时基计数器在减计数时,该信号为低电平。
图 时基模块
1.1 PWM的频率控制
PWM的频率由时基周期寄存器(TBPRD)设置。时基计数器通过对周期数值的加减计数(Up-Down-Count)、加计数(Up-Count)和减计数(Down-Count)计算PWM频率。下面以TBPRD=4为例说明PWM周期TPWM和频率FPWM与时基周期TBPRD和时基时钟TBCLK的关系。
1.1.1 加计数(Up-Count)
该模式下,时基计数器从0加计数到周期值(TBPRD)。当计数到达周期值时,计数器从0重新开始加计数。
图 加计数模式
加计数方式下,PWM的周期TPWM = (TBPRD+1) / TBCLK; PWM的频率FPWM = 1 / TPWM。
CCS中寄存器配置代码如下:
1.1.2 减计数(Down-Count)
该模式下,时基计数器从周期值(TBPRD)减计数到0。当计数到达0时,计数器从周期值(TBPRD)重新开始减计数。
图 减计数模式
减加计数方式下,PWM的周期TPWM = (TBPRD+1) / TBCLK; PWM的频率FPWM = 1 / TPWM。
CCS中寄存器配置方式如下:
1.1.3 加减计数(Up-Down-Count)
该模式下,时基计数器从0加计数到周期值(TBPRD),然后再减计数到0,并重复该计数方式。
图 加减计数模式
加减计数方式下,PWM的周期TPWM = 2 x TBPRD / TBCLK; PWM的频率FPWM = 1 / TPWM。
CCS中寄存器配置代码如下:
1.2 时基周期的更新方式 - 影子寄存器
时基周期寄存器具有一个影子寄存器(Shadow Register)。与影子寄存器相对应的,是活动寄存器(ActiveRegister),它是直接控制硬件的寄存器。
影子寄存器起到了缓冲器的作用,帮助活动寄存器临时存放数据,且不能直接控制硬件。影子寄存器的目的是为了防止软件配置不同步导致的系统崩溃。
在CCS中,影子寄存器的配置代码如下:
2. 计数比较模块CC
计数比较模块负责与计数比较信号A(CMPA)和计数比较信号B(CMPB)作比较,并输出比较后的事件触发信号CTR = CMPA和CTR = CMPB。
- CTR = CMPA: 时基计数器的数值等于计数比较信号CMPA(即TBCTR = CMPA)
- CTR = CMPB: 时基计数器的数值等于计数比较信号CMPB(即TBCTR = CMPB)
图 计数比较模块
2.1 不同计数模式的输出信号
上文提到时基计数器有三种计数模式。在这三种计数模式下,若有同步触发信号输入EPWMxSYNCI,则时基计数器会加载相位值TBPHS后重新计数。
相位加载在CCS中寄存器配置代码如下:
2.1.1 加计数模式
时基计数器处于加减计数模式。在计数过程中,当计数器等于比较信号数值时,计数比较器分别输出CTR = CMPA和CTR = CMPB信号。
当时基计数器有同步触发信号EPWMxSYNCI输入时,时基计数器加载相位值TBPHS并进行加计数。
图 加计数模式下的比较信号
2.1.2 减计数模式
时基计数器处于加减计数模式。在计数过程中,当计数器等于比较信号数值时,计数比较器分别输出CTR = CMPA和CTR = CMPB信号。
当时基计数器有同步触发信号EPWMxSYNCI输入时,时基计数器加载相位值TBPHS并进行减计数。
图 减计数模式下的比较信号
2.1.3 加减计数模式,同步触发后减计数
时基计数器处于加减计数模式。在计数过程中,当计数器等于比较信号数值时,计数比较器分别输出CTR = CMPA和CTR = CMPB信号。
当时基计数器有同步触发信号EPWMxSYNCI输入时,时基计数器加载相位值TBPHS并进行减计数。
图 加减计数模式,同步触发后减计数
2.1.4 加减计数模式,同步触发后加计数
时基计数器处于加减计数模式。在计数过程中,当计数器等于比较信号数值时,计数比较器分别输出CTR = CMPA和CTR = CMPB信号。
当时基计数器有同步触发信号EPWMxSYNCI输入时,时基计数器加载相位值TBPHS并进行加计数。
图 加减计数模式,同步触发后加计数
3. 动作模块AQ
根据时基模块和计数比较模块输出的事件触发信号,动作模块输出相应的PWM波形EPWMxA和EPWMxB。上文提到这些触发信号分别为:
- CTR = PRD:时基计数器的数值等于周期值(即TBCTR= TBPRD)
- CTR = Zero:时基计数器的数值等于0(TBCTR = 0x0000)
- CTR = CMPA:时基计数器的数值等于计数比较值CMPA(即TBCTR = CMPA)
- CTR = CMPB: 时基计数器的数值等于计数比较值CMPB(即TBCTR = CMPB)
图 动作模块
3.1 不同计数模式的PWM波形
动作模块在接收到事件触发信号后,决定EPWMxA和EPWMxB以何种方式输出。如下是四种输出方式:
- 置一(Set High):EPWMxA和EPWMxB输出高电平;
- 清零(Clear Low):EPWMxA和EPWMxB输出低电平;
- 切换(Toggle):如果当前EPWMxA或EPWMxB为高电平,则在接收到事件触发信号后,输出切换至低电平;反之,输出切换至高电平;
- 无响应(Do Nothing):在接收到事件触发后,不对EPWMxA和EPWMxB做任何操作,但是仍然可以触发PIE中断和ADC转换;
这四种输出方式可以用符号的形式表示:
每个符号的上方表示触发事件,下方表示触发动作。例如“CA”表示“时基计数器数值等于CMPA(TBCTR = CMPA)”;“下箭头”表示“清零(Clear Low)”。
则符号表示“当时基计数器数值等于CMPA时,输出PWM波形为低电平”。
图 动作模块的触发事件和触发动作
3.1.1 加计数模式下的PWM输出
该模式下PWM周期 = (TBPRD+1) x TTBCLK。PWMxA和PWMxB均为高电平有效(Active High),即输出占空比与CMPA和CMPB成正比。PWMxA和PWMxB分别由CMPA和CMPB设置,当时基计数器数值等于CMPA或CMPB时,PWM波形清零(Clear Low)。
图 加计数模式,高电平有效
CCS的代码配置方式如下:
3.1.2 加减计数模式下的PWM输出
该模式下PWM周期 = 2 x TBPRD x TTBCLK。PWMxA和PWMxB均为低电平有效(Active High),即输出占空比与CMPA和CMPB成反比。PWMxA和PWMxB分别由CMPA和CMPB设置,当时基计数器数值等于CMPA或CMPB时,PWM波形清零(Clear Low)。
图 加减计数模式,低电平有效
CCS的寄存器配置代码如下:
4. 死区生成模块DB
在许多电源拓扑的控制中,都会涉及到死区(Dead Band)。例如在全桥或半桥控制中,同一桥臂的上下管需要进行死区控制,以保证上下管互补导通,防止上下管同时导通导致短路。
死区生成模块以动作模块的EPWMxA和EPWMxB为输入,生成具有死区的PWM信号对。
图 死区生成模块
4.1 死区生成的实现方式
死区生成模块由三个选择开关和两个延时器组成。两个延时器分别为上升沿延时和下降沿延时。
三个选择分别为开关:
- 输入信号选择:死区生成模块可以选择EPWMxA或EPWMxB之一或全部作为其输入信号源,选择开关为S4和S5,由寄存器DBCTL[IN_MODE]控制。
- 极性选择:用于决定信号是否需要反转极性,选择开关为S2和S3,由寄存器DBCTL[POLSEL]控制。
- 输出模式选择:用于决定输出信号是由输入信号直接输出,或是经过延时或极性反转后输出。选择开关为S0和S1,由寄存器DBCTL[OUT_MODE]控制。
不同的选择开关进行排列组合,有七种典型的配置模式:
模式1:绕过输入信号选择和极性选择,直接输出输入信号。
模式2 - 5:典型的死区和极性配置。
分别为上升沿延时RED,下降沿延时FED,互补且高电平有效AHC,互补且低电平有效ALC,高电平有效AH,低电平有效AL。
图 典型的死区和极性配置
模式6:绕过上升沿延时。
模式7:绕过下降沿延时。
下表是几种模式下的开关控制方式
表 7种控制模式的开关配置
CCS中寄存器配置代码如下:
5. PWM斩波模块PC
在开关电源驱动控制中,隔离驱动的一种控制方式为变压器驱动。斩波模块主要应用在基于脉冲变压器驱动的PWM控制。斩波模块的为可选模块,不需要该功能时,可以禁用斩波模块直接输出。
图 PWM斩波模块
5.1 斩波模块的实现方式
斩波模块包含一次脉冲OSHT和载波时钟PSCLK。一次脉冲提供较宽的导通时间,确保驱动变压器导通;载波脉冲负责PWM斩波,维持驱动变压器的导通。
斩波模块的输出波形是由输入的PWM波形和载波时钟PSCLK做与运算,然后再和一次脉冲OSHT做或运算得出。下图时斩波模块的输入和输出波形:
图 斩波模块的输入和输出波形
6.跳闸模块TZ
跳闸模块的输入为外部的GPIO复用引脚。跳闸模块起到了保险开关的作用,当有外部错误信号产生时,跳闸模块可以快速响应。
图 跳闸模块
在出现错误状态时,跳闸模块的响应方式有如下四种:
- PWM输出高电平
- PWM输出低电平
- 高阻态
- 无操作
6.1 跳闸模块的实现方式
跳闸模块支持周期错误触发CBC(Cycle-by-Cycle)和一次错误触发OSHT(One-Shot)。且每一次错误都可以触发中断。
周期错误触发:当周期错误事件出现时,TZCTL寄存器中定义的响应方式会立刻作用到EPWMxA和EPWMxB。周期错误触发标志位TZFLG[CBC]被置一。若使能了中断,则产生EPWMx_TINT中断。
一次错误触发:当一次错误事件出现时,TZCTL寄存器中定义的响应方式会立刻作用到EPWMxA和EPWMxB。周期错误触发标志位TZFLG[OSHT]被置一。若使能了中断,则产生EPWMx_TINT中断。
CCS代码示例如下:
7. 事件触发模块ET
事件触发模块的输入为时基模块或计数比较器模块产生的事件触发信号。该模块可以触发PWM中断(EPWMxINT)或ADC转换的启动信号(EPWMxSOCA和EMPWMxSOCB)。
图 事件触发模块
7.1 事件触发模块的实现方式
事件触发模块可以设置不同数量的触发事件,即
- 单个事件触发
- 每两个事件触发
- 每三个事件触发
中断信号EPWMxINT与PIE中断向量表连接,ADC转换启动信号EPWMxSOCA和EPWMxSOCB与ADC模块连接。
CCS中寄存器配置代码如下:
[注] 参考文献:TMS320x2833x Technical Reference Manual
详细代码示例可参考TI ControlSUITE
说明:本文来源网络;文中观点仅供分享交流,不代表本***立场,转载请注明出处,如涉及版权等问题,请您告知,我们将及时处理。