dsp第9讲--定时器中断应用举例1_第1页
dsp第9讲--定时器中断应用举例1_第2页
dsp第9讲--定时器中断应用举例1_第3页
dsp第9讲--定时器中断应用举例1_第4页
dsp第9讲--定时器中断应用举例1_第5页
已阅读5页,还剩235页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第9章 事件管理器及其应用,9.1 事件管理器概述,每个281x处理器包含EVA和EVB 2个事件管理器,2个事件管理模块(EVA和EVB)具有相同的外设模块 。,每个事件管理模块包括: 通用定时器(GP); 比较器 PWM单元; 捕获单元; 正交编码脉冲电路(QEP)。,事件管理器结构框图,PWM单元主要有2个方面的应用:一是产生脉宽调制信号,控制数字电机,另外一个是直接用PWM输出作为A/D转换使用。 事件管理器的捕获单元用来对外部硬件信号的时间进行测量,利用6个边沿检测单元测量外部信号的时间差,从而确定电机转子的转速。 正交编码脉冲电路根据增量编码器信号获得电机转子的速度 和方向信息。,

2、事件管理器EVA和EVB有相同的外设寄存器,EVA的起始地址是7400H, EVB的起始地址为7500H。EVA和EVB的功能也基本相同,只是模块的外部接口和信号有所不同。 每个事件管理器都有自己的控制逻辑模块,逻辑模块能够响应来自C28x的外设中断扩展单元的中断请求,从而实现事件管理器的各种操作模式。在特定的操作模式下,事件管理器还可以利用2个外部信号(TCLKINA和TDIRA)进行控制。 此外,事件管理器还可以根据内部事件自动地启动A/D转换,而不像其他通用的微处理器需要专门的中断服务程序。,通用定时器1和2是两个带有可配置输出信号(T1PWM/T1CMP和T2PWM/T2CMP)的16

3、位定时器,也可直接在处理器内部使用。 比较单元13以通用定时器1作为时钟基准,产生6路PWM输出控制信号。 3个独立的捕获单元(CAP1 , CAP2和CAP3)可以用来进行时间和速度估计。 光电编码脉冲电路重新定义了捕获单元CAP1, CAP2和CAP3的输入功能,可以直接检测脉冲的边沿。,9.2 通用定时器,每个事件管理模块有两个通用定时器(GP)。 通用定时器x 对EVA,x1,2; 对EVB,x3,4。,说 明,每个通用定时器都可以独立使用,也可以多个定时器彼此同步使用。 通用定时器的比较寄存器用作比较功能时可以产生PWM波形。 当定时器工作在增或增减模式时,有3种连续工作方式。 每个

4、通用定时器都可以使用可编程预定标的内部或外部输入时钟。,通用定时器结构图,定时器功能模块图(课本图9.6),x2或x4,x=2时,y=1且n=2 x=4时,y=3且n=4,通用定时器控制寄存器A(GPTCONA),位15 Reserved 读出值为0,写操作无效,位14 T2STAT 通用定时器2的状态,只读 0 减计数 1 增计数 位13 T1STAT 通用定时器1的状态,只读 0 减计数 1 增计数,位12 T2CTRIPE T2CTRIP使能位 使能或禁止定时器2比较陷阱(T2CTRIP)。 仅当EXTCON(0) 1时,该位才有效 ; 当EXTCON(0) 0时,该位保留。 0 T2C

5、TRIP禁止。 T2CTRIP不影响定时器2比较输出GPTCON(5)或 PDPINT标志EVIFRA(0)。 1 T2CTRIP使能。 当T2CTRI为低时,定时器比较输出为高阻抗状态,GPTCON(5)复位为0,且PDPINT标志EVIFRA(0)置为0。,位11 T1CTRIPE T1CTRIP使能位 当该位有效时,使能或禁止定时器1比较陷阱(T1CTRIP)输入。 仅当EXTCON(0) 1时,该位才有效 ; 当EXTCON(0) 0时,该位保留。 0 T1CTRIP禁止。T1CTRIP不影响定时器1比较输出GPTCON(4)或 PDPINT标志位EVIFRA(0)。 1 T1CTRI

6、P使能。当T1CTRIP为低时,定时器1比较输出为高阻抗状态,GPTCON(4)复位为0,且PDPINT标志位EVIFRA(0)置为1。,位109 T2TOADC 定时器2事件启动模数转换 00 不启动模数转换 01 下溢中断标志启动模数转换 10 周期中断标志启动模数转换 11 比较中断标志启动模数转换 位87 T1TOADC 定时器1事件启动模数转换 00 不启动模数转换 01 下溢中断标志启动模数转换 10 周期中断标志启动模数转换 11 比较中断标志启动模数转换,位6 TCMPOE 定时器比较输出使能。 使能或禁止定时器比较输出。 仅当EXTCON(0) 1时,该位才有效 ; 当EXT

7、CON(0) 0时,该位保留。 当该位有效时,当PDPINT/T1CTRIP为低且EVIMRA(0) 1,该位复位为0。 0 定时器比较输出T1/2PWM_T1/2CMP置成高阻态。 1 定时器比较输出,T1/2PWM_T1/2CMP由独立定时器比较逻辑驱动。,位5 T2CMPOE 定时器2比较输出使能。 使能或禁止事件管理器定时器2比较输出T2PWM_T1CMP。 仅当EXTCON(0) 1时,该位才有效 ; 当EXTCON(0) 0时,该位保留。 该位有效时,当T2CTRIP为低且使能时,它复位为0。 0 定时器2比较输出,T2PWM_T2CMP置成高阻态。 1 定时器2比较输出,T2PW

