5中断及定时器9.docx

上传人:b****8 文档编号:30403760 上传时间:2023-08-14 格式:DOCX 页数:17 大小:74.28KB
下载 相关 举报
5中断及定时器9.docx_第1页
第1页 / 共17页
5中断及定时器9.docx_第2页
第2页 / 共17页
5中断及定时器9.docx_第3页
第3页 / 共17页
5中断及定时器9.docx_第4页
第4页 / 共17页
5中断及定时器9.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

5中断及定时器9.docx

《5中断及定时器9.docx》由会员分享,可在线阅读,更多相关《5中断及定时器9.docx(17页珍藏版)》请在冰豆网上搜索。

5中断及定时器9.docx

5中断及定时器9

第5章中断及定时器

本章简要介绍了TMS320DM642的中断系统及定时器,对中断控制寄存器和定时器寄存器进行了重点阐述,本章的知识要点为掌握中断和定时器寄存器的配置方法,本章建议安排4个课时进行学习。

5.1中断系统

中断系统是TMS320DM642处理器的重要组成部分,DM642共有16级中断INT0-INT15,但DSP的中断事件多于16个,缺省情况下INT0-INT15与中断事件之间的映射关系如表5-1所示,DM642的CPU有3种类型中断,即RESET(复位)、不可屏蔽中断(NMI)和可屏蔽中断(INT4-INT15)。

表5-1TMS320DM642的中断源

中断编号

中断选择控制寄存器(MUXL,MUXH)

中断选择控制寄存器(缺省值)

中断事件

中断功能

INT0

-

-

RESET

复位中断

INT1

-

-

NMI

NMI中断

INT2

-

-

保留

保留、未用

INT3

-

-

保留

保留、未用

INT4

MUXL[4:

0]

00100

GPINT4/EXTINT4

GPIO中断4/外部中断4

INT5

MUXL[9:

5]

00101

GPINT5/EXTINT5

GPIO中断5/外部中断5

INT6

MUXL[14:

10]

00110

GPINT6/EXTINT6

GPIO中断6/外部中断6

INT7

MUXL[20:

16]

00111

GPINT7/EXTINT7

GPIO中断7/外部中断7

INT8

MUXL[25:

21]

01000

EDMA_INT

EDMA通道(0~63)中断事件

INT9

MUXL[30:

26]

01001

EMU_DTDMA

EMUDTDMA中断事件

INT10

MUXH[4:

0]

00011

SD_INTA

SDRAM的Timer中断

INT11

MUXH[9:

5]

01010

EMU_RTDXRX

INT12

MUXH[14:

10]

01011

EMU_RTDXTX

INT13

MUXH[20:

16]

00000

DSP_INT

DSP_INT中断

INT14

MUXH[25:

21]

00001

TINT0

定时器0中断事件

INT15

MUXH[30:

26]

00010

TINT1

定时器1中断事件

-

-

01100

XINT0

-

-

01101

RINT0

-

-

01110

XINT1

-

-

01111

RINT1

-

-

10000

GPINT0

GPINT0中断事件

-

-

10001

保留

未用

-

-

10010

保留

未用

-

-

10011

INT2

定时器1中断事件

-

-

10100

保留

未用

-

-

10101

保留

未用

-

-

10110

ICINT0

-

-

10111

保留

未用

-

-

11000

EMAC_MDIO_INT

EMAC相关中断

-

-

11001

VPINT0

视频口0中断事件

-

-

11010

VPINT1

视频口1中断事件

-

-

11011

VPINT2

视频口2中断事件

-

-

11100

AXINT0

音频发送中断事件

-

-

11101

ARINT0

音频接收中断事件

-

-

11110~11111

保留

未用

5.1.1复位

复位是最高级别中断,复位与其它类型中断在以下方面是不同的:

●RESET是低电平有效信号,而其它的中断是边沿有效信号;

●产生RESET中断,低电平必须保持10个时钟周期;

