DSP28335中断系统(一)

1、什么是中断?

举个例子,你在吃饭的时候,突然觉得口渴,此时你就会去喝水,等喝完水你再继续吃饭。在这个例子中,吃饭为主程序运行,大脑觉着口渴就是发中断申请,喝水就是中断子程序。在DSP的中断概念也是一样的,在主程序运行时,有外设发送中断请求,此时程序运行就会进入中断子程序,当运行完中断程序后继续回到前面跳转的程序处继续执行主程序。如图1所示。

 

DSP28335中断系统(一)_第1张图片

                                                                                                                 图1                      

2、中断系统结构

F2833x中的中断源简单可以分为片内中断源和片外中断源,如图2所示。片内中断源主要由片内的软硬件事件产生,比如3个CPU定时器,各个外设(eCAP、ePWM、看门狗等);片外中断源一般是与DSP的引脚联系在一起的,也就是在相应的GPIO口上检测到一定的脉冲长度或者是检测到电平的转变就会产生中断标志事件。

DSP28335中断系统(一)_第2张图片

                                                                                                         图2

从图2中可以看出,当产生了中断信号,中断信号传送到内核需要中断线传递,但是在28335中这样的中断线是有限的,其中包括2条不可屏蔽中断线(NMI&RESET)和14条可屏蔽中断线(INT1-INT14)。这14个中断线可以根据相应的使能寄存器控制使用或者不使用。根据上图还可以看出,定时器1与定时器2直接传送到INT13与INT14。因此还剩下12个可屏蔽中断线供其他中断源使用。但是DSP28335是一种高性能处理器芯片,用户所使用的时候中断源就只有12个吗?那是不可能的,在28335中,外设中断源一共有58个,但是可以使用的中断线只有12个可供使用了,怎么办呢?28335提供了PIE级(后面会讲到)来进行控制。

3、中断机制

28335的中断机制采用三级中断机制,分别是外设级中断、PIE级中断、CPU级中断。最核心的就是CPU级中断,它只能响应中断线过来的中断请求,但是中断线有限,只能通过中短线进行复用,这样就产生了中间的PIE级中断进行复用管理。所以,如果需要处理外设产生的中断,就需要:首先经过外设级中断允许、PIE中断允许、CPU中断允许进行响应。这种机制就好像公司批准款项需要三级领导批示一样,任意一级的领导不同意,都不能获得款项的批准,中断机制的原理也是如此。其如图3所示。

DSP28335中断系统(一)_第3张图片

                                                                                                                图3 

在分别介绍三级中断机制时,先介绍两个概念:中断标志位(IFR)、中断使能位(IER)。在一个中断事件产生时,必须显示IFR置位,IER置位才能产生后续的工作。就好像电饭煲煮饭,显示保温时,打开盖子才能盛饭。显示保温就相当于标志位置位,打开盖子就相当于使能位置1。

3.1外设级中断

假设在程序执行过程中,某个外设产生了一个中断事件(比如定时器时间到了设定的时间),那么此时相对应的中断标志位会自动置位。如果相应的中断使能位在程序中也设置为1,则外设就会向PIE控制级发送中断请求。但如果没有使能位没有被置1,就不会向PIE级发送中断请求,但是标志位也不会自动清除,需在程序中手动清除。

3.2PIE级中断

由于CPU没有能力处理所有的外设中断,在DSP28335中对12条中断线进行PIE复用管理,其PIE模块内部图如图4所示。

DSP28335中断系统(一)_第4张图片

                                                                                                  图4

从上图可以看出,PIE将外设中断分成了12组,分别对应着12条可屏蔽中断线。对应的外设如图5所示。

DSP28335中断系统(一)_第5张图片

                                                                                                             图5

 从上图可以看出,实际有效中断有58个,其他的都为保留。和外设级中断一样,PIE级中断也有相应的中断标志位(PIEIFRx)与中断使能位(PIEIERx.y)。根据图3还可以看到,每组PIE中断还有相应的响应标志位(PIEACK)。如果PIE中断控制器有中断产生,则相应的中断PIE标志位将置1,如果相应的中断PIE使能位也置1(则就会产生一个INTx信号)。根据图3所示,此时,PIE将会检查中断应答寄存器PIEACK的状态,如果该位为0,PIE就会向CPU级发送中断申请,如果该为为1,PIE就不会向CPU级发送中断申请。因为图3中PIEACK前是一个非门,请读者注意。

3.3CPU级中断

从图3中可以看出,CPU级中断也有中断标志位与中断使能位,同时多了一个位就是全局中断使能位INTM。一旦有CPU中断申请,其相应的中断标志位会置1,此时如果相应的中断使能位与全局中断使能位置1,此时就会响应中断,去执行相应的中断服务子程序。

相应的中断程序配置在下一节详细介绍。

你可能感兴趣的:(DSP28335中断系统(一))