DSP系统配置和中断图文精.docx
《DSP系统配置和中断图文精.docx》由会员分享,可在线阅读,更多相关《DSP系统配置和中断图文精.docx(11页珍藏版)》请在冰豆网上搜索。
DSP系统配置和中断图文精
第2章系统配置和中断
介绍系统的配置寄存器和有关中断,并介绍用于增加中断请求容量的外设中断扩展(PIE寄存器。
2.1系统配置概述
系统配置和中断操作的内容包括:
系统配置寄存器、中断优先级和中断向量表、外设中断扩展控制器(PIE、中断向量、中断响应的流程、中断响应的时间、CPU中断寄存器、外设中断寄存器、复位、无效地址检测、外部中断控制寄存器。
LF2407大部分的I/O口是多路复用的,复位时会被上拉为数字输入的模式。
2.2系统配置寄存器
对功能模块进行配置。
2.2.1系统控制和状态寄存器
(1)系统控制和状态寄存器-SCSR1,映射到数据存储器空间7018h。
位15:
保留位14:
CLKSRC,CLKOUT引脚输出源选择
0-CLKOUT引脚输出CPU时钟;
1-CLKOUT引脚输出WDCLK时钟
位13-12:
LPM低功耗模式选择,指明在执行IDLE指令后进入哪一种低功耗模式。
00-进入IDLE1(LPM0)模式;
01-进入IDLE2(LPM1)模式;
1x-进入HALT(LPM2)模式。
位11-9:
PLL时钟预定标选择,对输入时钟选择倍频
系数。
000-4;
001-2;
010-1.33;
011-1;
100-0.8;
101-0.66;
110-0.57;
111-0.5
位8:
保留
位7:
ADCCLKEN,ADC模块时钟使能控制位
位6:
SCICLKEN,SCI模块时钟使能控制位
位5:
SPICLKEN,SPI模块时钟使能控制位
位4:
CANCLKEN,CAN模块时钟使能控制位
位3:
EVBCLKEN,EVB模块时钟使能控制位
位2:
EVACLKEN,EVA模块时钟使能控制位
0:
禁止模块时钟(节能);1:
使能模块时钟,且运行
位1:
保留
位0:
ILLADR,无效地址检测位
当检测到一个无效地址时,该位被置1,该位需软件清除,写0即可。
初始化时该位写0。
注意:
任何无效的地址会导致NMI事件发生。
(2)系统控制和状态寄存器2-SCSR2
映射到数据存储器空间7019h。
位15-7:
保留位
位6:
I/PQUAL,时钟输入限定,它限定输入到DSP的CAP1-6,XINT1-2,ADCSOC以及PDPINTA*/PDPINTB*引脚上的信号被正确锁存时,需要的最小脉冲宽度。
脉冲宽度只有达到这个宽度之后,内部的输入状态才会改变。
0-锁存脉冲至少需要5个时钟周期;
1-锁存脉冲至少需要11个时钟周期。
如果这些引脚作I/O,则不会使用输入时钟限定电路。
位5:
WD保护位,该位可用软件来禁止WD工作。
这位是—个只能清除的位,复位后默认1。
通过向这位写1对其清除。
0-保护WD,防止WD被软件禁止。
1-复位时的默认值
位4:
XMIFHI-Z。
控制外部存储器接口信号(XMIF
0:
所有XMIF信号处于正常驱动模式(即非高阻态1:
所有XMIF信号处于高阻态
位3:
BOOTEN*(使能位)。
这位反映了BOOTEN*引脚在复位时的状态。
0:
使能引导ROM。
地址空间0000h-00FFh被片内引导ROM块占用。
禁止用FLASH存储器。
1:
禁止引导ROM。
TMS320LF2407片内FALSH程序存储器映射地址范围为0000h一7FFFh。
位2:
(微处理器/微控制器选择。
这位反映了器件复位时MP/MC*引脚的状态。
0:
器件设置为微控制器方式,程序地址范围从
0000h一7FFFh被映射到片内
1:
器件设置为微处理器方式,程序地址范围从
0000h一7FFFh被映射到片外(必须外扩外部
存储器
位1-0:
SRAM的程序/数据空间选择
00地址空间不被映射,该空间被分配到外部存
储器
0lSARAM被映射到片内程序空间
10SARAM被映射到片内数据空间
11SARAM被映射到片内程序空间,又被映射到
片内数据空间
2.2.2器件标识号寄存器(DINR
该寄存器被映射到数据存储器空间701Ch。
位15-4DIN15-DIN4。
这些位包含了硬连线器件指定
的器件标识号。
位3-0DIN3-DIN0。
包含了器件的版本、给定值
器件版本DIN15-DIN0
LF24071.0~1.50510h
LF24071.60511h
LF2407A1.00520h
LC2406A1.00700h
LC2402A1.00610h
2.3中断优先级和中断向量表
LF2407DSP具有3个不可屏蔽中断和6个可屏蔽中断(INT1-INT6),可采用中断扩展设计来满足大量外设中断需求。
每个可屏蔽中断有多个中断源,每个中断源具有唯一的中断入口地址向量。
中断源如下所示:
不可屏蔽中断(3个
中断优先级中断名称外设中断向量描述
1Reset0000h复位引脚和WD溢出2保留0026h仿真陷阱
3NMI0004h
软件中断
INT1(级别1)
中断优先级中断名称外设中断向量描述
4PDPINTA0020h功率驱动保护中断5PDPINTB0019h功率驱动保护中断6ADCINT0004h高优先级ADC中断7XINT10001h高优先级外中断8XINT20001h高优先级外中断9SPINT0005h高优先级SPI中断
10RXINT0006h高优先级SCI接收中断11TXINT0007h高优先级SCI发送中断12CANMBINT0040h高优先级CAN邮箱中断13CANERINT0041h高优先级CAN错误中断
INT2(级别2)
中断优先级中断名称外设中断向量描述14CMP1INT0021h比较器1中断15CMP2INT0022h比较器2中断16CMP3INT0023h比较器3中断17T1PINT0027h定时器1周期中断18T1CINT0028h定时器1比较中断19T1UFINT0029h定时器1下溢中断20T1OFINT0029h定时器1上溢中断21CMP4INT0024h比较器4中断22CMP5INT0025h比较器5中断23CMP6INT0026h比较器6中断
续INT2(级别2)
中断优先级中断名称外设中断向量描述
24T3PINT002Fh定时器3周期中断25T3CINT0030h定时器3比较中断26T3UFINT0031h定时器3下溢中断27T1OFINT0032h定时器3上溢中断
INT3(级别3)
中断优先级中断名称外设中断向量描述
28T2PINT002Bh定时器2周期中断29T2CINT002Ch定时器2比较中断30T2UFINT002Dh定时器2下溢中断31T2OFINT002Eh定时器2上溢中断32T4PINT0039h定时器4周期中断33T4CINT003Ah定时器4比较中断34T4UFINT003Bh定时器4下溢中断35T4OFINT003Ch定时器4上溢中断
INT4(级别4)
中断优先级中断名称外设中断向量描述36CAP1INT0033h比较器1中断37CAP2INT0034h比较器2中断38CAP3INT0035h比较器3中断39CAP4INT0036h比较器1中断40CAP5INT0037h比较器2中断41CAP6INT0038h比较器3中断
INT5(级别5)
中断优先级中断名称外设中断向量描述
42SPINT0005h低优先级SPI中断43RXINT0006h低优先级SCI接收中断44TXINT0007h低优先级SCI发送中断45CANMBINT0040h低优先级CAN邮箱中断46CANERINT0040h低优先级CAN错误中断
INT6(级别6)
中断优先级中断名称外设中断向量描述
47ADCINT0004h低优先级ADC中断48XINT10001h低优先级外中断49XINT20011h低优先级外中断N/ATRAP0022h陷阱中断N/A假中断向量0000h假中断向量
2.4外设中断扩展控制器
LF2407采用一个外设中断扩展(PIE控制器来专门管理来自各种外设或外部引脚的中断请求。
下图为外设中断扩展模块图。
具体寄存器为:
PIRQR0-PIRQR2
2.4.1中断层次
通过中断请求系统中的一个两级中断来扩展中断个数,2407可响应的中断个数数量很多,DSP的中断请求/应答逻辑和中断服务程序软件都有两级层次的中断。
2.4.2中断请求的结构
在低层次中断,从几个外设来的外设中断请求(PIRQ在中断控制器处进行或运算,产生一个INTn中断;在高层次中断,从INTn中断请求产生一个到CPU的中断。
2.4.3中断应答
外设产生中断请求后,经PIE控制器译码,决定谁被响应,CPU通过赋予程序地址总线一个值——中断向量,决定哪个中断请求被应答。
2.5中断向量
为使CPU能够区别不同外设引起中断,在每个外设中断请求有效时,都会产生一个唯一的外设中断向量,这个外设中断向量被装载到外设中断向量寄存器(PIVR。
CPU响应外设中断时,从PIVR中读取相应的中断向量,转到相关的中断服务程序入口。
LF2407有两个向量表。
(1CPU向量表用来获取响应CPU中断请求的一级通用中断服务子程序(GISR。
(2外设向量表用来获取响应某一特定外设事件的特定中断服务子程序(SISR。
GISR中的程序可读出PIVR中的值,在保存必要的上下文之后,用PIVR中的值来产生一个转到SISR的向量。
2.5.1假中断向量
假中断向量特性可以保证系统一直可靠安全地运行,而不会进入无法预料的中断死循环中。
以下两种情况会产生假中断:
(1CPU执行一个软件中断指令,并且指令具有一个与外设中断(通常为INT1一INT6相关的变量。
(2当外设发出中断请求,但是其INTn标志位却在CPU应答请求之前已经被清0。
在上述两种情况下,没有外设中断请求送到中断控制器,因此控制器不知道哪个外设中断向量装入到PIVR,此时向PIVR中装入假中断向量。
2.5.2软件层次
中断服务子程序的层次有两级:
通用中断服务子程序(GISR和特定中断服务子程序(SISR
对于每个向CPU发送的可屏蔽高优先级中断请求(INTl一INT6,从PIVR获取外设中断向量之前,必须在GISR中保存必要的上下文。
从外设中断向量寄存器(PIVR中获取外设中断向量。
转移到SISR的地址入口。
在SISR中执行对该外设事件的响应。
当程序进入中断服务程序后,所有的可屏蔽中断都被屏蔽。
GISR必须在中断被重新使能之前读取PIVR中的值,否则在另一个中断请求发生之后,PIVR中将装入另一个中断请求的偏移量,这将导致原外设中断向量参数的永久丢失。
2.5.3不可屏蔽中断
LF2407DSP无NMI引脚,在访问无效的地址时,不可屏蔽中断(NMI就会发出请求。
当NMI被响应后,程序将转到不可屏蔽中断向量入口地址0024h处。
LF2407DSP没有与NMI相对应的控制寄存器。
2.5.4全局中断使能
INTM为全局中断使能位,在初始化程序和主程序中,常常需要使用该位对DSP中断进行打开和关闭操作。
特别是初始化过程中,需要关中断,而在主程序开始执行时,需要开中断。
SETCINTM;
关中断CLRCINTM;开中断
进入中断服务程序时,系统自动关闭中断,不允许在中断服务程序中响应其他中断。
从中断服务程序返回时需要重新打开中断。
2.6中断响应的流程
外设模块的中断响应流程
2.7中断等待时间
中断响应的等待时间包括:
外设同步接口时间、CPU响应时间、ISR等待时间,分别介绍如下:
(1外设同步接口时间是指为了响应一个PlE控制器可以识别的中断事件,而产生一个中断请求所花的时间和转换后将请求发送至CPU的时间。
(2)CPU的响应时间指的是CPU识别出已经被使能的中断请求、响应中断、清除流水线、并且开始捕获来自CPU中断向量的第一条指令所花费的时间。
最小的CPU的响应时间是4个CPU指令周期。
如果一个更高优先级的可屏蔽中断在最小的等待周期被请求,该中断将被屏蔽,直到正在工作的ISR重新使能该中断。
当中断请求发生在一个不可中断的操作期间,那么等待时间更长。
例如:
一个循环程序环、一条多周期指令的执行,或处于一个等待状态的访问期间。
(3ISR等待时间是指为了响应产生应答的中断事件,而到达特定中断服务程序(SlSR所花费的时间。
该时间长短根据用户响应中断后保存上下文的不同而有所变化。
2.8CPU中断寄存器
CPU中断寄存器包括:
(1中断标志寄存器(IFR;(2中断屏蔽寄存器(IMR。
2.8.1CPU中断标志寄存器(IFR)
IFR包含所有可屏蔽中断的标志位,用于识别和清除挂号的中断。
当一个可屏蔽中断被请求时,中断标志寄存器的相应标志位被置1。
如果对应中断屏蔽寄存器中的中断使能位也为1,则该中断请求被送到CPU,并设置IFR的相应位,此时该中断正被挂号或等待响应。
读取IFR可以识别挂号的中断,向相应的IFR位写1将清除已挂号的中断。
该寄存器映射到数据存储器空间为0006h。
位15-6:
保留位。
位5-0:
分别为INT6-INT1的中断标志位。
0:
无中断挂号,
1:
表示有INTn的中断挂号。
2.8.2CPU中断屏蔽寄存器(IMR)
IMR中包含所有中断级(INT1-INT6的屏蔽位,读IMR可以识别出已屏蔽或使能的中断级,而向IMR中写,则可屏蔽中断或使能中断。
为了使能中断,应设置相应的IMR位为1,而屏蔽中断时只需将相应的IMR位设为0。
中断屏蔽寄存器-IMR,映射到数据存储器空间0004h。
位15-6:
保留位。
位5-0:
分别为INT6-INT1中断的屏蔽位。
0:
中断INTn被屏蔽。
1:
中断INTn被使能。
外设中断请求寄存器和外设中断应答寄存器都属于外设中断扩展模块用来向CPU产生INT1-INT6中断请求的内部寄存器。
这些寄存器主要用于测试目的,而不用于用户应用程序,在编程时可忽略。
2.10复位和无效地址检测
2.10.1复位
LF2407DSP器件有两个复位源:
•一个为外部复位引脚
•一个看门狗定时器溢出
2.10.2无效地址检测
无效地址是不可执行的地址,
例如:
外设存储器映射中的保留寄存器。
一旦检测到对无效地址的访问,就将系统控制和状态寄存器1(SCSRl中的无效地址标志位(ILLADR置1。
无效地址检测会产生一个不可屏蔽中断(NMI。
无效地址标志位(ILLADR在无效地址条件发生之后被置1,并一直保持,直到软件将其清除。
通常产生无效地址访问的原因是不正确的数据页面初始化。
2.11外部中断控制寄存器
控制和监视XINT1和XINT2引脚状态的两个外部中断控制寄存器为XINTlCR和XINT2CR。
在LF2407中,XINTl和XINT2引脚必须被拉为低电平至少6个(或12个)CLKOUT周期才能被CPU内核识别。
1.外部中断1控制寄存器-XINT1CR,映射到数据存储器空间7070h。
位15:
XINT1标志位。
表示在XINTl引脚上是否检测到一个所选择的中断跳变,无论中断是否使能,该位都可以被置位。
当相应的中断被应答时,该位被自动清0。
通过软件向该位写1(写0无效或者器件复位时,这位也被清0
0-没有检测到跳变
1-检测到跳变
位14-3:
保留位
位2:
XINTl极性。
该读/写位决定了是在XINTl引脚
信号的上升沿还是下降沿产生中断。
0-在下降沿产生中断
1-在上升沿产生中断
位1:
XINTl优先级。
该读/写位决定哪一个中断优先
级被请求。
0-高优先级
1-低优先级
位0:
XINTl使能位。
该读/写位可使能或屏蔽外部中
断XINTl
0-屏蔽中断
1-使能中断
2.外部中断2控制寄存器-XINT2CR,映射到数据存储器空间7071h。
位15:
XINT2标志位。
该位表示在XINT2引脚上是否检测到一个所选择的中断跳变,无论中断是否使能,该位都可以被置1。
当相应的中断被应答时,该位被自动清0。
0-没有检测到跳变1-检测到跳变软件向该位写1(写0无效或器件复位时,该位也被清0位14-3:
保留位。
位2:
XINT2极性。
该读/写位决定了是在XINT2引脚信号的上升沿还是下降沿产生中断。
0-在下降沿产生中断1-在上升沿产生中断位1:
XINT2优先级。
0-高优先级1-低优先级位0:
XINT2使能位。
0-屏蔽中断1-使能中断