●复位取消所有的指令执行,并使所有的寄存器恢复默认设置;

●复位中断服务程序的指令包的存放地址必须为0;

●复位不受跳转指令的影响。

复位中断后,CPU恢复到一个确定的状态下,程序从地址0处开始执行。

5.1.2不可屏蔽中断(NMI)

NMI优先级别为2,它通常用来向CPU发出严重硬件问题的警报,如电源故障等。

中断使能寄存器(IER)的NMIE位用来控制NMI。

NMIE=1时,使能NMI中断;NMIE=0时,禁止NMI中断。

需注意的是,通过指令NMIE只能置1,不能清0。

NMIE在复位或一个NMI发生时被清零。

如果NMIE=0,所有可屏蔽中断(INT4-INT15)也都被禁止。

5.1.3可屏蔽中断(INT4-INT15)

DM642有12个可屏蔽中断,可以用于外围芯片、片内外设等,也可由软件控制或者不用。

当一个可屏蔽中断发生时,要满足下列条件,CPU才能响应该中断;

●控制状态寄存器(CSR)中的全局中断使能位GIE=1;

●中断使能寄存器(IER)中的NMIE=1;

●IER中相应中断使能位IEm=1;

●中断标志寄存器(IFR)中没有更高优先级别的中断标志位为1。

5.1.4中断优先级

三种中断中,复位RESET具有最高优先级,不可屏蔽中断为第2优先级,相应信号为NMI信号,最低优先级中断为INT15。

RESET、NMI和一些INT4-INT15信号反映在DM642芯片的引脚上,有些INT4-INT15信号被片内外设所用,有些可能无用,或在软件控制下使用。

DM642的中断优先级如表5-2所示。

表5-2中断优先级

优先级

中断名称

中断类型

最高

 

 

最低

RESET

复位

NMI

不可屏蔽

INT4

可屏蔽

INT5

可屏蔽

INT6

可屏蔽

INT7

可屏蔽

INT8

可屏蔽

INT9

可屏蔽

INT10

可屏蔽

INT11

可屏蔽

INT12

可屏蔽

INT13

可屏蔽

INT14

可屏蔽

INT15

可屏蔽

5.1.5中断控制寄存器

DM642芯片有8个中断控制寄存器管理中断服务,如表5-3所示。

表5-3中断控制寄存器

缩写

寄存器名称

描述

CSR

控制状态寄存器

控制全局使能或禁止中断,CSR的第0位用于控制中断,GIE=1时,使能所有可屏蔽中断,GIE=0时,禁止所有可屏蔽中断。

IER

中断使能寄存器

使能或禁止中断处理,控制每一个中断源是否使能,IER位0对应于复位,位1对应于NMIE,位4-15分别对应于IE4-IE15,通过IER中相应某个中断位置1使能对应中断,清0禁止对应中断。

IFR

中断标志寄存器

显示出有中断请求但尚未得到服务的中断,中断标志寄存器(IFR)包括INT4-INT5和NMI的状态,IFR位0永远为0,位1对应于NMIF,位4-15分别对应于IF4-IF15,其余位为保留位,当一个中断发生时,IFR中的相应位被置1,否则为0。

ISR

中断设置寄存器

人工设置IFR中的标志位,ISR的位4-15分别对应于IS4-IS15,ISR的IS4-IS15位写1会引起IFR对应中断标志位置1。

ICR

中断清除寄存器

人工清除IFR中的标志位,ICR的位4-15分别对应于IC4-IC15,ICR的IC4-IC15位写1会引起IFR对应中断标志位置0。

ISTP

中断服务表指针

指向中断服务表的起始地址

NRP

NMI中断返回指针

包含从不可屏蔽中断返回的地址,该中断返回通过BNRP指令完成。

IRP

中断返回指针

包含从可屏蔽中断返回的地址,该中断返回通过指令BIRP完成

5.1.6中断服务表(IST)

