TMS320F24x的实时多中断任务处理
扫描二维码
随时随地手机看文章
来源:单片机及嵌入式系统应用; 作者:武汉化工学院 张 琴 华中科技大学 向先波
摘要:TMS320F240是TI公司定点DSP芯片F24x系列中具有代表性的一种。在分析其多中断源共享DSP内核同一中断级原理的基础上,探讨该系列芯片在实时多中断任务处理的软件编程过程中的实现方法,并给出具体的应用实例。
关键词:TMS320F240 实时多中断任务 ISR GISR SISR
引言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一致。
②三组事件中断子标志寄存器(EV