8、M_T2CMP由独立的定时器2比较逻辑驱动。,位4 T1CMPOE 定时器1比较输出使能。 使能或禁止事件管理器定时器1比较输出T1PWM_T1CMP。 仅当EXTCON(0) 1时,该位才有效 ; 当EXTCON(0) 0时,该位保留。 有效时,当T1CTRIP为低且使能时,它复位为0。 0 定时器1比较输出,T1PWM_T1CMP置成高阻态。 1 定时器1比较输出,T1PWM_T1CMP由定时器1比较逻辑驱动。,位32 T2PIN 通用定时器2比较输出极性。 00 强制低电平 01 低电平有效 10 高电平有效 11 强制高电平 位10 T1PIN 通用定时器1比较输出极性。 00 强制低

9、电平 01 低电平有效 10 高电平有效 11 强制高电平,注:,1)当EXTCON0首先置为1时,GPTCON12 和GPTCON11都默认为1。 2)MUX取代GPTCON6和(EVIMRA(0) | PDPINT)分别驱动T1PWM_T1CMP和T2PWM_T2CMP的使能或禁止输出。 两个MUX都由EXTCON(0)控制。 当EXTCON(0) 0时,两个MUX都选择GPTCON6 和 (EVIMRA(0) | PDPINT) 当EXTCON(0) 0时,T1PWM_T1CMP的MUX选择GPTCON(4),T2PWM_T2CMP的MUX选择GPTCON(5)。 3)(EVIMRA(0

10、) | PDPINT )是针对F240 x设计中的PDPINT引脚有到比较输出缓冲器的非同步路径而设计的。,定时器x计数寄存器(TxCNT,x1、2、3或4),位150 T1CNT 保存定时器1计数器的当前值,定时器x比较寄存器 (TxCMPR,x1、2、3或4),位150 T1CMPR 保存定时器1计数器的比较值,定时器x周期寄存器 (TxPR,x1、2、3或4),位150 T1PR 保存定时器1计数器的周期值,定时器x控制寄存器 (TxCON,x1、2、3或4),注:T2SWT1/T4SWT3位和SELT1PR/SELT3PR位在T1CON和T3CON中保留。,位1514 FREE,SOF

11、T 仿真控制位 00 一旦仿真挂起,立即停 01 一旦仿真挂起,在当前定时器周期结束后停止 10 操作不受仿真挂起的影响 11 操作不受仿真挂起的影响 位13 Reserved 保留位,读出值为0,写操作无效,位1211 TMODE1 TMODE0 计数模式选择 00 停止/保持 01 连续增/减计数模式 10 连续增计数模式 11 定向增/减计数模式 位108 TPS2TPS0 输入时钟预分频 000 x/1 001 x/2 010 x/4 011 x/8 100 x/16 101 x/32 110 x/64 111 x/128 (xHSPCLK),位7 T2SWT1/T4SWT3 事件管理

12、EVA:起T2SWT1的作用(即用通用定时器1启动通用定时器2)。用通用定时器1的定时器使能位来启动通用定时器2。在T1CON中,这一位是保留位。 事件管理EVB:起T4SWT3的作用(即用通用定时器3启动通用定时器4)。用通用定时器3的定时器使能位来启动通用定时器4。在T3CON中,这一位是保留位。 0 使用自身的定时器使能位(TENABLE) 1 使用T1CON(对于EVA)或T3CON(对于EVB)中的定时器使能位来使能或禁止操作,忽略自身的定时器使能位(TENABLE)。,位6 TENABLE 定时器使能位 0 禁止定时器操作(即定时器置于保持状态且复位预分频器) 1 使能定时器操作

13、位54 TCLKS1TCLKS0 时钟源 00 内部(如:HSPCLK) 01 外部(如:TCLKINx) 10 保留 11 正交脉冲编码电路(QEP),位32 TCLD1TCLD0 定时器比较寄存器重装载条件 00 计数器值为0时,重装载 01 计数器值为0或等于周期寄存器值时,重装载 10 立即重装载 11 保留 位1 TECMPR 定时器比较使能位 0 禁止定时器比较操作 1 使能定时器比较操作,位0 SELT1PR/SELT3PR 事件管理EVA:为SELT1PR(周期寄存器选择位)。当T2CON中该位设置为1时,定时器1的周期寄存器对定时器2有效,忽略定时器2的周期定时器。在T1CO

14、N中,该位保留。 事件管理EVB:为SELT3PR(周期寄存器选择位)。当T4CON中该位设置为1时,定时器3的周期寄存器对定时器4有效,忽略定时器4的周期定时器。在T3CON中,该位保留。 0 使用自身的周期寄存器 1 使用T1PR(在EVA模块)或T3PR(在EVB模块)作为周期寄存器,而忽略自身的周期寄存器。,全局控制寄存器GPTCONA/B确定通用定时器实现具体的定时器任务需要采取的操作方式,并设置定时器的计数方向。GPTCONA/B是可读/写的寄存器,如果对GPTCONA/B的状态位进行写操作,寄存器原有数据不作变化。,定时器的时钟源可以取自外部输入信号(TCLKIN)、QEP单元或

