F28335的ePWM模块——学习笔记
标签: DSP
简介
总体结构
时钟信号经时基模块TB 产生时基信号,可以设定PWM 波形的周期,通过计数比较模块CC,可以对PWM 波形的脉宽进行配置,再由动作模块AQ 限定PWM 输出状态即脉冲波形的起落,经过死区模块DB,可以将同组内的互补输出PWM 波形进行边沿延迟,接着可选择是否进入PWM 斩波模块,进行第一个脉冲宽度设置和后级脉冲占空比调整以适应基于脉冲变压器的门级驱动控制,若PWM 波形输出后,功率器件有错误响应,可以将错误信号引入错误联防模块,从而强制复位PWM 的输出。也可以通过事件触发模块配置触发一些事件,如ADC 转换开始。
F28335有6对ePWM模块,每一个模块又分为ePWMxA和ePWMxB两路,因此总共有12路ePWM信号输出;同时,还有6个APWM模块,是通过CAP模块扩展配置。一共加起来就是12路普通PWM输出和6路高精度PWM输出。
ePWM模块所用到的主要信号
-
PWM输出信号EPWMxA,EPWMxB. 通过GPIO口输送到芯片外部。
这一对PWM输出,可以配置成三种输出:两路独立的单边沿PWM输出
两路独立的但互相对称的双边沿PWM输出
一对双边沿非对称的PWM输出 -
外部触发信号TZ1-TZ6,低电平有效;用来表明外部错误或其他事件
-
时钟基准同步信号输入EPWMxSYNCI以及输出EPWMxSYNCO;同步时钟信号将ePWM 各个模块的所有单元联系在一起,每个ePWM 模块都可以根据需要被配置为使用同步信号或忽略它的同步输入成为独立单元。时钟同步输入和输出信号仅由ePWM1 引脚产生,ePWM1 的同步输出也与第一个捕获模块(eCAP1)的同步信号相连接。
-
EPWMxSOCA、EPWMxSOCB:ADC启动信号。每个ePWM模块都可以产生两路ADC启动信号
-
外设总线。32位的外设总线用来对ePWM模块寄存器进行读写操作。
ePWM模块构成与工作原理
每个ePWM模块包含7个子模块
1. 时间基准子模块TB(Time-Base)
TB模块的主要作用是定时,配置不同的计数模式与周期寄存器的值,确定产生的PWM波的周期。
为输出PWM产生始终基准TBCLK,配置PWM的时钟基准计数器TBCTR,设置计数器的计数模式,配置硬件或软件同步时钟基准计数器,确定ePWM同步信号输出源;
TB模块的主要寄存器有:
周期寄存器TBPRD、相位寄存器TBPHS、计数器TBCTR、状态寄存器TBSTS和控制寄存器TBCLT。
时基模块的关键信号
ePWMxSYNCI: 时基同步信号输入
ePWMxSYNCO:时基同步信号输出
CTR = PRD :时间基准计数器的值等于设定的周期
CTR = ZERO : 时基计数器等于0
CTR = CMPB :时基计数器等于比较寄存器
CTR_dir : 时基计数方向, 高电平向上计数,低电平向下计数
TBCLK : 时基时钟信号,确定时基计数器的增减的速率
ePWM的周期和频率是由时基周期寄存器值(TBPRD) 和 计数模式(TBCTRL)【增计数、减计数、增减计数】共同决定。
定时器的时间基准TBCLK为SYSCLKOUT经过TBCTL[HSPCLKDIV]和TBCTL[CLKDIV]进行分频后给出。
https://blog.csdn.net/c007106333/article/details/124098140?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166452319516800184151268%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=166452319516800184151268&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-1-124098140-null-null.142v51pc_rank_34_2,201v3control&utm_term=28335epwm%E9%A2%91%E7%8E%87%E8%AE%BE%E7%BD%AE&spm=1018.2226.3001.4187
2. 计数比较子模块CC(Counter-Compare)
CC模块主要由两个比较寄存器CMPA/CMPB和比较逻辑单元组成。当TB模块的计数器CTR计数到与比较寄存器CMPA/CMPB相等时,动作限定子模块AQ就会动作,产生电平变化,即可以在我们需要的时刻对电平进行置高或者置低,主要用于设定不同的占空比。
确定PWM占空比,以及ePWM输出高低电平切换时间;CMPA 决定 ePWMxA 的占空比,CMPB 决定 ePWMxB的占空比
> CC模块的主要寄存器有:
比较寄存器CMPA/CMPB、控制寄存器CMPCTL。
3. 动作限定子模块AQ(Action-Qualifier)
AQ模块的功能是响应匹配事件改变引脚电平,在接收TB模块和CC模块的匹配事件后(匹配事件:TB模块周期匹配、TB下溢匹配、CC模块加减匹配),可以设置产生四种不同的动作:置位、清除、翻转和无动作。
确定计数器和比较寄存器匹配时产生动作,即ePWM 高低电平的切换;
AQ模块的主要寄存器有:
动作限定寄存器AQCTLA、软件强制动作限定控制寄存器AQCSFRC、软件强制连续动作限定控制寄存器AQCSFRC。
4. 死区控制子模块DB(Dead-Band Generator)
在电力电子应用中,由于开关器件结电容等存在,开关之间存在过度过程,为了避免发生直通等故障,需要对PWM波加入死区。采用CC模块和AQ模块也可以设置死区,但比较麻烦,因此DB模块可以更加直接简单的设置死区。PWM的上升沿和下降沿延时可以通过寄存器DBRED(上升沿延时)和DBFED(下降沿延时)设置决定。
配置输出PWM上升沿或下降沿延时时间,也可以将A、B两通道配置成互补模式,死区时间可以编程确定;
- Dead Zone(死区)
PWM输出时的Dead Zone(死区)作用是在电平翻转时插入一个时间间隔,避免关闭前一个设备和打开后一个设备时因为开关速度的问题出现同时开启状态而增加负荷的情况(在没有彻底关闭前打开了后一个设备),尤其是电流过大时容易造成短路等损坏设备
DB模块主要寄存器:
数据寄存器DBRED/DBFED、控制寄存器DBCTL。
5. PWM斩波子模块PC(PWM-Chopper)
PC模块允许高频载波信号调制由动作限定器AQ和DB模块生成的PWM波,主要用于脉冲变压器栅极驱动器控制的功率开关元件系统中。
产生高频PWM载波信号;
PC模块只有一个寄存器:PCCTL。
6. 故障捕获子模块TZ(Trip-Zone)
在PWM控制中,可能会发生一些故障,ePWM模块可以通知配置响应来自GPIO的故障信号(TZ1~TZ6),改变输出状态,实现保护的功能。一般来说,故障发生时,可以配置EPWM输出为强制高电平、强制低电平、高阻态或无动作。
当外部有错误信号产生时,对PWM输出进行相应处理,比如全置高,或拉低,或置为高阻态,从而起到保护作用。当然该功能也可以通过软件强制产生;
使能ePWM中断,使能ePWM触发ADC采样,确定事件产生触发的速度和清除相关事件标志位。
TZ模块的主要寄存器:选择寄存器TZSEL、控制寄存器TZCTL、中断使能寄存器TZEINT、中断标志寄存器TZFLG、中断标志清除寄存器TZCLR和中断强制寄存器TZFRC。
7. 事件触发子模块ET(Event-Trigger)
ET模块可以根据TB模块和CC模块生成的事件,申请中断和触发ADC的采样与转换。
ET模块的主要寄存器:
选择寄存器ETSEL、预定标寄存器ETPS、标志寄存器ETFLG、清除寄存器ETCLR和强制寄存器ETFRC。
在F28335的应用中最主要的还是这七个模块的配置。PWM最基本的属性周期频率,幅值,占空比,死区时间,故障保护还有与其他ePWM模块的配合,都是通过配置以上模块中的寄存器来实现的
一个例程
以下代码的功能是在ePWMA 即GPIO0口输出一个周期为100us,占空比为50%的PWM波。
#include "DSP2833x_Device.h"
#include "DSP2833x_Examples.h"
#if