打印

关于C2833x介绍EPWM

[复制链接]
12228|31
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
通常我们用的电压源型逆变器,是通过IGBT、MOSFET等开关管的切换,用单极性或者双极性的脉冲波形来模拟正弦波,如图所示:

这里的基本原则是等面积,即冲量不变的原理。在逆变器直流母线电压固定的情况下,脉冲波的幅值已经确定,使用改变占空比的方法,即对应改变输出基波的幅值。最常用的载波PWM的基本原理,一般都是三角形载波和调制波波形,如正弦波、马鞍波等进行比较,在相交点产生开关状态的切换。三角载波的频率一般在kHz基波,相当于时间域里的一个函数,一般用硬件电路来实现才能保证较好的精度和时域特性。
在TI C2000及类似的电机控制用的DSP出现之前,通常的DSP并不含有专门的PWM产生电路,此时载波的产生以及和调制波的比较工作一般由模拟电路、专门的PWM芯片或者CPLD/FPGA/ASIC/ASSP来实现;由模拟电路搭建的速度很高,但是存在温度漂移等问题;专用的PWM芯片一般只有2路左右的输出,若要控制一个三相逆变器需要多片配合,CPLD/FPGA相对灵活,但是在对成本敏感的系统中仍是不小的开支,ASIC/ASSP则在大公司的产品中才可能采用。TI的C2000系列带有至少12路的PWM输出,并且PWM是专用的外设,其输出PWM等功能并不需要消耗CPU资源,因此极大地方便了系统的设计。
从2407、2812到28335,PWM外设也从事件管理器EV演变到增强的PWM模块,即ePWM。EV中的六路PWM采用同一个载波,且实际只有三个独立,三个互补的输出;而在ePWM中,每个PWM管脚都可以独立地进行配置,当然也可以在同步状态下运行,增强了设计的灵活性。下面是ePWM的一个简要框图描述:

相关帖子

沙发
拿起书本|  楼主 | 2014-7-12 22:46 | 只看该作者
就每个ePWM来说,可以分为以下十个主要的功能模块,其功能示意图如图1所示

1. 时钟预定标:这个模块在28335大部分的外设中都有,其输入是SYSCLKOUT,预定标的作用是对SYSCLKOUT时钟信号进行分频,从而控制外设的时钟频率。其输出是TBCLK时钟信号,即每个ePWM模块的时间基准(time base,即TB),它被ePWM外设的所有子模块使用,控制计数器的更新速率。
2. 16位的时间基准计数器(TBCTR):16位的时基计数器,其输入有时基信号TBCLK,在ePWM之间用来同步的EPWMxSYNCI 信号,周期寄存器的值(即周期值),其输出有两个,一个是EPWMxSYNCO用来输出同步信号,另一个则是计数值与周期值比较的结果,并送入逻辑处理模块。
3. 比较逻辑处理:处理输入的比较结果,并生成相应的逻辑状态。
4. 动作限定模块(action qualifier):判断逻辑的转换是否满足要求,并转换为对应的PWM开关状态,通常为EPWMxA和EPWMxB。
5. 死区模块:对PWM的开关变化加入死区时间,以防止变流器上下桥臂的开关管过流击穿损耗。死区通常有单边死区和双边死区,单边死区即只对开通开关管的脉冲施加死区,双边死区则对所有的脉冲变化加入死区时间,即延时开通,提前关断,这些都可以在死区模块的寄存器中进行配置。
6. PWM斩波环节(chopper):这部分是可选的,通常用来产生高频PWM载波信号,在一般的逆变器中不需要用到,在高频的开关数字电源中作用很大。
7. 事件触发模块(trip zone):主要是用来处理外部返回的故障信号的,例如在变频器过流时,保护电路返回的故障信号反馈到TZ模块,此时强制PWM管脚为高阻状态,则停止输出,并且可以运行设计的保护程序等。

