第3章TMS320F2812中断系统
- 格式:pdf
- 大小:7.92 MB
- 文档页数:42
TMS320F2812学习笔记中断系统及其应用2812的中断是3级中断机制,分别是外设级,PIE级以及CPU级,对于某一个具体的外设中断请求,任意一级的不许可,CPU最终都不会执行该外设中断。
(1)外设级外设产生中断时,该中断事件相关的中断标志位(IF)置1。
此时,如果该中断相应的中断使能寄存器(IE)也置为1,外设就会向PIE控制器发出一个中断请求。
如果外设级中断没有被使能(相应的使能位为0),那么外设就不会向PIE发出中断请求,相应的中断标志位会一直保持置位状态,除非用软件清除。
当然,在中断标志位保持在1的时候,一旦该中断被使能了,那么外设立马会向PIE发出中断申请。
注:不管在什么情况下,外设寄存器中的中断标志位必须采用软件进行清除。
小结:外设中断的屏蔽,需要将与该中断相关的外设寄存中的中断使能位置0;外设中断标志位的清除,需要将与该中断相关的外设寄存中的中断标志位置1;(2)PIE级当外设产生中断事件,相关中断标志位置位,中断使能位使能之后,外设就会把中断请求提交给我们的PIE模块。
PIE模块将96个外设和外部引脚的中断进行了分组,分为12组,每组8个中断,分别是PIE1-PIE12。
每个组的中断被多路汇集进入1个CPU中断,例如P DPINDA,PDPINDB,XINT1,XINT2,ADCINT,TINT0,WAKEINT这7个中断都在PIE1组内,这些中断都汇集到CPU中断的INT1。
和外设级类似的,PIE控制器中的每个组都会有一个中断标志寄存器PIEIFRx和和中断使能寄存器PIEIERx,当然x=1.....12。
每个寄存器的低8位对应于8个外设中断,高8位保留。
小结:PIE中断的使能。
就得将其相应组的使能寄存器PIEIERx的相应位进行置位;PIE中断的屏蔽。
这是和使能相反的操作;PIE应答寄存器PIEACK相关位的清除,以使得CPU能够响应同组的其他中断。
PIE级的中断和外设级的中断比较外设中断的中断标志位是需要软件清除的,而PIE级的中断标志位都是自动置位或者清除的。
第3章 TMS320F2812驱动程序设计【本章要点】了解TMS320F2812驱动程序的特点了解TMS320F2812位字段的描述方法掌握TMS320F2812驱动程序的框架结构掌握CCS集成开发环境的应用1.驱动程序的概念:TMS320F2812处理器的驱动程序在这里实际上就是指一段能让CPU控制片内各种功能模块正常工作的程序代码。
如果我们不对片内的功能模块进行编程驱动,那么时钟系统、定时器、片内外设等硬件就无法工作,这个芯片就不能发挥其特有的功效了。
换言之,TMS320F2812处理器驱动程序的开发就是通过设置片内的各功能模块,将其本身的功能激发出来,从而保证芯片能正常地工作。
2.TI公司C28x DSPs常用代码库文件(了解)库 名 文档编号 说 明C281xC/C++头文件和外设示例SPRC097外设API驱动程序TMS320F2812闪存API SPRC125对Flash进行操作的APIC28x 定点数学函数库SPRC085包含常用的基本数学函数C28x IQMath库(虚拟浮点引擎)SPRC087将浮点算法无缝地连接到定点代码中 C28x 快速傅立叶变换程序库SPRC081提供可供调用的FFT函数C28x 滤波器库SPRC082提供FIR及IIR模块C28x 软件测试台库SPRC084提供基于实时应用的密集计算模块C28x 通信驱动程序库SPRC183虚拟的IIC总线及SPI总线驱动C28x 信号发生器库SPRC083包含正弦波、锯齿波、梯形脉冲发生器 F281x 数字电机控制程序库SPRC080帮助开发数字电机控制,比如空间矢量发生器PFC Software SPRC307帮助开发数字控制电源S V2.2版本开发环境下的TMS320F2812处理器驱动程序开发包,这个开发包的名称是“C281x C/C++ 头文件及片内外设应用示例(C281x C/C++ Header Files and Peripheral Examples)”,安装后的文件结构如图所示。
DSP芯片TMS320f2812的外中断一.实验目的1.通过实验熟悉F2812A的中断响应过程。
2.学会C语言中断程序设计,以及运用中断程序控制程序流程。
二.实验原理1.中断及中断处理过程(1)中断简介中断是一种由硬件或软件驱动的信号,DSP在接到此信号时,将当前程序悬挂起来,转向去执行另外一个任务,称为中断服务程序(ISR)。
TMS320f28xDSP可支持32个ISR,可由硬件或软件触发。
所有的C28x 中断,可以分成可屏蔽中断和不可屏蔽中断两种,软件中断是不可屏蔽的。
(2)DSP一.实验目的1.通过实验熟悉F2812A的中断响应过程。
2.学会C语言中断程序设计,以及运用中断程序控制程序流程。
二.实验原理1.中断及中断处理过程(1)中断简介中断是一种由硬件或软件驱动的信号,DSP在接到此信号时,将当前程序悬挂起来,转向去执行另外一个任务,称为中断服务程序(ISR)。
TMS320f28x DSP可支持32 个ISR,可由硬件或软件触发。
所有的C28x 中断,可以分成可屏蔽中断和不可屏蔽中断两种,软件中断是不可屏蔽的。
(2)DSP处理中断的步骤①接收中断请求。
请求由软件或硬件发出。
②响应中断请求。
对于可屏蔽中断,需要满足若干条件,才发生响应;而对于不可屏蔽中断,则立即响应。
③准备执行中断服务程序。
-完成当前正在执行的指令;将进入流水线但还未解码的指令清除。
-自动保存若干寄存器的值到数据堆栈和系统堆栈。
-取得用户定义的中断向量表中当前中断向量,中断向量指向中断服务程序入口。
④执行中断服务程序。
中断服务程序包含中断返回指令,这样返回时可以出栈以前保存的关键寄存器数据,从而恢复中断服务程序执行前的现场。
(4)外中断TMS320f2812 可以响应两个外中断。
2.ICETEK-CTR板的键盘接口显示/控制模块ICETEK-CTR通过接口P8连接小键盘,接收小键盘传送的扫描码,并在每个扫描码结束后保存,同时向DSP的XINT2 发送中断信号;当DSP读键盘时将扫描码送到数据总线上。
2010-05-21 23:03:48| 分类:默认分类|字号订阅1. 要使用外部中断要从两方面进行准备:首先,在硬件上必须将中断信号引到DSP的外部中断引脚上。
比如:FPGA的一个output发出中断请求信号那么就将这个管脚与DSP的XINT1相连,XINT1可以通过一个4.7k的电阻上拉到3.3v, 也可以不拉。
其次是在软件上的配置:1.初始外部中断寄存器void Xint1_init(void){EALLOW;XIntruptRegs.XINT1CR.bit.ENABLE=1;//使能外部中断XIntruptRegs.XINT1CR.bit.POLARITY=1;//中断产生在上升沿,若为0中断产生在下降沿 DISE;}由于这是一个函数,所以也要有函数声明,函数调用,函数定义。
2使能cpu INT1中断PieCtrlRegs.PIEIER1.bit.INTx4 = 1; //Enable all XINT1 interruptIER |= 0x100; // Enable CPU INTIER |= 0x0001; // enable PIEIER1, and INT13.编写中断服务程序,interrupt void Xint1_ISR(void){.......PieCtrlRegs.PIEACK.all|=0x0001;}4将中断服务程序入口地址赋给中断向量表PieVectTable.XINT1=&Xint1_ISR;总结起来使用外部中断的步骤如下:1声明外部中断服务程序和外部中断初始化函数void Xint1_init(void);interrupt void Xint1_ISR(void);2将中断服务程序入口地址赋给中断向量表PieVectTable.XINT1=&Xint1_ISR;3使能cpu INT1中断IER |= 0x0001; // enable PIEIER1, and INT1PieCtrlRegs.PIEIER1.bit.INTx4 = 1; //Enable all XINT1 interrupt4. 在主函数体外定义专断初始化函数和中断服务程序不好意思这几天加班、单位聚餐,一直没时间回复。