微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > MCU和DSP > TMS320F24x的实时多中断任务处理

TMS320F24x的实时多中断任务处理

时间:04-02 来源:互联网 点击:
引言

TMS320F240内部集成了完善的外围设备,包括2个10位的A/D转换器和1个串口通信接口模块(SCI),以及其独有的、可提供3个 16位的定时器,3个单比较单元和3个全比较单元的事件管理器(event manager)单元。F240芯片采用多个中断源共享DSP内核同一中断级的中断结构,与常用的数学控制芯片相比,它提供了更多的中断源,可以满足对复杂控制对象的实时多中断任务处理要求,使得用户能更加方便、灵活地编写中断处理程序。

1 TMS320F240中断系统的特点及中断响应过程

1.1 TMS320F240的中断系统的特点

TMS320F240芯片中断系统的基本特点是:通过赋予每个中断源以不同的优先级,使多个中断源可以共享DSP内核中同一中断级,从而提供更多的中断源和更灵活的中断处理方法。具体而言,在F240器件中,所有的中断请求都是送至DSP内核进行处理的。对可屏蔽中断,DSP内核只提供了6个可屏蔽的中断级(INT1~INT6)。而F240的可屏蔽中断源大大超过了6个(例如:仅F240器件的3个通用定时器就有12个可屏蔽中断源,用户可使用的中断源则多达36个)。所以,在F240中,这6个中断级中的每一个都会被多个中断源共享,即F240在实现多中断任务时,基本上都会出现多中断源共享DSP内核同一中断的情况。当多于一个的硬件中断被触发挂起时,F240将根据优先级别的高低顺序执行相应的中断服务子程序。F240器件可以识别下列 4种类型的中断源:

①复位中断;
②由6个外部引脚(XINT1、XINT2、XINT3、PDPINT、RS以及NMI引脚)产生的外部中断;
③由片内外设模块,包括事件管理模块(EV)、A/D转换模块(ADC)、串行通信模块(SCI)等产生的外设中断;
④由INTR指令、NMI指令或TRAP指令等引起的软件中断等。

其中,除了软件中断、两个外部硬件中断RS和NMI是不可屏蔽中断之外,其余的都是可屏蔽中断。相对于可屏蔽中断而言,不可屏蔽中断涉及的寄存器较少,处理方法较为简便。文中主要对可屏蔽中断的多中断任务处理进行详细分析。

1.2 TMS320F240多级中断寄存器的结构

在TMS320F240的程序空间中,中断向量占据了0000h~0003fh的地址空间。中断向量地址被分为两个地址单元,从而双字的转移指令可存放在这些单元中。为了处理多中断源共享DSP内核同一中断级的问题,DSP内部提供了多级中断控制寄存器以满足需要。

(1)CPU总中断级寄存器

①中断屏蔽寄存器(IMR)。它包含用于使能或禁止每一中断级(INT1~INT6)的屏蔽位,地址为0004h,各位情况如图1所示。它用来屏蔽外部和内部硬件中断(NMI和RS除外)。当要屏蔽某硬件中断时,就把相应位清0;当要开放某硬件中断时,就把相应位置1,并且它的每一位不受硬件复位的影响。在图1中,0表示一般情况下读的数为0,R表示读,W表示写,-0表示复位后这位为0。



②中断标志寄存器(IFR)。它包含用以指示INT1~INT6中断级中,已经发送至CPU的可屏蔽中断请求的标志位,地址为0006h,各位情况如图2 所示。当有一个可屏蔽中断到达CPU时,IFR的相应标志位就置1,表明相应中断(INT1~INT6)正在被挂起或正在等待响应。将1写入到相应的标志位,可清除相应位,并清除其中断请求。在图2中,0表示一般情况下读的数为0,R表示读,W1C表示写1时把这位清为0,-0表示复位后这位为0。



(2)外设备中断源分级控制寄存器

由外设产生的每一个特定中断源,DSP都提供两个相应的分级控制寄存器,包括一个子标志位中断控制寄存器和一个子屏蔽位中断控制寄存器。对于由事件管理器产生的中断事件,每个中断源都有相应的中断控制寄存器,如图3所示。