在ePWM模块中,定时/周期操作经常被广泛使用。例如,设定一个定时周期,然后每次计数到周期值时触发一些特定的事件;或者由某个事件触发计数操作,用来捕获某个事件的时间、脉冲个数等。ePWM的周期由时间基准周期寄存器和时间基准计数器的运行方式共同决定。时间基准计数器具有三种运行方式:
1. 连续增计数: 对应下图中的第一种模式,是一种非对称的波形。在该模式下,时间基准计数器从零开始增加,直到等于TBPRD的值,然后计数器复位到0,重复上述过程。
2. 连续减计数:对应下图中的第二种模式,同样也是一种非对称的波形。在该模式下,钟基准计数器从TBPRD始减小,直到等于0,然后计数器复位到TBPRD,重复上述过程。
3. 连续增减计数:对应下图中的第三种模式,是一种对称的波形。在连续增减计数模式下,时钟基准计数器从零开始增加,直到等于TBPRD的值,然后开始减计数,直到等于0,然后重复上述过程。这种波形的形状是等腰三角形,在使用载波方法实现PWM波形输出时最常用到。

图中,三角形的顶点的纵坐标值一般为周期值,横坐标值则代表一个三角波持续多少个周期时间。时间基准寄存器的值可被立即刷新,或者在本次计数结束之后再刷新,由TBPRD寄存器的值决定:.
1. 如果TBCTL[PRDLD]=0,使能映射寄存器,任何读写操作将针对映射寄存器,在时间基准计数器归零时,将映射寄存器中内容装载到当前寄存器
2. 如果TBCTL[PRDLD]=1,禁止映射寄存器,任何读写操作将直接作用于当前寄存器。

28335上的ePWM引入了很多增强的特性,从而使得我们可以更加灵活的进行组合配置,产生更复杂的PWM控制逻辑。例如,引入了基于事件基准的相位寄存器TBPHS。在对各个PWM进行单独控制的时候,TBPHS的值并无作用,但是,如果我们想把各个ePWM的三角形载波之间建立角度上的联系,则我们可以使用TBPHS寄存器,例如下面的例子:

多个ePWM模块之间可以存在一个精确的相位差,在一些特殊的电力电子拓扑结构中特别有用。例如在大功率的应用中,对于移相变压器、多绕组变压器等,其输入有多个整流单元,相位互差特定的角度,此时我们就可以使用TBPHS寄存器来调整它们之间载波的相位差;而且因为是相对于同一个时间基准来计数,其精度也较高。在这种使用情况下,一般将一相ePWM做为主模块,其时钟信号作为同步源,其余几相ePWM做为从模块,其时钟信号使用同步源与TBPHS的和或者差;当然,主同步信号也可以使用外部的时钟信号,这是ePWM的灵活之处所在。
TBPHS的计算方法为:
以周期值TBPRD = 600为例,则在TBPHS = 200时,相位差为:
200/600 X 360° = 120°
每当计数值=周期值时,主模块产生同步信号,则TBPHS = 200就被加载到从模块的计数寄存器TBCTR中,从而使得从模块的计数总是超前主模块120°。使用这种方法,即使是变频的情况,只要知道具体的频率,仍然可以实现固定角度的相位差(当然最多会有一个TBPRD时间的延时)。

使用特权

评论回复
板凳
拿起书本|  楼主 | 2014-7-12 22:47 | 只看该作者
ePWM的时基子模块有5种寄存器,分别为

前两个寄存器包含很多的控制位,所以可以对其中的位进行独立的读/写操作,而后三个寄存器中的内容只代表一个数值,所以不存在单独的位读/写操作。想用好ePWM的强大功能,首先要正确配置各个控制寄存器的功能。下面首先描述TBCTL各个位的含义。