15、者内部时钟。定时器控制寄存器的4、5位选择定时器时钟信号来源。当选择内部时钟时,定时器采用高速外设时钟预定标(HSPCLK)作为输入,计算定时器的周期时必须考虑高速外设时钟预定标寄存器的设置。,C28x信号处理器的定时器还提供后台功能。 定时器1和定时器2都有各自的比较寄存器和周期寄存器,对于某些应用可以实时地调整比较寄存器和周期寄存器的值。后台寄存器(类似于双缓冲)的优点就是能够在当前周期为下一个周期设置相应的寄存器的值,下一个定时周期会将后台寄存器的值自动装载到相应的寄存器中。 如果没有后台寄存器,需要更新寄存器的值时就必须等待当前周期结束,然后触发高优先级的中断调整寄存器的值,这样势必影

16、响定时器的运行。,9.2.1 通用定时器计数模式,每个通用定时器都支持停止/保持、连续递增计数、双向 增/减计数和连续增/减计数4种操作模式,可以通过控制寄 存器TxCON中的TMODE1 TMODE0位进行设置。 同时,可以通过定时器使能位TENABLE使能或禁止定时 器的计数操作。 当定时器被禁止时,定时器的计数器操作也被禁止, 并且定时器的预定标器被复位为x/1; 当使能定时器时,定时器按照寄存器Tx-CON中的 TMODE1TMODE0位确定的计数模式工作并开始计数。,1. 停止/保持模式,在这种模式下,通用定时器停止计数并保持在当前 的状态,定时器的计数器、比较输出和预定标计数器都

17、保持不变。,2. 连续递增计数模式,在连续递增模式下,通用定时器将按照预定标的输入时钟 计数,在定时器的计数器值和周期寄存器值匹配后的下一个输入 时钟的上升沿复位为0,并启动下一个计数周期。,在通用定时器的值变为0一个时钟周期后,定时器的下溢中 断标志位置位。如果该位未被屏蔽,则产生一个外设中断请求。 如果该周期中断已由GPTCONA/B寄存器中的相应位选定用来 启动ADC,则在中断标志置位的同时将A/D转换启动信号送到 A/D转换模块。,下溢事件启动模数转换,通用定时器连续递增计数模式,在TxCNT的值与0 xFFFF匹配1个时钟周期后,上溢中断 标志位置位。如果该位未被屏蔽,则会产生1个外

18、设中断请求。,上溢,除第一个计时周期外,定时器周期的时间为(TxPR + 1)个 定标后的时钟输入周期。如果定时器的计数器开始计数时为0, 则第一个周期也和以后的周期相同。,定时器周期,通用定时器的初始值可以是0H0 xFFFF中的任意值。 如果计数器的初始值大于周期寄存器的值,定时器计数器将 计数到0 xFFFF,清零后继续计数操作,同初始值为0一样。 当计数器的初始值等于周期寄存器的值时,定时产生周期中 断标志,计数器清零,置位下溢中断标志而后继续向上计数。 如果定时器的初始值在0和周期寄存器的值之间,定时器就 计数到周期寄存器的值完成该计数周期。,定时器初始值设置,在连续递增模式下,GP

19、TCONA/B寄存器中的计数方向 标识位为1,内部CPU时钟或外部时钟均可作为定时器的输 入时钟。此时,TDIRA/B引脚输入的时钟不起作用。,3.定向递增/递减计数模式,定时器根据定标后的时钟或计数方向(TDIRA/B)引脚的输入 进行递增或递减计数。 当TDIRA/B引脚保持为高电平时,通用定时器递增计数直 到计数值等于周期寄存器的值(如果初始值大于周期寄存器 的值就计数到0 xFFFFH) 。当通用定时器的计数寄存器的值 等于周期寄存器的值(或等于FFFFH)时,定时器的计数器清 零,然后重新递增计数到周期寄存器的值。 当TDIRA/B引脚保持为低电平时,通用定时器计数器采 用递减计数方

20、式,直到等于0,然后定时器重新载入周期 寄存器中的值并继续递减计数。,通用定时器定向递增/递减计数模式,4. 连续增/减计数模式,连续增/减计数模式与定向增/减计数模式基本相同,只是在 连续增/减计数模式下,引脚TDIRA/B不再影响计数方向。 当计数器的值达到周期寄存器的值(或FFFFH,定时器的初始 值大于周期寄存器的值),定时器的计数方向从递增计数变为递 减计数;当定时器清零时,定时器的方向从递减计数变为递增计数。 在这种模式下,除了第一个计数周期外,定时器计数周期都是 2 *( TxPR)个定时器输入时钟周期。,通用定时器连续增/减计数模式,9.2.2 定时器的比较操作,每个通用定时器

