用户中断分为三部分:外设级、PIE级、CPU级
三级串联构成一路中断。
1.外设级中断——中断标志必须采用软件进行清除
2.PIE中断可以支持96个独立中断,这些中断分为8个小组,每个小组包含12个中断。
CPU经过9个时钟周期获取中断向量地址和保存关键寄存器数据之后才能执行中断程序。
28335在CPU级支持一个不可屏蔽中断(NMI)和16个可屏蔽中断(INT1-INT14,RTOSINT,DLOGINT)。
PIE模块汇集8个外设和管脚中断进入一个CPU中断
PIE group1 ----group12分别对应了CPU中断1---中断12
对于不可屏蔽中断来说,它直接进入CPU级。
对于可屏蔽中断来说,PIE模块有相关的标志寄存器(PIEIFRx和PIEIERx)(x=1-------12)每一个位设为y(y=1-----8)
PIEIERx.y 和PIEIFRx.y,
除此之外,对于每一个PIE中断组来说(1----12)还有一个PIE响应标志位PIEACK,如PIEACKx(x=1----12)
机理如下:当有中断请求进入PIE控制器的时候,相关的PIE中断标志位PIEIFRx.y置高。如果PIE中断允许位PIEIERx.y也置高的时候,PIE控制器机会检查PIEACKx标志位来决定CPU是否已经准备好接收这个PIE中断组的中断。
如果PIEACKZx被清零了,那么PIE会把这个中断请求送到CPU级。
如果PIEACKx位置一,那么PIE就会等待直到这个标志位清零然后发送中断请求给CPU级的INTx。(TMS320F2833X SYSTEM CONTROL AND INTERRUPTS REFERENCE GUIDE)
PIE中断寄存器:PIECTRL,PIEACK,PIEIFRx
3 CPU级中断
一旦中断请求到达CPU级,CPU级和INTx相对应的中断标志位(IFR)置一,如果CPU中断允许寄存器(IER)或者调试中断允许寄存器(DBGIER)和全局中断屏蔽位(INTM)允许的话,CPU才会执行这个中断申请。
中断过程中需要手动清零的寄存器:PIEACKx 写1 清零
CPU中断寄存器:IFR,IER,XINTnCR 外部中断控制寄存器(支持XINT1~XINT7,n=1~7。XINT13和不可屏蔽中断XNMI多路复用),XNMICR 外部NMI中断控制寄存器
VMAP M0M1MAP ENPIE三个bit用于决定是使用哪个 vector mapping。复位后三个bits指向使用PIE。
m1 m0 vector 用于TI测试时用
Boot rom用于在boot时
PIE vector 程序复位,引导后由用户程序代码决定使用。此时M1 M0用于普通SARAM。 |