1、中断系统概述及中断源
1.1 F28335中断源分类:
片内外设中断源(PWM、CAP、QEP、定时器等);
片外中断源(片外中断输入引脚XINT1、XINT2引入的外部中断源)。
F28335内部含有16个中断线:2个不可屏蔽中断(RESET、NMI)+14个可屏蔽中断(通过中断使能存储器使能或者禁止产生中断)。其中,定时器1和2产生中断由INT13和INT14中断线到达CPU,这两个中断预留给实时操作系统。剩下12个可屏蔽外部中断和处理器内部单元。F28335有58个中断源,需要PIE外设中断扩展模块实现。
2、F28335的3级中断机制
3级中断机制:外设级中断、PIE级中断、CPU级中断(最内核部分-只接受CPU中断线上的中断请求)。
外设产生中断响应步骤:外设级中断允许、经PIE允许、经CPU允许、最后CPU做出响应。
2、1外设级中断
IF:外设中断标志寄存器;
IE:外设中断使能寄存器;
IF位自动置位,且IE使能位正好置位,外设产生中断向 PIE控制器 发出中断请求。中断申请成功。
2、2 PIE级中断
CPU让出12个中断线交由PIE模块复用管理,中断扩展模块结果图:
PIE将外设中断分成12组,对应12个可屏蔽中断线,每一组由8个外设级中断组成,这8个外设中断分别对应相应的外设接口中断引脚,PIE通过8选1的多路选择器将这8个外设中断组成1组。
PIE模块每组相应的中断标志位(PIEIFRx)和使能位(PIE-IERx.y)。每一组PIE中断(INT1~INT12)有一个响应标志位(PIEACK)。
中断产生PIE中相应的中断标志位(PIEIFRx.y)将置1。如果中断使能位置1,则PIE将检查相应的PIEACKx以确认CPU是否准备响应中断请求。如果相应的PIEACKx位清零,PIE向CPU申请中断,否则等待PIEACKx位清零才能响应CPU中断申请。响应后PIEACKx清零以便该组后面中断请求。
2、3 CPU级中断
CPU申请中断,CPU级中断标志位(IFR)将置1。中断标志位锁存到标志寄存器后,只要CPU中断使能寄存器(IER)或中断调试使能寄存器(DBGIER)相应的使能位和全局中断屏蔽位(INTM)被使能时才会响应中断申请。
3、F28335中断向量
CPU响应中断,就是CPU执行相应的中断服务程序。响应过程:CPU将现在执行程序的指令地址压入堆栈,跳转到中断服务程序入口地址,中断服务程序的入口地址就是中断向量,这个中断向量用2个16位寄存器存放。入口地址是22位的,地址的低16位保持该向量的低16位;地址的高16位保存高6位,更高的10位保留。
3、1 中断向量分配
PIE最多支持96个中断,每一个中断有对应的中断向量,也就是每一个中断源对应的中断服务程序入口地址,这些中断向量均连续存放在RAM中,构成了整个系统的中断向量表。
响应中断时,CPU自动从中断向量表中获取中断向量。CPU获取中断向量和保存重要的寄存器需要花费9个CPU时钟周期,能够快速响应中断。CPU中断是通过中断线,1次响应其中1条中断线,每条中断线连接的中断向量在中断向量表中占32位地址空间,用来存放中断服务程序的入口地址,有可能16条中断线上请求同时到达CPU,需要进行优先级定义。
3、2 中断向量表
PIE向量表:256
CPU优先级:INT1~INT12; 每一组PIE控制的8个中断优先级:INTx.1~INTx.8。
3、3 中断向量映射方式
4、F28335中断操作
4、1 复用中断操作
4、2 使能禁止复用外设中断的处理
4、3 外设复用中断向CPU申请中断流程
4、4 可屏蔽中断处理
参考书籍:《手把手教你学DSP:基于TMS320f28335》。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!