21、都有一个比较寄存器TxCMPR和一个PWM 输出引脚TxPWM。 通用定时器计数器的值一直与相关的比较寄存器的值比较, 当定时器计数器的值与比较寄存器的值相等时,就产生比较 匹配。可通过TxCON1位使能比较操作,产生比较匹配后 将会有下列操作。,匹配1个时钟周期后,定时器的比较中断标志位置位。 匹配1个CPU时钟周期后,根据寄存器GPTCONA/B相应位 的配置情况,PWM的输出将产生跳变。 如果比较中断标志位已通过设置寄存器GPTCONA/B中的相 应位启动A/D转换器,则比较中断位置位的同时产生A/D转换 启动信号。 如果比较中断未被屏蔽,将产生一个外设中断申请。,1.定时器PWM输出(

22、TxPWM)逻辑控制,输出逻辑进一步对最终用于控制功率设备的PWM输出波形 进行设置,适当地配置GPTCONA/B寄存器,可以设定PWM 的输出为高电平有效、低电平有效、强制低或强制高。,当PWM输出为高电平有效时,它的极性与相关的非对称/对 称波形发生器的极性相同。当PWM输出为低电平有效时,它 的极性与相关的非对称/对称波形发生器的极性相反。,如果寄存器GPTCONA/B相应的控制位规定PWM输出为强制 高(或低)后,PWM输出就会立即置1(或清零)。,2. TxPWM有效/无效的时间计算,对于连续递增计数模式,比较寄存器中的值代表了从计数周 期开始到第一次匹配发生之间花费的时间(即无效相

23、位的长度), 这段时间等于定标的输入时钟周期乘以TxCMPR寄存器的值。 因此,有效相位长度就等于(TxPR)-(TxCMPR) +1个定标的输 入时钟周期,也就是输出脉冲的宽度。,对于连续增/减计数模式,比较寄存器在递减计数和递增计数 状态下可以有不同的值。有效相位长度等于(TxPR)-(TxCMPR) up + (TxPR)-(TxCMPR) dn个定标输入时钟周期,也就是输出脉冲 宽度。,2. TxPWM有效/无效的时间计算,对于连续递增计数模式,比较寄存器中的值代表了从计数周 期开始到第一次匹配发生之间花费的时间(即无效相位的长度), 这段时间等于定标的输入时钟周期乘以TxCMPR寄存

24、器的值。 因此,有效相位长度就等于(TxPR)-(TxCMPR) +1个定标的输 入时钟周期,也就是输出脉冲的宽度。,对于连续增/减计数模式,比较寄存器在递减计数和递增计数 状态下可以有不同的值。有效相位长度等于(TxPR)-(TxCMPR) up + (TxPR)-(TxCMPR) dn个定标输入时钟周期,也就是输出脉冲 宽度。,如果定时器处于连续递增计数模式,当TxCMPR中的值为0时,通用定时器比较输出在整个周期有效。对于连续增/减计数模式,如果(TxCMPR) up的值为0,则比较输出在周期开始时就开始有效。如果(TxCMPR) up和(TxCMPR) dn的值都是0。则在整个周期有效

25、。 对于连续递增计数模式,如果TxCMPR的值大于TxPR的值,有效相位长度(输出脉冲宽度)为0。对于连续增/减计数模式,如果(TxCMPR) up大于或等于TxPR,将不会产生第一次跳变。同样,如果(TxCMPR) do的值大于或等于TxPR的值,也不会产生第二次跳变。如果(Tx-CMPR) up和(TxCMPR) dn的值都大于TxPR的值,通用定时器的比较输出在整个周期内都无效。,3. TxPWM输出非对称波形,根据通用定时器所处的计数模式,非对称或对称波形发生器产生一个非对称或对称的PWM波形。,产生非对称波形:,当通用定时器处于连续增计数模式时,产生非对称波形。,+ 比较匹配点,波形

26、发生器的输出根据以下次序产生变化:,计数操作开始前为0; 直到匹配发生时保持不变; 在比较匹配时PWM输出信号反转; 保持不变直到周期结束; 如果下一周期新的比较寄存器的值不是0,则在匹配周期结束的周期复位清零。,说 明,如果一个周期开始时的比较值为0,则在整个周期输出均为1; 如果下一周期的新比较值也是0,则输出将不复位为0。因为它允许所产生的占空比从0到100的PWM脉冲。 如果比较值大于周期寄存器的值,则整个周期输出为0。 如果比较值等于周期寄存器的值,则输出为1将保持一个时钟输入周期。 比较寄存器值的改变只影响PWM脉冲的一边,这是非对称PWM波形的一个特点。,当通用定时器处于连续增/

27、减计数模式时,产生对称波形。,+ 比较匹配点,4. TxPWM输出对称波形,计数操作开始前为0; 第一次比较匹配前保持不变; 第一次比较匹配时PWM输出信号反转; 第二次比较匹配前保持不变; 第二次比较匹配时PWM输出信号反转; 周期结束前保持不变; 如果没有第二次匹配且下一周期新的比较值不为0, 则在周期结束后复位为0。,波形发生器的输出根据以下次序产生变化:,说 明,如果比较值在周期开始时为0,则周期开始时将输出1,并且保持1不变直到第二次比较匹配发生。,如果比较值在周期的后半部分是0,则第一次跳变后,输出将保持为1直到周期结束。 如果新比较值仍为0,输出将不会复位为0,以保证产生PWM脉

28、冲的占空比从0到100。,5. 通用定时器应用举例,用通用定时器产生PWM输出,可以采用连续递增或连续增/减计数模式。 当选用连续递增计数模式时,可产生边沿触发或非对称PWM波形; 当选用连续增/减计数模式时,可产生对称PWM波形。,可以通过下列操作产生PWM信号: 根据所需的PWM(载波)周期设置TxPR; 设置TxCON寄存器,确定计数器模式和时钟源,并启动PWM输出操作; 将软件计算出来的PWM脉冲宽度(占空比)装载到TxCMPR寄存器中。,如果选用连续递增计数模式来产生非对称PWM波形,把所需的PWM周期除以通用定时器输入时钟的周期然后减1便得出定时器的周期。 如果选用连续增/减计数模

