2DSP28335ePWM模块.docx
- 文档编号:10669521
- 上传时间:2023-02-22
- 格式:DOCX
- 页数:28
- 大小:967.69KB
2DSP28335ePWM模块.docx
《2DSP28335ePWM模块.docx》由会员分享,可在线阅读,更多相关《2DSP28335ePWM模块.docx(28页珍藏版)》请在冰豆网上搜索。
2DSP28335ePWM模块
1、模块特性
增强型脉宽调制模块都由两个PWM输出组成,ePWMxA和ePWMxB。
ePWM模块通过同步时钟组合连接在一起用于工作在单一的系统中。
此外,这些同步组合被扩展到外设模块的捕获(eCAP)。
每个PWM的特点如下:
·精确地16位时间基准计数器,控制输出周期频率;
·2个PWM输出可配置为如下方式:
2个独立单边操作的PWM输出;2个独立的双边对称操作PWM输出;1个独立的双边不对称操作PWM输出;
·与其他ePWM模块有关的可编程相位超前和滞后控制;
·在每个周期的基础上硬件锁定同步相位关系;
·独立的上升沿或下降沿延时的死区控制;
·PWM输出强制为高、低、高阻逻辑电平的控制条件;
·所有的事件都可以触发CPU中断和ADC开始转化信号;
·用于脉冲变换器门级驱动的高频PWM斩波;
·ePWM模块的同步信号通过菊花链结构连接在一起,每一个模块都可以配置成使用或者不使用同步输入信号,时钟的同步输入输出信号都来源于ePWM1,ePWM1的同步输出连接到第一个增强捕获模块的SYNCI;
·每个ePWM模块都有两个ADC转换开始信号,每个ePWM模块都可以触发两个排序器中的一个开始转换,这个启动AD转换的触发事件可以在ePWM的事件触发子模块中配置;
·32位的外设总线允许写16位或者32位数据到ePWM的寄存器中。
ePWM模块共有7个子模块,分别是:
时间基准子模块TB;计数器比较模块CC;动作限定子模块AQ;死区控制子模块DB;PWM斩波模块PC;错误控制子模块TZ;事件触发子模块ET。
常用模块为TB、CC、AQ、DB、ET,下面分别介绍这5个子模块的功能以及相应寄存器配置。
2、TB
·限制ePWM时基计数器的频率和周期,去控制多长时间发生一次事件;
·管理其他ePWM模块的时间基准同步信号;
·保持与其他ePWM模块的相位关系;
·设置时间基准计数器的计数模式:
增计数、减计数、增减计数;
·产生如下时间:
CTR=PRD
CTR=Zero
·配置时基时钟的速率,CPU时钟的n次分频。
允许时基计数器在低速率时可以增加也可以减少。
2.1、TBPRD
·该位决定了时基计数器的周期,决定了PWM的频率;
·该寄存器的阴影寄存器的使能与禁止由TBCTL[PRDLD]决定,缺省状态下是使能的;
·如果TBCTL[PRDLD]=0,则阴影寄存器使能,任何读写操作都会自动进入阴影寄存器里。
在这种情况下,当时基计数器为0时,活跃寄存器的值从阴影寄存器中装载;
·如果TBCTL[PRDLD]=1,则阴影寄存器禁止,任何的读写操作都会直接到活跃寄存器中,这样寄存器就会主动地控制硬件;
·阴影寄存器与活跃寄存器共用同一个地址。
2.2、TBPHS
·这些位设置选择的ePWM时基计数器的相位相对于提供同步输入信号的时基;
·如果TBCTL[PHSEN]=0,那么这个同步事件会被忽视,时基计数器不会装载TBPHS;
·如果TBCTL[PHSEN]=1,当同步事件发生时,时基计数器会装载TBPHS。
通过输入的同步信号来初始化同步事件或者软件强制同步。
2.3、TBCTR
·该位的值表示当前时基计数器的值;
·向该位写数据可以设置当前时基计数器的值。
该值会在写进去后立即更新,写操作并不与时基时钟同步并且写进去的值并不是阴影寄存器。
2.4、TBCTL
·RFEE,SOFT仿真模式位,该位的值决定了ePWM的时基计数器在仿真事件时的动作
01在下一个时基计数器增加或者减小时停止;
02在计算器完成一个周期时停止
·增计数模式:
当TBCTR=TBPRD时停止;
·减计数模式:
当TBCTR=0时停止;
·增减模式:
当TBCTR=0时停止;
1X无影响。
·PHSDIR此位只在增减计数模式时才有用,在增模式或者减模式时忽略
1在同步事件后减少
2在同步事件后增加
·CLKDIV时基时钟预分频位,该位决定时基时钟的预分频值的一部分
000/1(复位后的缺省值)
001/2
010/4
011/8
100/16
101/32
110/64
111/128
·HSPCLKDIV高速时基时钟预分频位,该位决定时基时钟的预分频值的一部分,
000/1
001/2(复位后的缺省值)
010/4
011/6
100/8
101/10
110/12
111/14
·SWFSYNC软件强制同步脉冲
1写0无影响,读该位返回值常为0;
2写1强制产生一次同步脉冲
SWFSYNC只有在EPWMxSYNCI被选择时有效,即SYNCOSEL=0;
·SYNCOSEL同步输出选择,该位选择EPWMxSYNCO的信号源
00EPWMxSYNC
01CTR=0
10CTR=CMPB
11禁止EPWMxSYNCO信号
·PRDLD活跃周期寄存器从阴影寄存器中装载
1当TBCTR=0时,TBPRD从其阴影寄存器中装载;通过阴影寄存器对TBPRD进行读写操作
2不使用阴影寄存器,TBPRD立即装载;直接通过活跃寄存器对TBPRD进行读写操作
·PHSEN计数器寄存器从相位寄存器装载的使能位
1TBCTR不从TBPHS装载
2当EPWMxSYNCI输入信号产生或者通过SWFSYNC位强制软件同步时,TBCTR从TBPHS装载。
·CTRMODE计数模式位
时基计数器模式一旦配置以后,在正常情况下都不会去改变,如果改变了计数模式,这一改变会在下一个TBCLK边缘产生影响并且当前的计数器的值会在模式改变前的计数器的值上增加或者减小。
00增计数模式
01减计数模式
10增减计数模式
11不计数(复位后的缺省值)
2.5、TBSTS
3、CC
·计数比较子模块作为时基计数器值的输入。
这个值连续的和CMPA、CMPB作比较,当时基计数器等于CMPA、CMPB中的一个值时,计数比较器会产生一个正确的事件;
·利用CMPA、CMPB寄存器产生事件
CTR=CMPA
CTR=CMPB
·当动作限定子模块合理配置时,可以控制PWM的占空比;
·对于增计数和减计数模式,每个周期只产生一次事件;对于增减计数模式,当比较值TBCTR在0-TBPRD之间时,每个周期产生两次事件,当比较值TBCTR为0或者TBPRD时,每个周期只产生一次事件;
·CMPA、CMPB寄存器都有一个与自己相关联的阴影寄存器,阴影寄存器使得寄存器的值随着硬件同步更新
·计数比较模块在三种计数模式下的时序图如下图所示:
①、增计数模式
②、减计数模式
③、增减计数模式
3.1、CMPA、CMPB
·活跃寄存器CMPA的值连续的与TBCTR作比较,当这两个值相等时,CC模块产生一个事件(CMPA与TBCTR相等的事件),该事件会被传到动作限定子模块中,动作限定模块会将该事件转换为一个至多个动作,这些动作会应用在EPWMxA和EPWMxB中,EPWMxA和EPWMxB的输出由AQCTLA、AQCTLB寄存器配置。
这些动作也由这两个寄存器配置,具体包括:
·忽略;
·使得EPWMxA和EPWMxB输出低电平;
·使得EPWMxA和EPWMxB输出高电平;
·使得EPWMxA和EPWMxB电平信号翻转。
·该寄存器的阴影寄存器的使能与禁止由CMPCTL[SHDWAMODE]位决定。
缺省状态下为使能。
·如果CMPCTL[SHDWAMODE]=0,阴影寄存器使能,任何的读写操作会立即传递到阴影寄存器。
在这种情况下,CMPCTL[SHDWAMODE]位决定了当发生什么事件时,活跃寄存器会从阴影寄存器装载值;
·在对CMPCTL[SHDWAMODE]进行写操作之前,通过对CMPCTL[SHDWAFULL]位的读取来确定阴影寄存器当前是否溢出;
·如果CMPCTL[SHDWAMODE]=1,阴影寄存器被禁止,任何的读写操作都会直接作用与活跃寄存器
·在其他模式下,阴影和活跃寄存器共用同一个寄存器地址。
3.2、CMPCTL
·SHDWBFULLCMPB阴影寄存器溢出状态标志位
1没有溢出
2CMPB阴影寄存器已经溢出,CPU写操作将会覆盖当前的阴影寄存器的值
·SHDWBMODECMPB寄存器工作模式
1阴影模式,双缓存,所有的写通过CPU传到阴影寄存器中;
2立即模式,所有的读写操作直接送入活跃寄存器中
·LOADBMODECMPB的活跃寄存器从阴影寄存器装载的模式位,该位在立即模式中无效。
00当CTR=0时,活跃寄存器从阴影寄存器装载值
01当CTR=PRD时,活跃寄存器从阴影寄存器装载值
10当CTR=0,或者CTR=PRD时,活跃寄存器从阴影寄存器装载值
11不装载
3.3、CMPAHR
4、AQ
·在下列情况发生时,动作限定模块限定和产生动作;
·CTR=PRD
·CTR=0
·CTR=CMPA
·CTR=CMPB
·当事件同时发生时,管理优先级;
·当时基计数器处于递增或者递减模式时,提供事件的独立控制;
·当一个事件发生以后,动作限定子模块会使PWMxA、EPWMxB做出相应的动作,包括置高、置低、翻转、什么都不做。
·事件输入到动作限定子模块,会被计数器方向(增、减)进一步限定;
·动作限定子模块在同一时间收到一个以上的事件发生也是有可能的,在这种情况下,事件可以被硬件分配优先级,一般的规则是后发生的事件具有更高的优先级,软件强制的事件通常具有最高的优先级,事件的优先级与计数器的工作模式有一定关系,具体的优先级如下表所示:
·在系统中,CMPA、CMPB的值每经过一个周期都会更新一次,用户可以指定在一个周期的哪一个位置更新。
这儿有一些需要注意的点,当动作依照新的值时会延时一个周期;当动作依照旧的值时,会对其他的周期产生影响。
可以通过如下的配置方法避免这种情况:
①使用增减计数模式产生一个对称的PWM波形时:
·当你想装载CMPA、CMPB为0时,CMPA、CMPB的值最好大于等于1;
·当你想装载CMPA、CMPB为TBPRD时,CMPA、CMPB的值最好小于等于TBPRD-1;
意味着在PWM波形中至少有一个TBCLK长度的脉冲。
②使用增减计数模式去产生一个不对称的PWM波形时:
·要产生一个50%-0%的不对称PWM波形可以经过下面的配置:
每个周期装载CMPA、CMPB的值,当TBCTR=TBPRD时,清除PWM;当TBCTR=CMPA时,置位PWM。
调节比较值从0-TBPRD,从而产生占空比在0-0.5的PWM波形。
③使用增加计数模式去产生一个不对称的PWM波形时:
·要产生一个0%-100%的不对称PWM波形可以经过下面配置:
将TBPRD装载到CMPA、CMPB中,当TBCTR=0时,置位PWM;当TBCTR=CMPA时,清除PWM。
调节比较值从0-BPRD+1去实现占空比从0—1。
4.1、AQCTLA
·CBD当TBCTR=CMPB,且计数器为减计数时,产生动作
00不动作;
01EPWMxA=0;
10EPWMxA=1;
11EPWMxA输出翻转。
·CBU当TBCTR=CMPB,且计数器为增计数时,产生动作
00不动作;
01EPWMxA=0;
10EPWMxA=1;
11EPWMxA输出翻转。
·PRD当TBCTR=TBPRD时,产生动作
在计数器增减模式中,TBCTR=TBPRD时,认为方向为0或减计数
00不动作;
01EPWMxA=0;
10EPWMxA=1;
11EPWMxA输出翻转。
·ZRO当TBCTR=0时,产生动作
在计数器增减模式中,TBCTR=0时,认为方向为1或增计数
00不动作;
01EPWMxA=0;
10EPWMxA=1;
11EPWMxA输出翻转。
4.2、AQSFRC
·RLDCSFAQSFRC的活跃寄存器从阴影寄存器装载选择位
00TBCTR=0时,装载;
01TBCTR=TBPRD时,装载;
10TBCTR=0或TBCTR=TBPRD时,装载;
11立即装载,活跃寄存器直接通过CPU而不是阴影寄存器装载。
·OTSFB输出B上产生一次软件强制事件
1写0无影响,读回来的常为0;
当向该寄存器写数据或强制初始化时,该位自动清0;
该位只产生一次事件,当输出B后面有别的事件时,该事件被覆盖;
2初始化一个单一的软件强制事件。
·ACTSFB当发生一次软件强制B唤醒时动作
00不动作;
01清除;
10置高;
11翻转。
4.3、AQCSFRC
·CSFB在输出B上连续的软件强制;
在立即模式时,连续的强制会在下一个TBCLK边沿产生影响;
在阴影模式时,在阴影寄存器的值装载到活跃寄存器后,连续的强制会在下一个
TBCLK边沿产生影响
00强制禁止,无作用;
01强制输出A连续为低;
10强制输出A连续为高;
11软件前置禁止,无影响;
5、DB
·单一的EPWMxA输入,经过死区控制模块后,产生一对合适的EPWMxA和EPWMxB;
·可以工作在以下几种工作模式:
·AH(高电平有效输出)
·AL(低电平有效输出)
·AHC(高电平有效互补输出)
·ALC(低电平有效互补输出)
·增加了可编程的上升沿延时时间(RED);
·增加了可编程的下降沿延时时间(FED);
·该死区控制子模块可以完全旁路;
·死区子模块提供了两组独立的选择方式:
1输入源的选择:
输入到死区子模块的信号即动作限定子模块输出的信号,通过配置DBCTL[IN_MODE]位可以选择每一次延时是在上升沿还是下降沿:
·在缺省状态下,EPWMxA既作为上升沿延时又作为下降沿延时的信号源;
·EPWMxA作为下降沿延时的信号源,EPWMxB作为上升沿延时的信号源;
·EPWMxA作为上升沿延时的信号源,EPWMxB作为下降沿延时的信号源;
·EPWMxB既作为上升沿延时又作为下降沿延时的信号源;
②输出模式控制:
输出模式由DBCTL[OUT_MODE]位控制。
该位决定了作用于输入信号的是上升沿延时或者下降沿延时还是两者都有;
③极性控制:
极性控制允许用户指定上升沿延时或者下降沿延时在输出死区子模块前是否需要翻转电平。
·下面介绍几种典型的死区模块的配置模式,具体参数配置和波形见表14和图32。
①模式1:
旁路上升沿延时和下降沿延时;
②模式2-5:
典型的死区极性设置;
③模式6:
旁路上升沿延时;模式7:
旁路下降沿延时;
·死区子模块支持独立的上升沿延时和下降沿延时时间的设置,延时的时间由DBRED、DBFED寄存器配置。
FED=DBFED*T
RED=DBRED*T(T是TBCLK的周期值)
5.1、DBCTL
·IN_MODE
1死区输入模式控制位;
2位5控制S5开关,位4控制S4开关(如上图);
3允许用户选择上升沿延时和下降沿延时的输入源;
4在缺省状态下,EPWMxA同时作为上升沿和下降沿的输入源;
01EPWMxA既作为上升沿延时又作为下降沿延时的信号源;
01EPWMxA作为下降沿延时的信号源,EPWMxB作为上升沿延时的信号源;
10EPWMxA作为上升沿延时的信号源,EPWMxB作为下降沿延时的信号源;
11EPWMxB既作为上升沿延时又作为下降沿延时的信号源;
·POLSEL
1极性选择控制位;
2位3控制S3,位2控制S2;
3允许用户选择信号在输出死区模块前是否需要翻转电平;
4可以用于一个桥臂上上下两个开关的控制;
00AH模式,EPWMxA和EPWMxB都不翻转(缺省状态);
01ALC模式,EPWMxA翻转;
10AHC模式,EPWMxB翻转;
11AL模式,EPWMxA和EPWMxB都翻转。
·OUT_MODE
1死区输出模式控制位;
2位1控制S1,位0控制S0;
3该位允许用户旁路或使能死区模块;
00死区模块被旁路;输出为动作限定模块的输出;POLSEL和IN_MODE位没有作用;
01上升沿延时被禁止;
10下降沿延时被禁止;
11死区模块的上升沿延时和下降沿延时都被使能。
5.2、DBRED
5.3、DBFED
6、ET
·接收时基模块和计数比较模块产生的事件;
·利用时基模块的方向信息确定递增递减计数;
·利用预先设定的逻辑去保证中断请求和ADC开始转换;
1每次事件;
2每两次事件;
3每三次事件;
·上述事件包括:
①TBCTR=0;
②TBCTR=TBPRD;
③TBCTR=CMPA且为计数器的值在增加;
④TBCTR=CMPA且为计数器的值在减小;
⑤TBCTR=CMPB且为计数器的值在增加;
⑥TBCTR=CMPB且为计数器的值在减小;
·通过时间计数器和相应标志位产生事件标示;
·允许软件强制中断和ADC开始转换;
·事件触发子模块管理来自于时基子模块、计数比较子模块和逻辑比较子模块产生的事件。
当所选择的事件发生时,事件触发子模块会向CPU发送一个中断请求或者向ADC发送一个开始转换的脉冲;
·事件发生的次数可以从中断事件计数器寄存器ETPS[INTCNT]位读取,当指定的事件发生时,ETPS[INTCNT]加1知道增加到指定的值ETPS[INTPRD],当ETPS[INTCNT]=ETPS[INTPRD]时,中断事件计数器停止计数并输出置位。
只有中断送到PIE级时该计数器的值才会被清除;
·当ETPS[INTCNT]=ETPS[INTPRD]时,会发生以下几种情况:
1当ETSEL[INTEN]=1且ETFLG[INT]=0时,然后一个中断脉冲产生,中断标志位置位,事件计数器清0。
计数器会从头开始计数;
2当ETSEL[INTEN]=0且ETFLG[INT]=1时,当ETPS[INTCNT]=ETPS[INTPRD]时,事件计数器停止计数;
3当ETSEL[INTEN]=1且ETFLG[INT]=1时,计数器输出保持为高,直到ETFLG[INT]被清除。
6.1、ETSEL
·SOCBENADC转换序列B启动使能位;
1禁止;
2使能;
·SOCBSELEPWMxB脉冲生产选择位;
000保留;
001TBCTR=0;
010TBCTR=TBPRD;
011保留;
100TBCTR=CMPA且计数器数值在增加时;
101TBCTR=CMPA且计数器数值在减小时;
110TBCTR=CMPB且计数器数值在增加时;
111TBCTR=CMPB且计数器数值在减小时;
·INTENePWM中断使能位;
1禁止;
2使能;
·INTSELePWM中断生产选择位;
000保留;
001TBCTR=0;
010TBCTR=TBPRD;
011保留;
100TBCTR=CMPA且计数器数值在增加时;
101TBCTR=CMPA且计数器数值在减小时;
110TBCTR=CMPB且计数器数值在增加时;
111TBCTR=CMPB且计数器数值在减小时;
6.2、ETPS
·SOCBCNTePWM模块启动ADC转换时ETSEL[SOCBSEL]事件已发生的次数;只读;
00无事件发生;
011个事件发生;
102个事件发生;
113个事件发生;
·SOCBPRD
1ePWM模块启动ADC转换时ETSEL[SOCBSEL]事件个数设置位;
2该位决定当一个EPWMxSOCB脉冲产生时需要发生多少次事件;
3只有ETSEL[SOCBEN]=1,SOCB脉冲才有可能产生;
4当ETFLG[SOCB]=1时,SOCB脉冲仍然会产生;
5一旦SOCB脉冲产生,那么ETPS[SOCBCNT]自动清除;
00禁止SOCB事件发生,EPWMxSOCB脉冲不会产生;
01发生1次事件后产生EPWMxSOCB脉冲;
10发生2次事件后产生EPWMxSOCB脉冲;
11发生3次事件后产生EPWMxSOCB脉冲;
·INTCNT
1ePWM中断事件发生时,ETSEL[INTSEL]事件已发生的次数;只读;
2该位表示多少个ETSEL[INTSEL]事件发生;
3当中断脉冲产生时,该位自动清除;
4当中断禁止或中断标志位置位时,当事件计数器ETPS[INTCNT]=ETPS[INTPRD]时,事件计数器停止计数;
00无事件发生;
011个事件已经发生;
102个事件已经发生;
113个事件已经发生;
·INTPRD
1EPWMx_INT中断周期选择位;
2该位决定当产生一个EPWMx_INT中断时,需要发生多少次ETSEL[INTSEL]事件;
3要想产生EPWMx_INT中断,ETSEL[INT]必须置位;
4如果从上一次EPWMx_INT中断开始,ETFLG[INT]=1,那么接下来不会有EPWMx_INT中断产生,直到通过ETCLR[INT]位对ETFLG[INT]清0;
5一旦EPWMx_INT中断产生,那么ETPS[INTCNT]将会自动重新计数;
6当ETFLG[INT]=1,ETFLG[INT]=0时,新写进去的INTPRD的值等于当前计数值会触发一次EPWMx_INT中断;
7新写进去的INTPRD的值不能小于当前的计数值,否则会导致没有定义的状态;
00禁止EPWMx_INT中断事件发生;
01当产生一次ETSEL[INTSEL]事件时,EPWMx_INT中断事件发生;
10当产生二次ETSEL[INTSEL]事件时,EPWMx_INT中断事件发生;
11当产生三次ETSEL[INTSEL]事件时,EPWMx_INT中断事件发生;
6.3、ETFLG
·SOCBEPWMxSOCB状态标志位
1没有EPWMxSOCB事件发生;
2表示启动ADC转换的脉冲已经产生,如果SOCB的标志位置位的话,启动转换脉冲会继续产生;
·INTEPWMx_INT状态标志位;
1没有EPWMx_INT发生;
2标志EPWMx_INT中断已经发生,该EPWMx_INT中断会一直发生,直到INT的标志位被清0;在INT标志位被置位时,最多有一个中断会悬挂,直到INT标志位清0后,该中断才会起作用。
6.4、ETCLR
·SOCBEPWMxSOCB中断标志清除位;
1写0无影响,读回来的常为0;
2清除ETFLG[SOCB]标志位;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DSP28335ePWM 模块
![提示](https://static.bdocx.com/images/bang_tan.gif)