15-14:FREE_SOFT描述了仿真器控制DSP芯片的情况下,仿真暂停时ePWM的运行方式(例如在CCS里面点击了一下halt按钮)。
00:在下次时间基准计数器增或减后停止
01:当计数器完成一个周期后停止:
对于増计数,当计数值TBCTR=周期值TBPRD时停止
对于减计数,当TBCTR=0x0000时停止
对于增减计数,当TBCTR=0x0000时停止
10或者11:自由运行,即不受仿真暂停状态的影响,即使是在CCS里面按下了暂停,ePWM的相关功能仍然在运行。
13:PHSDIR 相位方向控制位,用来决定同步后增减计数器的计数方向,在増计数或减计数模式下此位被忽略
0:同步事件发生后,减计数
1:同步事件发生器,増计数
12~10:CLKDIV 基准时钟分频位,TBCLK=SYSCLKOUT/(CLKDIV×HSPCLKDIV)
000~111(k):分频系数为 2的k次方
9~7 HSPCLKDIV 高速基准时钟分频位,TBCLK=SYSCLKOUT/(CLKDIV×HSPCLKDIV)
000:分频系数为1
001~111(k):分频系数为2×k

使用特权

评论回复
地板
拿起书本|  楼主 | 2014-7-12 22:49 | 只看该作者
时间基准控制控制TBCTL寄存器的低六位是

其含义分别为:
6:SWFSYNC,软件强制同步脉冲
0:写0无反应;读,将始终返回0
1:写1将强制产生一次同步脉冲信号
5~4:SYNCOSEL,同步信号输出选择,用于选择EPWMxSYNCO信号的输出源
00:EPWMxSYNC
01:CTR=ZERO,时间基准计数器TBCTR=0
10:CTR=CMPB,时间基准计数器TBCTR=CMPB
11:禁止输出EPWMxSYNCO信号
3:PRDLD,决定周期寄存器TBPRD映射单元何时向当前单元装载数据
0:使能映射寄存器;此时,对周期寄存器TBPRD的读写写直接表现为对映射寄存器的读写;然后当CTR=ZERO时,将映射寄存器中的数据装载到当前寄存器
1:使用立即模式(immediate mode),禁止使用映射寄存器
2:PHSEN,相位使能位
0:禁止TBCTR加载相位寄存器TBPHS中的值
1:当同步信号EPWMxSYNCI输入或当软件强制同步事件发生时,TBCTR加载
相位寄存器TBPHS中的值
1~0:CTRMODE,计数模式选择
00:増计数
01:减计数
10:增减计数
11:停止计数器相关操作(默认)
在对TBCTL进行操作之后,看一下时基状态寄存器(TBSTS)的内容。比起CPU状态寄存器ST的复杂程度,TBSTS的内容在目前要简单的多,16个状态位中前13个全是保留位(后续升级可以使用):
2:CTRMAX 用于判断TBCTR是否达到过最大值0xFFFF
0:读,返回0表明TBCTR从未到达过0xFFFF,写0无反应
1:读,返回1表明TBCTR到达过0xFFFF,写1将清除相应锁存事件
1:SYNCI 用于判断同步信号的输入锁存状态
0:读,返回0表明从未发生过同步事件,写0无反应
1:读,返回1表明发生过同步事件,写1将清除相应的锁存事件
0:CTRDIR 时间基准计数器方向判断位,在复位后由于计数器默认为禁止状态,所以此位无意义,当通过TBCTL[CTRMODE]设定好计数器模式后,此为才有意义
0:计数器正在减计数
1:计数器正在増计数

使用特权

评论回复
5
拿起书本|  楼主 | 2014-7-12 22:51 | 只看该作者
ePWM时基子模块除了控制寄存器TBCTL和状态寄存器TBSTS包含单独的位的控制以外,其余的寄存器都不包含位控制,分别是相位寄存器TBPHS、计数寄存器器TBCTR和周期寄存器TBPRD。时基子模块的主要目的,是为其它模块服务的,例如对于ePWM比较比模块,其比较寄存器的值和TBCTR或者TBPRD等进行比较,就可以产生相应的逻辑控制,触发查询或者中断事件。ePWM比较功能子模块主要包含以下的功能:

比较功能子模块主要通过两个寄存器产生两路独立的比较事件:
(1) CTR=CMPA:时间基准计数器的值等于比较寄存器A的值(TBCTR=CMPA)
(2) CTR=CMPB:时间基准计数器的值等于比较寄存器B的值(TBCTR=CMPB)
对于增计数和减计数模式,比较事件在一个计数周期内出现一次。对于增减计数模式,如果比较值在0x0000~TBPRD之间,则比较事件在一个周期内出现两次,如果比较值为0x0000或TBPRD,则比较事件在一个周期内出现一次。这些产生的事件都被送到动作限定子模块AQ中,用来产生需要的动作,例如PWM信号的翻转等。
每路ePWM的比较功能子模块在控制上相对而言比较容易,包含了两个存储比较值的寄存器即EPwmxRegs.CMPA和EPwmxRegs.CMPB,CMPx寄存器中的值始终与时间基准计数器TBCTR中的值做比较,当两者相等时,比较功能子模块将产生一次“TBCTR=CMPB”事件,并输送到功能限定子模块AQ中,从而产生相应的动作。另外有一个包含位控制的控制寄存器EPwmxRegs.CMPCTL.all,其各位的定义为

15~10: 目前用作保留位
9: SHDWBFULL,即CMPB映射寄存器满状态标志位
       0:CMPB映射寄存器未满
       1:CMPB映射寄存器满,此时CPU的写操作将会覆盖原来的值
8: SHDWAFULL    CMPA映射寄存器满状态标志位
       0:CMPA映射寄存器未满
       1:CMPA映射寄存器满,此时CPU的写操作将会覆盖原来的值
7: 目前用作保留位
6: SHDWBMODE  CMPB寄存器工作模式选择
       0:使用映射模式,读写操作将直接作用于CMPB映射寄存器
       1:使用立即模式,读写操作将直接作用于CMPB当前寄存器
5: 目前用作保留位
4: SHDWAMODE  CMPA寄存器工作模式选择
       0:使用映射模式,读写操作将直接作用于CMPA映射寄存器
       1:使用立即模式,读写操作将直接作用于CMPA当前寄存器
3~2: LOADBMODE      决定CMPB映射寄存器何时向当前寄存器装载数据
       00:在TBCTR=0时装载
       01:在TBCTR=TBPRD时装载
       10:既在TBCTR=0时装载,也在TBCTR=TBPRD时装载
       11:禁止装载
1~0: LOADAMODE,决定CMPA映射寄存器何时向当前寄存器装载数据CMPA及CMPB寄存器都有相应的映射单元,分别通过CMPCTL[SHDWAMODE]位及CMPCTL[SHDWBMODE]位控制,上次已经提到。通过对相应的控制位清零可以使能比较寄存器的映射单元,默认情况下映射寄存器是使能的。

使用特权

评论回复
6
拿起书本|  楼主 | 2014-7-12 22:52 | 只看该作者
在ePWM的比较功能子模块完成相关的比较事件之后,它的输出将由功能限定子模块AQ来处理,它是在产生PWM波形中很重要的环节,用来决定在特定事件发生时刻产生何种动作,从而在EPWMxA及EPWMxB引脚产生需要的PWM脉冲;如果设置不正确,将直接导致错误的PWM状态翻转,轻则变频器输出错误状态以至于不能正常工作,重则直接导致过流停机。AQ模块的输入与寄存器归类如下

使用特权

评论回复
7
拿起书本|  楼主 | 2014-7-12 22:55 | 只看该作者
对EPWMxA和EPWMxB的动作设定是完全独立的,任何一个事件都可以对EPWMxA或EPWMxB中的任何一个产生任何动作。例如,CTR=CMPA和CTR=CMPB这两个事件都可以控制EPWMxA产生相应的动作,也都可以用来控制EPWMxB产生相应的动作。
为了简便起见,采用下图所示的图形来表示AQ模块中EPWMxA/xB的各种动作。

ePWM动作限定子模块AQ有4个寄存器,分别是两个控制寄存器AQCTLA\B、软件强制寄存器AQSFRC、连续软件强制寄存器AQCSFRC。AQ控制寄存器的A、B的位的含义一样,区别只是在于分别按照EPWMxA、EPWMxB的关系对应,它们的含义为:

ePWM动作限定子模块AQ除了两个控制寄存器之外,还有软件强制寄存器AQSFRC、连续软件强制寄存器AQCSFRC。名字里只有一个“连续”的差别,那它们都是实际功能有什么区别呢?先看寄存器内容:
软件强制寄存器AQSFR各位的含义是

使用特权

评论回复
8
拿起书本|  楼主 | 2014-7-12 22:56 | 只看该作者
而连续软件强制寄存器AQCSFRC各位的含义是:

可以看出,AQSFR在特定时间发生时,对PWM管脚的状态变化是一次性的,而AQCSFRC是连续强制的。几年前使用ePWM的时候,一开始没有注意到“连续”这个词,结果怎么也无法根据特定事件来连续保持强制的ePWM管脚状态。

使用特权

评论回复
9
拿起书本|  楼主 | 2014-7-12 22:56 | 只看该作者
在一些与电机控制有关的芯片发布会上,厂商在提到与PWM功能相关的特性时,往往有个指标叫“PWM分辨率”。初学者听到之后可能会一头雾水:PWM就是电平的高低切换,怎么会有个分辨率的指标呢?
从数字实现的角度来看,这个就不难理解了。上次提到PWM调制中的载波是由ePWM里的硬件电路产生的,但它不是纯粹的模拟电路(模拟、连续信号),而是由多个高分辨率的计数器来计数产生“三角波”的。PWM的分辨率,与A/D采样电路的分辨率是类似的概念,即一个信号是由多少位的数字信号来逼近的。28335的ePWM的分辨率是10位的,这就意味着从0计数到计满16位的ePWM周期寄存器(65535),其分辨率是:
非对称的PWM波形:10位的分辨率意味着一个信号由2^10=1024位来逼近65536个数,即计数器的最小分辨率是65536/1024=64个数。
对称的PWM波形:分辨率只有非对称波形的一半,即9位,意味着由2^9=1512位来逼近65536个数,即计数器的最小分辨率是65536/512=128个数。
在理解了PWM的基本方法,确定了PWM的载波频率(周期值)之后,就可以根据需要的占空比来计算出ePWM比较寄存器中的值了。在每个周期中,只有当三角波与比较器中的值匹配之后,才会产生相应的比较事件。非对称的PWM和对称的PWM波形的比较值的计算方法相同,都是:
ePWM比较寄存器器的值=(100%-占空比)*周期寄存器的值.

使用特权

评论回复
10
vaingrass| | 2014-7-13 17:01 | 只看该作者
学习了!

使用特权

评论回复
11
teabottle| | 2014-7-13 17:18 | 只看该作者
学习了 经常能看到楼主发好的帖子

使用特权

评论回复
12
596142041| | 2014-7-13 19:42 | 只看该作者
建议楼主做一个PDF文档发出来就更好了,对于我们新手来说就是最大的福音,谢谢楼主了

使用特权

评论回复
13
waitingf| | 2014-7-14 07:58 | 只看该作者
很详细 不错的分享

使用特权

评论回复
14
someonewho| | 2014-7-14 08:03 | 只看该作者
了解一下

使用特权

评论回复
15
justbybing| | 2014-7-14 08:19 | 只看该作者
不错呀 值得学习

使用特权

评论回复
16
specialfrin| | 2014-7-14 08:23 | 只看该作者
原来是这个原理,明白了

使用特权

评论回复
17
XINGFUDEWUNAI| | 2014-11-11 17:30 | 只看该作者
楼主厉害,学习啦!

使用特权

评论回复
18
jxmzzr| | 2014-11-12 15:16 | 只看该作者
学习C2833x的EPWM,认真看过楼主提供的资料了,得好好消化消化了。感谢分享。

使用特权

评论回复
19
安静的浮夸| | 2014-12-9 19:56 | 只看该作者
现在正在学习DSP,非常感谢楼主无私提供的资料。

使用特权

评论回复
20
bxz13| | 2015-1-27 19:08 | 只看该作者
看了您的帖子收获很多,想加您个qq好友,您看方便吗?718047071   谢谢

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:好好学习,天天向上!

519

主题

4195

帖子

31

粉丝