29、式产生非对称PWM波形,把所需的PWM周期除以2倍的通用定时器输入时钟周期就得出定时器的周期。 在程序运行过程中,软件可以计算PWM的占空比,实时地刷新比较寄存器的设置。,例:在F2812信号处理板上将T1PWM经过简单的运放电路后输出,可以直接将其输出连接到扬声器,然后通过改变定时器的周期输出8种频率的方波信号模拟8种电子音效。在实际生活中音频信号是多种频率的正弦波信号合成的结果,当然也可以利用PWM输出产生正弦波信号。在本实验中利用定时器0产生50 ms的定时中断,在每次CPU响应定时器中断过程中,装载下一个周期的定时器1的比较和周期寄存器值。通过这种方式轮回地产生几种不同频率的PWM波。

30、,/ 文件名称: Playatune. c /主要功能: DSP28 T1PWM输出PWM / CPU定时器0中断时间50 ms / 使能看门狗,并在主程序中复位看门狗计数寄存器 #include “DSP281x_Device.h /函数原型声明 void Gpio_select(void); void SpeedUpRevA(void); void InitSystem(void); interrupt void cpu_timer0_isr(void); /定时器0中断服务程序,void main(void) unsigned int i; unsigned long time_stam

31、p; int frequency8=2219,1973,1776,1665,1480,1332,1184,1110; InitSystem(); /初始化DSP内核寄存器 Gpio_select(); /设置GPIO引脚功能 /初始化外设中断扩展单元(代码在:DSP281x_PiCtrl.c) InitPieCtrl(); /初始化外设中断扩展向量表(代码在:DSP281x_PieVect.c) InitPieVectTable();,/重新映射定时器0(Timer0) 的中断入口 EALLOW; /允许更改保护的寄存器 PieVectTable.TINT0=,/使能CPU的INT1,CPU定

32、时器0的中断连接到该CPU中断上 IER=1; /全局中断使能,并使能具有更高优先级的实时调试方式 EINT; /使能全局中断INTM ERTM; /使能全局实时中断DBGM /配置事件管理器EVA /假定事件管理器EVA的时钟在系统初始化函数InitSysCtrl()内已经被使能; /T1/T2的控制逻辑驱动T1PWM/T2PWM EvaRegs.GPTCONA.bit.TCMPOE=1;,/通用定时器1比较=低电平有效 EvaRegs.GPTCONA.bit.T1PIN=1; EvaRegs.T1CON.a11=0 x1702; /配置T1递增计数模式 CpuTimer0Regs.TCR.

33、bit.TSS=0; i=0; time_stamp=0; while(1) if (CpuTimer0.InterruptCount%4)=0) EALLOW; SysCtrlRegs.WDKEY= OxAA; /看门狗 EDIS; ,if (CpuTimer0.InterruptCount - time_stamp)10) time_stamp=CpuTimer0.InterruptCount; if(i=14) i =0; ,/通用I/0选择 void Gpio_select(void) EALLOW; /所有GPIO端口配置成I/0方式 GpioMuxRegs.GPAMUX.all=0

34、 x0; / T1PWM有效 GpioMuxRegs.GPAMUX.bit.T1PWM_GPIOA6=1; GpioMuxRegs.GPBMUX.all=0 x0; GpioMuxRegs.GPDMUX.all=0 x0; GpioMuxRegs.GPFMUX.all=0 x0; GpioMuxRegs.GPEMUX.all=0 x0; GpioMuxRegs.GPGMUX.all=0 x0;,GpioMuxRegs.GPADIR.all=0 x0; /GPIO PORT作为输入 /GPI0 PORT B15 B8输入,B7B0输出 GpioMuxRegs.GPBDIR.all=0 x00FF

35、; GpioMuxRegs.GPDDIR.all=0 x0; / GPIO PORT作为输入 GpioMuxRegs.GPEDIR.all=0 x0; / GPIO PORT作为输入 GpioMuxRegs.GPFDIR.all=0 x0; / GPIO PORT作为输入 GpioMuxRegs.GPGDIR.all=0 x0; / GPIO PORT作为输入 GpioMuxRegs.GPAQUAL.all=0 x0; /设置GPIO量化值为0 GpioMuxRegs.GPBQUAL.all=0 x0; GpioMuxRegs.GPDQUAL.all=0 x0; GpioMuxRegs.GPE

36、QUAL.all = 0 x0; EDIS; ,/系统初始化 void InitSystem(void) EALLOW; SysCtrlRegs.WDCR =0 x00AF; /配置看门狗 / 0 x00E8禁止看门狗,预定标系数Prescaler=1 / 0 x00AF使能看门狗,预定标系数Prescaler=2 SysCtrlRegs.SCSR=0; /看门狗产生RESET SysCtrlRegs.PLLCR.bit.DIV=10; /设置系统锁相环倍频系数5 SysCtrlRegs.HISPCP.a11=0 x1; /配置高速外设时钟预定标系数:除以2 SysCtrlRegs.LOSPC