①三组事件中断子屏蔽寄存器(EVIMRA/EVIMRB/EVIMRC),用以屏蔽对应的事件管理器中断。EVIMRi(i=A,B,C)各位的意义基本与IMR  
一致。

②三组事件中断子标志寄存器(EVIFRA/EVIFRB/EVIFRC),用以指示对应的事件管理器中断。EVIFRi(i=A,B,C)各位的意义基本与IFR一致。

对于系统模块中断,其各个中断事件的中断屏蔽位和中断标志位由各个专用的分级模块寄存器提供。如SCI中断,其扫收中断RXINT的屏蔽与使能由SCI模块内的控制寄存器SCICLT2的中断位RX/BKEN设置。当接收中断产生后,SCI的接收状态寄存器SCIRXST的RXRDY位置1,以表示接收中断产生。

另外,值得注意的是,DSP内核的ST0状态寄存器中还有一个中断总屏蔽位-INTM。INTM为0时,开中断,允许没有被屏蔽的中断使能;INTM为1 时,则禁止所有可屏蔽中断。

1.3 TMS320F240的中断响应过程

(1)TMS320F240中断响应过程
当有中断事件发生时,F240器件分三个阶段进行中断处理。
①接收中断请求。由软件中断(来自程序代码)或硬件中断(来自引脚或片内外设)提出中断请求,将主程序挂起。
②响应中断。如果中断是可屏蔽的,当这些可屏蔽中断的应用条件满足时,F240器件响应中断;对于不可屏蔽的硬件中断和软件中断,F240器件将立即作出响应。
③执行中断服务子程序。一时中断被响应,F240器件便转移到其相应的中断子程序ISR(Interrupt Service Routine)。F240按用户放置在预定地址(向量存储单元)处的转移指令,执行用户写好的中断服务程序。

在完成对多中断任务的实时处理时,对不同级别的中断源响应,直接进入相应的ISR进行处理即可。对共享DSP内核中同一中断优先级的多中断源,DSP则利用内部的多级中断控制寄存器,对每一个中断源发出的中断请求都用多个中断标志进行标识。图4是一个多中断源共享INT3级中断的多中断任务请求响应处理过程示意图。



当接收到一个中断信号(TPINT2/TOFINT3)时,相应的中断源子标志寄存器(EVIFRB)中的标志位被置位,用以指示中断已被请求。如果中断源子屏蔽寄存器(EVIMRB)中的屏蔽位也被设置为开中断,则该信号被送至仲裁逻辑器,仲裁逻辑可能同时从一个或多个中断控制寄存器接收到类似的多中断任务信号。仲裁逻辑通过比较这些竞争中断请求的优先级,将具有最高优先级的中断送至CPU。CPU的总中断级标志寄存器IFR中与所接收的中断优先级相对应的中断标志位将被置位,指示中断被挂起。如果总中断级屏蔽寄存器IMR中相应的屏蔽位为1,并且DSP中断总屏蔽位INTM为 0,则CPU响应该中断并执行相应的中断服务子程序。

(2)中断向量偏移地址
为了更好地处理多中断源复用的问题,DSP采用了向量偏移地址的方法。因为采用中断标志分辨的方法需要进行多次条件判断才能把涉及到的具体中断源分辨出来;而采用中断向量偏移地址的方法,只需两条指令即可完成分辨任务,减少了程序存储器的存储开销,节约了CPU的时钟开销。

DSP控制器为事件管理模块的每一个中断都分配了一个不同的中断向量偏移地址。当某个事件管理模块发出了请求信号,分自动地将该中断的向量偏地址写入到对应的事件管理中断向量寄存器(EVIVRA/EVIVRB/EVIVRC)中。而对于由系统外设模块产生的中断,DSP控制器将分配的中断向量偏移地址写入到系统中断向量寄存器(SYSIVR)中。用户可以通过读取该寄存器来取得外设中断的中断向量偏移地址。所以在编程开发时,先要编好一个中断向量表,对于没有用到的中断也应该编上,并让它返回到一个空位置,以免发生意外情况。这里,给出事件管理器B组的INT3级中断向量寄存器的结构示意图,如表1所列。关于每一个中断级的中断向量寄存器(IVR)单元和每一中断事件的偏移量的详细信息,见F240的数据手册。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top