IST(InterruptServiceTable)是一个512KB的内存块,由16个连续的中断服务取指包(ISFP)组成,每个ISFP占32个字节,包含8条指令,中断服务取址包如图5-1所示。

图5-1中断服务取指包

5.1.7中断服务表指针寄存器(ISTP)

中断服务表指针寄存器(ISTP)用于定位中断服务程序入口。

ISTP中的字段ISTB确定IST的基地址:

HPEINT字段确定当前响应的中断。

ISTP的格式如图5-2所示。

表5-4描述了各字段含义及使用方法。

3116

ISTB

15109543210

ISTB

HPEINT

0

0

0

0

0

图5-2中断服务表指针寄存器(ISTP)

表5-4ISTP各字段描述

字段

字段名

描述

4:

0

设置为0

9:

5

HPEINT

IER寄存器使能的当前最高优先级中断的序号(相应位IFR的位数)。

如果没有中断挂起和使能,HPEINT的值为00000b

31:

10

ISTB

IST的基地址,复位时置0.复位完成后,可通过改写ISTB重新定位IST

复位取指包必须定位于地址0处,而IST中的其余取指包可放在256个字范围内的任何程序存储单元内。

IST的位置由中断服务表基值(ISTB)确定。

5.2定时器

5.2.1概述

TMS320DM642的通用32位定时器可以用于以下5种情况:

事件计时、事件计数、中断CPU、发送同步指令给DMA、事件计数。

定时器有两种模式,且能够被内部源或者外部时钟计时。

定时器拥有一个输入管脚和一个输出管脚,输入管脚和输出管脚(TINP和TOUT)能够作为定时器的时钟输入和时钟输出,它们也可分别设定为通用的输入和输出引脚。

如果使用内部时钟时,定时器可以发信号给一个外部的A/D转换器使之开始一次转换,或者定时器可以触发DMA控制器开始一个数据的传送;使用外部时钟,定时器可以对外部事件进行计数并且在达到指定的事件数后发中断信号给CPU,TMS320DM642定时器不支持竞争中断,定时器内部输入时钟为1/8CPU频率。

图5-3TMS320DM642的定时器的模块框图

定时器可以选择内部时钟,也可以使用外部时钟提供时钟源。

定时器拥有一个输入引脚和一个输出引脚,输入引脚和输出引脚可以作为定时器的时钟输入和时钟输出,他们也可分别配置为通用的输入和输出引脚,图5-3给出了定时器的模块框图。

5.2.2定时器寄存器

配置定时器的3个寄存器如表5-5所示。

表5-5定时器寄存器

名称和缩写

描述

十六进制地址

定时器0

定时器1

定时器2

定时器控制器

(CTL)

决定定时器的运行模式,监控定时器的状态,并且控制TOUT引脚的功能

01940000

01980000

01AC0000

定时器计数器

(CNT)

增量计数器的当前值

01940008

01980008

01AC0008

定时器周期寄存器

(PRD)

控制定时器输入时钟的循环次数,这个数字控制TSTAT信号的频率

01940004

01980004

01AC0004

(1)定时器控制寄存器(CTL)

图5-4显示了定时器控制寄存器各位的含义。

表5-6描述了控制寄存器的各位描述信息。

3112111098

保留

TSTAT

INVINP

CLKSRC

C/P

76543210

HLD

GO

保留

PWID

DATIN

DATOUT

INVOUT

FUNC

图5-4定时器控制寄存器(CTL)

表5-6定时器控制寄存器(CTL)字段描述

名称

描述

31:

12

Rsvd

保留

11

TSTAT

定时器状态。

定时器的输出值

10

INVINP

TINP的转换控制位,只有在CLKSRC=0时才有效。

INVINP=0:

TINP置为不驱动定时器;INVINP=1:

TINP转换为驱动定时器

9

CLKSRC

定时器输入时钟源。

CLKSRC=0:

外部时钟源驱动TINP引脚;

CLKSRC=1:

内部时钟源:

1/8CPU时钟(C64x)

8

C/

时钟/脉冲模式。

C/

=0:

脉冲模式,在定时器达到定时器周期后TSTAT活动一个CPU时钟,PWID决定它什么时候停止;C/

=1:

时钟模式,TSTAT每一个周期

7

HLD

保持,计数器可以读或者写而不用考虑HLD的值。

HLD=0:

计数器不计数并且保持当前的状态;HLD=1:

计数器被准许计数

6

GO

GO位,复位计数器并且启动计数器。

GO=0:

定时器无效;

GO=1:

如果HLD=1,则计数寄存器被置为0并且在下一个时钟开始计数

5

Rsvd

保留

4

PWID

脉冲宽度,仅在脉冲模式下使用(C/

=0)。

PWID=0:

在定时器计数器的值等于定时器周期的值之后,TSTAT在一个定时器输入时钟周期内无效;PWID=1:

在定时器计数器的值等于定时器周期的值之后,TSTAT在两个定时器输入时钟周期内无效

3

DATIN

数据进入:

在TINP引脚的值

2

DATOUT

数据输出。

当FUNC=0时:

DATOUT被TOUT驱动;

当FUNC=1时:

在被INVOUT倒置后,TSTAT被TOUT驱动

1

INVOUT

TOUT翻转控制。

仅在FUNC=1时使用。

INVOUT=0:

TSTAT驱动TOUT;INVOUT=1:

反置的TSTAT驱动TOUT

0

FUNC

TOUT引脚的功能。

FUNC=0:

TOUT为一般的通用输出引脚;FUNC=1:

TOUT为定时器的输出引脚

(2)定时器周期寄存器(PRD)

定时器周期寄存器(如图5-5所示)存储着定时器的输入时钟的计数周期值,这个值控制着TSTAT的频率。

310

定时器周期

图5-5定时器周期寄存器(PRD)

(3)定时器计数寄存器(CNT)

定时器计数寄存器(如图5-6所示)在其能够计数时开始增加。

在达到定时器周期寄存器中的数值之后,定时器计数寄存器在下一个CPU时钟被复位为0。

310

定时器计数

图5-6定时器计数寄存器(CNT)

5.2.3定时器控制

(1)时钟源

定时器输入时钟低电平到高电平的转换(如果INVIP=1,则为高到低)启动定时器计数。

定时器的输入时钟源有两种:

●CLKSRC=0时选择TINP引脚的输入值。

这个信号是同步的,以防止任意的由外部异步输入引起的不稳定。

TINP引脚上的值反映在DATIN上。

●CLKSRC=1时选择内部时钟源,C64x使用1/8CPU时钟作为内部时钟源。

(2)计数

定时器计数器以CPU时钟速率运行,输入定时器的时钟信号指示作为内部计数使能信号的一个触发源。

边沿检测电路来进行边沿监测,一旦检测到有效的边沿,就产生一个CPU时钟宽的时钟使能脉冲。

对用户而言,计数器好像是由输入时钟产生的使能信号驱动进行计数一样。

定时器计数值与在定时器周期寄存器(PRD)中设的值相等时,定时器将在下一个CPU时钟被复位为0。

因此,计数器计数是从0到N的。

考虑这样一种情况,周期是2而定时器时钟源为1/4CPU时钟(CLKSRC=1)(C64x/C67x),一旦开始,定时器计数为:

0,0,0,0,1,1,1,1,2,0,0,0,1,1,1,1,2,0,0,0,……。

值得注意的是,虽然整个计数过程中计数器的值达到了2,但是8个CPU时钟周期(2×4),而不是12个CPU时钟周期(3×4)。

所以,用户在向下计数周期寄存器中设置的值应该是TIMERPERIOD(定时周期数),而不是TIMERPERIOD+1.

(3)启动与停止

表5-7阐述了如何使用控制寄存器的GO和HLD位使能定时器的基本操作。