37、P.a11=0 x2; /配置低速外设时钟预定标系数:除以4,/使能本应用程序使用的外设时钟 SysCtrlRegs.PCLKCR.bit.EVAENCLK=1; SysCtrlRegs.PCLKCR.bit.EVHENCLK=0; SysCtrlRegs.PCLKCR.bit.SCIAENCLK=0; SysCtrlRegs.PCLKCR.bit.SCIBENCLK=0; SysCtrlRegs.PCLKCR.bit.MCBSPENCLK=0; SysCtrlRegs.PCLKCR.bit.SPIENCLK=0; SysCtrlRegs.PCLKCR.bit.ECANENCLK = 0; S

38、ysCtrlRegs.PCLKCR.bit.ADCENCLK=0; EDIS; ,/ CPU定时器0中断服务子程序 interrupt void cpu_timer0_isr(void) CpuTimer0.InterruptCount+; /每次定时器中断,清除看门狗定时器计数器 EALLOW; SysCtrlRegs.WDKEY=0 x55; /Serve watchdog#1 EDIS; /响应该中断并允许接收更多的中断 PieCtrlRegs.PIEACK.al1=PIEACK_GROUP1; ,9.2.3 通用定时器寄存器,为了正确使用事件管理器的定时器,必须配置相关 定时器的5个寄

39、存器(如表9. 3所列),如果使用中断 方式需要配置更多的寄存器。,位15 Reserved 读出值为0,写操作无效,1.通用定时器全局控制寄存器,位14 T2STAT 通用定时器2的状态,只读 0 减计数 1 增计数 位13 T1STAT 通用定时器1的状态,只读 0 减计数 1 增计数,位12 T2CTRIPE T2CTRIP使能位 使能或禁止定时器2比较陷阱(T2CTRIP)。 仅当EXTCON(0) 1时,该位才有效 ; 当EXTCON(0) 0时,该位保留。 0 T2CTRIP禁止。 T2CTRIP不影响定时器2比较输出GPTCON(5)或 PDPINT标志EVIFRA(0)。 1

40、T2CTRIP使能。 当T2CTRI为低时,定时器比较输出为高阻抗状态,GPTCON(5)复位为0,且PDPINT标志EVIFRA(0)置为0。,位11 T1CTRIPE T1CTRIP使能位 当该位有效时,使能或禁止定时器1比较陷阱(T1CTRIP)输入。 仅当EXTCON(0) 1时,该位才有效 ; 当EXTCON(0) 0时,该位保留。 0 T1CTRIP禁止。T1CTRIP不影响定时器1比较输出GPTCON(4)或 PDPINT标志位EVIFRA(0)。 1 T1CTRIP使能。当T1CTRIP为低时,定时器1比较输出为高阻抗状态,GPTCON(4)复位为0,且PDPINT标志位EVI

41、FRA(0)置为1。,位109 T2TOADC 定时器2事件启动模数转换 00 不启动模数转换 01 下溢中断标志启动模数转换 10 周期中断标志启动模数转换 11 比较中断标志启动模数转换 位87 T1TOADC 定时器1事件启动模数转换 00 不启动模数转换 01 下溢中断标志启动模数转换 10 周期中断标志启动模数转换 11 比较中断标志启动模数转换,位6 TCMPOE 定时器比较输出使能。 使能或禁止定时器比较输出。 仅当EXTCON(0) 1时,该位才有效 ; 当EXTCON(0) 0时,该位保留。 当该位有效时,当PDPINT/T1CTRIP为低且EVIMRA(0) 1,该位复位为

42、0。 0 定时器比较输出T1/2PWM_T1/2CMP置成高阻态。 1 定时器比较输出,T1/2PWM_T1/2CMP由独立定时器比较逻辑驱动。,位5 T2CMPOE 定时器2比较输出使能。 使能或禁止事件管理器定时器2比较输出T2PWM_T1CMP。 仅当EXTCON(0) 1时,该位才有效 ; 当EXTCON(0) 0时,该位保留。 该位有效时,当T2CTRIP为低且使能时,它复位为0。 0 定时器2比较输出,T2PWM_T2CMP置成高阻态。 1 定时器2比较输出,T2PWM_T2CMP由独立的定时器2比较逻辑驱动。,位4 T1CMPOE 定时器1比较输出使能。 使能或禁止事件管理器定时

43、器1比较输出T1PWM_T1CMP。 仅当EXTCON(0) 1时,该位才有效 ; 当EXTCON(0) 0时,该位保留。 有效时,当T1CTRIP为低且使能时,它复位为0。 0 定时器1比较输出,T1PWM_T1CMP置成高阻态。 1 定时器1比较输出,T1PWM_T1CMP由定时器1比较逻辑驱动。,位32 T2PIN 通用定时器2比较输出极性。 00 强制低电平 01 低电平有效 10 高电平有效 11 强制高电平 位10 T1PIN 通用定时器1比较输出极性。 00 强制低电平 01 低电平有效 10 高电平有效 11 强制高电平,定时器x计数寄存器(TxCNT,x1、2、3或4),位1

44、50 T1CNT 保存定时器1计数器的当前值,2. 通用定时器计数寄存器,定时器x计数寄存器(TxCNT,x1、2、3或4),位150 T1CNT 保存定时器1计数器的当前值,3. 通用定时器比较寄存器,定时器x比较寄存器(TxCMPR,x1、2、3或4),位150 T1CMPR 保存定时器1计数器的比较值,3. 通用定时器比较寄存器,定时器x周期寄存器 (TxPR,x1、2、3或4),位150 T1PR 保存定时器1计数器的周期值,4. 通用定时器周期寄存器,定时器x控制寄存器 (TxCON,x1、2、3或4),注:T2SWT1/T4SWT3位和SELT1PR/SELT3PR位在T1CON和

45、T3CON中保留。,5. 通用定时器控制寄存器,位1514 FREE,SOFT 仿真控制位 00 一旦仿真挂起,立即停 01 一旦仿真挂起,在当前定时器周期结束后停止 10 操作不受仿真挂起的影响 11 操作不受仿真挂起的影响 位13 Reserved 保留位,读出值为0,写操作无效,位1211 TMODE1 TMODE0 计数模式选择 00 停止/保持 01 连续增/减计数模式 10 连续增计数模式 11 定向增/减计数模式 位108 TPS2TPS0 输入时钟预分频 000 x/1 001 x/2 010 x/4 011 x/8 100 x/16 101 x/32 110 x/64 111

46、 x/128 (xHSPCLK),定时器的计数频率主要由以下参数确定: 外部晶振(30 MHz) 内部PLL状态寄存器(系统时钟=外部晶振X PLL倍频分数/2=30 MHzX 10/2=150 MHz) 高速时钟预定标(H ISPCP=系统时钟/2=75 MHz) 定时器时钟预定标系数(1128),同时可以根据上述设置和参数确定期望的定时器周期,例如100 ms的定时器周期可以采用如下设置: 定时器输入脉冲=(1/外部时钟频率)1/PLLHISPCP定时器预定标系数 17067 us= (1/30 MHz)1/52128 100 ms/17 067 us=58 593 因此可以设置周期寄存器

47、TxPR的值58593,此时定时器的输出脉冲即为100 ms 。,位7 T2SWT1/T4SWT3 事件管理EVA:起T2SWT1的作用(即用通用定时器1启动通用定时器2)。用通用定时器1的定时器使能位来启动通用定时器2。在T1CON中,这一位是保留位。 事件管理EVB:起T4SWT3的作用(即用通用定时器3启动通用定时器4)。用通用定时器3的定时器使能位来启动通用定时器4。在T3CON中,这一位是保留位。 0 使用自身的定时器使能位(TENABLE) 1 使用T1CON(对于EVA)或T3CON(对于EVB)中的定时器使能位来使能或禁止操作,忽略自身的定时器使能位(TENABLE)。,位6

48、TENABLE 定时器使能位 0 禁止定时器操作(即定时器置于保持状态且复位预分频器) 1 使能定时器操作 位54 TCLKS1TCLKS0 时钟源 00 内部(如:HSPCLK) 01 外部(如:TCLKINx) 10 保留 11 正交脉冲编码电路(QEP),位32 TCLD1TCLD0 定时器比较寄存器重装载条件 00 计数器值为0时,重装载 01 计数器值为0或等于周期寄存器值时,重装载 10 立即重装载 11 保留 位1 TECMPR 定时器比较使能位 0 禁止定时器比较操作 1 使能定时器比较操作,位0 SELT1PR/SELT3PR 事件管理EVA:为SELT1PR(周期寄存器选择

49、位)。当T2CON中该位设置为1时,定时器1的周期寄存器对定时器2有效,忽略定时器2的周期定时器。在T1CON中,该位保留。 事件管理EVB:为SELT3PR(周期寄存器选择位)。当T4CON中该位设置为1时,定时器3的周期寄存器对定时器4有效,忽略定时器4的周期定时器。在T3CON中,该位保留。 0 使用自身的周期寄存器 1 使用T1PR(在EVA模块)或T3PR(在EVB模块)作为周期寄存器,而忽略自身的周期寄存器。,9.3 比较单元及PWM输出,事件管理器(EVA)模块中有3个比较单元(比较单元1,2和3),事件管理器(EVB)模块中也有3个比较单元(比较单元4,5和6)。每个比较单元都

50、有2个相关的PWM输出。比较单元的时钟基准由通用定时器1和通用定时器3提供。事件管理器的比较单元做为PWM信号输出的辅助电路,主要用来控制信号处理器的PWM输出的占空比。,9.3.1 比较单元功能介绍,事件管理器比较单元框图,9.3 比较单元及PWM输出,比较单元的功能结构如下图所示。核心模块是比较逻辑,主要由事件管理器定时器1的计数寄存器T1CNT和比较寄存器CMPRx构成。两者比较第一次匹配,则信号的上升沿将输入到“死区单元”。在同步PWM模式下第二次T1CNT和CMPRx匹配产生PWM信号的下降沿。,比较单元的输出逻辑由操作控制寄存器(Action ControlRegister, AC

51、TRA)和通用控制寄存器(COMCONA)控制,可以通过调整这两个寄存器的设置调整PWM输出信号的波形。,所有6个PWM输出均可以选择4种状态中的1种,这4种状态是: (1)高有效。T1CNT和CMPRx第一次比较匹配使PWM输出 信号由0变为1,第二次匹配发生后PWM输出信号又由1变为0。 (2)低有效。T1CNT和CMPRx第一次比较匹配使PWM输出 信号由1变为0,第二次匹配发生后PWM输出信号又由0变为1。 (3)强制高。PWM输出总是1。 (4)强制低。PWM输出总是0。,9.3.2 PWM信号,PWM信号的一个很重要的用途就是数字电机控制。,在电机控制系统中,PWM信号控制功率开关