配置一个定时器有以下四个基本步骤:

●如果定时器当前没有在挂起状态,则设置定时器为保持状态(

=0)。

注意在复位系统后,定时器就处于保持状态。

●在定时器周期寄存器(PRD)中写入期望的值。

●在定时器控制寄存器(CTL)中写入期望的值,不要改变GO和

位的值。

●将定时器控制寄存器(CTL)中的GO和

位置为1,启动定时器。

表5-7定时器的GO和HLD操作

操作

GO

描述

定时器挂起

0

0

不允许计数,计数器暂停

定时器挂起后重新启动

0

1

接着挂起时的值继续计数

保留

1

0

未定义

启动定时器

1

1

定时器计数器复位到0,且使能时开始计数,一旦设置,GO自动清零

(4)定时器脉冲产生

两种基本的脉冲产生模式分别是脉冲模式和时钟模式,可以用定时器控制寄存器(CTL)中的C/

位来选择模式。

在脉冲模式下,CTL中的PWID位可以设置脉冲的宽度为一个或者两个时钟周期。

该特点的目的是在TSTAT驱动TOUT输出时,提供最小的脉冲宽度。

在TOUT作为一个定时器引脚(FUNC=1)时,TSTAT驱动这个引脚,并且在INVOUT=1时可以被反置。

脉冲模式和时钟模式时不同的TSTAT定时参量方程式如表5-8所示。

表5-8TSTAT在脉冲模式和时钟模式下的参数

模式

频率

周期

最高宽

最低宽

脉冲模式

时钟模式

(5)控制寄存器中的边界情况

以下几种边界情况会影响定时器的工作:

●周期寄存器(PKD)和计数寄存器(CNT)的值都是0:

在器件复位后并且在定时器启动前,TSTAT保持为0。

在置

=1和GO=1,启动定时器后,定时器的操作依赖于C/P模式的选择。

在脉冲模式下,不管定时器是否被锁定,TSTAT都为1;在时钟模式下,当定时器被锁定时(

=0),TSTAT保持它当前的值;当

=1时,TSTAT会按1/2的CPU时钟频率变化。

●计数溢出:

当定时器计数寄存器(CNT)被置为一个比定时器周期寄存器(PRD)还要大的值时,定时器会首先计数到最大值FFFFFFFFh,然后恢复为0,再继续计数。

●向一个正在运行的定时器的寄存器中写入数据:

来自于外围设备总线而不考虑寄存器对CNT的数据更新和定时器控制寄存器(CTL)新的状态写入。

●在脉冲模式下小的定时器周期值:

如果脉冲模式下设置的周期PERIOD≤(PWID+1)时,TSTAT会一直保持为高电平。

(6)定时器引脚配置为通用I/O

在器件复位时,定时器引脚TINP和TOUT分别作为通用I/O引脚,通过设置定时器控制寄存器(CTL),引脚TINP和TOUT甚至能够在定时器运行时作为通用I/O引脚。

当定时器不运行时,TINP引脚作为通用输入引脚;在定时器运行时,如果CLKSRC=1则TINP引脚作为一个通用输入引脚,此时意味着一个内部时钟源被用来代替了TINP引脚。

TINP引脚的输入值在CTL的DATIN位上是可读的。

当CTL中的FUNC=0时,TOUT引脚是一个通用输出引脚,不管定时器操作如何。

FUNC位用来选择将DATOUT的值或TSTAT的值作为TOUT引脚的输出。

(7)定时器中断

TSTAT信号能直接产生CPU的中断和EDMA同步事件,中断的频率和TSTAT的频率相同。

(8)仿真

对于C64x,在仿真暂停期间,不管时钟源如何,定时器都会继续计数。

 

习题:

1.TMS320DM642有多少个中断源?

中断优先级是怎样地?

2.简述TMS320DM642的三个定时器寄存器(CTL、PRD、CNT)每位的含义。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 公共行政管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1