52、器件的导通和关闭,功率器件为电机的绕组提供期望的电流和能量。 相电流的频率和能量可以控制电机的转速和转矩,这样提供给电机的控制电流和电压都是调制信号,而且这个调制信号的频率比PWM载波频率要低。 采用PWM控制方式可以为电机绕组提供良好的谐波电压和电流,避免因为环境变化产生的电磁扰动,并且能够显著提高系统的功率因数。 未能够给电机提供具有足够驱动能力的正弦波控制信号,可以采用PWM输出信号经过NPN或PNP功率开关管实现。,9. 3. 3 与比较器相关的PWM电路,图9. 18 EVA模块的PWM电路功能框图,EVA模块的PWM电路功能框图,它包含以下功能单元: 非对称/对称波形发生器; 可编

53、程死区单元(DBU) ; 输出逻辑; 空间矢量(SV) PWM状态机。,EVB模块的PWM电路功能模块框图与EVA的一样,只是改变相应的寄存器配置。另外,非对称/对称波形发生器与在通用定时器中的一样。,C28x处理器上集成的PWM电路,能够在电机控制和运动控制等应用领域中,减少了CPU的开销和用户的工作量。与比较单元相关的PWM波形的产生由以下寄存器控制: 对于EVA模块,由T1CON、COMCONA、ACTRA和DBTCONA控制; 对于EVB模块,由T3CON、 COMCONB、ACTRB和DBTCONB控制。,比较器及相关PWM信号输出可实现如下功能: 5个独立的PWM输出,其中3个由比

54、较单元产生,2个由通用定时器产生。另外还有3个由比较单元产生的PWM互补输出; 比较单元产生的PWM输出的死区可编程配置; 输出脉冲信号的死区的最小宽度为1个CPU时钟周期; 最小的脉冲宽度是1个CPU时钟周期,脉冲宽度调整的最小量也是一个CPU时钟 周期;,PWM最大分辨率为16位; 双缓冲结构可快速改变PWM的脉宽和载波频率; 带有功率驱动保护中断; 能够产生可编程的非对称、对称和空间矢量PWM波形; 比较寄存器和周期寄存器可自动装载,减小CPU的开销。,9. 3. 4 PWM输出逻辑及死区控制,1. PWM输出逻辑,输出逻辑电路决定了比较发生匹配时,输出引脚PWMx (x=112)的输出

55、极性和需要执行的操作。 与每个比较单元相关的输出可被规定为低电平有效、高电平有效、强制低或强制高,可以通过适当地配置ACTR寄存器来确定PWM输出的极性和操作。,当下列任意事件发生时,所有的PWM输出引脚被置于高阻状态。,软件清除COMCONx9位; 当 未屏蔽时,硬件将 引脚拉低; 发生任何复位事件时。 有效的 (当使能时)引脚和系统复位使寄存器COMCONx和ACTRx设置无效。,输出逻辑电路(OLC)的比较单元输出逻辑的输入包括: 来自死区单元的DTPH1、 、DTPH2、 、DTPH3、 和比较匹配信号; 寄存器ACTRx中的控制位; 和复位信号。 比较单元输出逻辑的输出包括: PWM

56、x,x=16(对于EVA); PWMy,y=719(对千RVB)。,2 死区控制,在许多运动/电机和功率电子应用中,常将功率器件上下臂串联起来控制。上下被控的臂绝对不能同时导通,否则会由于短路而击穿。因而需要一对不重叠的PWM输出(DTPHx和 )正确地开启和关闭上下臂。这种应用允许在一个器件开启前另一个器件已完全关闭这样的延时存在,所需的延迟时间由功率转换器的开关特性以及在具体应用中的负载特征所决定,这种延时就是死区。,事件管理器模块(EVA模块和EVB模块)都有各自独立的可编程死区控制单元(分别是DBTCONA和DBTCONB),可编程死区控制单元有如下特点: 1个16位死区控制寄存器DB

57、TCONx(可读写); 16位输入时钟预定标器:1、1/2、1/4、1/8、1/16和1/32; CPU时钟输入; 3个4位递减计数寄存器; 控制逻辑。,分别由比较单元1、2和3的非对称/对称波形产生器提供的PH1 、PH2和PH3作为死区单元的输入,死区单元的输出是DTPH1、DTPH1_、DTPH2、DTPH2_、 DTPH3和DTPH3_,分别相对应于PH1、PH2和PH3。对于每一个输人信号PHx,产生2个输出信号DTPHx和DTPHx_。,当比较单元和其相关输出的死区未被使能时,这两个输出信号跳变沿完全相同(信号本身相反)。 当比较单元的死区单元使能时,这两个信号的跳变沿被一段称作死区的时间间隔分开,这个时间段由DBTCONx寄存器的位来决定,如图9. 22所示。假设DBTCONx 11 8中的值为m,且DBTCONx 4 2中的值相应的预定标参数为x/p,这时死区值为(pm)个HSPCLK时钟周期。,9. 3. 5 PWM信号的产生,1.非对称PWM信号的产生,通用定时器1(或通用定时器3)开始后,比较寄存器在执行每个PWM周期过程中可重新写入新的比较值,从而调整控制功率器件的导通和关闭的PWM输出的占空比。 由于比较寄存器带有映射

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论