南邮大四课程设计

上传人:kms****20 文档编号:41588925 上传时间:2018-05-30 格式:DOC 页数:31 大小:615KB
返回 下载 相关 举报
南邮大四课程设计_第1页
第1页 / 共31页
南邮大四课程设计_第2页
第2页 / 共31页
南邮大四课程设计_第3页
第3页 / 共31页
南邮大四课程设计_第4页
第4页 / 共31页
南邮大四课程设计_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《南邮大四课程设计》由会员分享,可在线阅读,更多相关《南邮大四课程设计(31页珍藏版)》请在金锄头文库上搜索。

1、一、一、EMIFEMIF 接口上的接口上的 I/OI/O 接口扩展接口扩展一实验原理 1TMS320VC5509DSP 的EMIF 接口: 存储器扩展接口存储器扩展接口(EMIF)是DSP 扩展片外资源的主要接口,它提供了一组控制信号和地址、数据线,可以扩展各类存储器和寄存器映射的外设。 -ICETEK-VC5509-A 评估板在EMIF 接口上除了扩展了片外SDRAM 外,还扩展了指示灯、DIP 开关和D/A 设备。具体扩展地址如下: 400800-400802h: D/A 转换控制寄存器 400000-400000h: 板上DIP 开关控制寄存器 400001-400001h: 板上指示灯

2、控制寄存器 -与ICETEK-VC5509-A 评估板连接的ICETEK-CTR 显示控制模块也使用扩展空间控制主要 设备: 602800-602800h: 读-键盘扫描值,写-液晶控制寄存器 600801-600801h: 液晶辅助控制寄存器 602801h 、600802h: 液晶显示数据寄存器 602802-602802h: 发光二极管显示阵列控制寄存器 2指示灯扩展原理3实验程序流程图:二实验步骤 1实验准备: 关闭实验箱上扩展模块和信号源电源开关。 2设置Code Composer Studio 2.21 在硬件仿真(Emulator)方式下运行。 3启动Code Composer

3、Studio 2.21: 选择菜单DebugReset CPU。 4打开工程文件: 工程文件为:C:ICETEK-VC5509-EDULabLab0301-LEDLED.pjt。 打开源程序LED.c。 5编译、下载程序。 6运行程序,观察结果。 7退出CCS:三部分程序代码 / 定义指示灯寄存器地址和寄存器类型#define LBDS (*(unsigned int *)0x400001) / 子程序接口 void Delay(unsigned int nDelay);/ 延时子程序int i; main() unsigned int uLED4=1,2,4,8; / 控制字,逐位置1: 0

4、001B 0010B 0100B 1000B CLK_init();CLK_init();/ 初始化初始化DSPDSP运行时钟运行时钟 SDRAM_init();SDRAM_init();/ 初始化初始化EMIFEMIF接口接口while ( 1 ) for ( i=0;i=0;i- ) LBDS=uLEDi;/ 反向顺序送控制字 Delay(32);/ 延时 【延时256-32】 四实验结果 映射在扩展存储器空间地址上的指示灯寄存器在设置时是低4位有效的,数据的最 低位对应指示灯D1,次低位对应D2,.依次类推。LED指示灯由 D1D2D3D4D3D2D1循环依次点亮。五实验体会 了解ICE

5、TEK-VC5509-A 板在TMS320VC5509DSP 外部扩展存储空间上的扩展。 了解ICETEK-VC5509-A 板上指示灯扩展原理。 学习在C 语言中使用扩展的控制寄存器的方法。二、定时器的使用二、定时器的使用一实验原理 1通用定时器介绍及其控制方法 TMS320VC5509ATMS320VC5509A 内部有两个内部有两个 2020 位通用定时器(位通用定时器(GPGP):): *每个通用定时器包括: -一个 16 位的减计数的计数器 TIM; -一个 16 位的定时器周期寄存器 PRD; -一个 16 位的定时器控制寄存器 TCR; -一个 16 位的定时器预定标寄存器 PS

6、CR; *PSCR 寄存器说明:15 10 9 6 5 4 3 0 Reserved PSC Reserved TDDR PSC: 4 位的预定标值,与 TIM 共同组成 20 位的定时计数器. TDDR: 预定标周期寄存器(在需要时重装入 PSC 的值) TCR 寄存器说明 2中断响应过程 外设事件要引起 CPU 中断,必须保证:IER 中相应使能位被使能,IFR 相应中断也被使能。在软件中,当设置好相应中断标志后,开中断,进入等待中断发生的状态;外设(如定时 器) 中断发生时,首先跳转到相应中断高级的服务程序中(如:定时器 1 会引起 TINT 中断) , 程序在进行服务操作之后,应将本外

7、设的中断标志位清除以便能继续中断,然后返回。 3中断程序设计: -程序中应包含中断向量表程序中应包含中断向量表,VC5509A 默认向量表从程序区 0 地址开始存放,根据 IPVD 和 IPVH 的值确定向量表的实际地址。 -注意观察程序中 INTR_init()函数的定义部分,其中 IPVD 和 IPVH 的值都为 0x0d0;同时 观察配置文件 ICETEK-VC5509-A.cmd 中的 VECT 段描述中 o=0x0d000。 -向量表中每项为 8 个字,存放一个跳转指令,跳转指令中的地址为相应服务程序入口地 址。 第一个向量表的首项为复位向量,即 CPU 复位操作完成后自动进入执行的

8、程序入口。 -服务程序在服务操作完成后,清除相应中断标志,返回,完成一次中断服务。 4实验程序流程图:二实验步骤 1实验准备: 连接实验设备:关闭实验箱上扩展模块和信号源电源开关。 2设置Code Composer Studio 2.21 在硬件仿真(Emulator)方式下运行: 3启动Code Composer Studio 2.21: 选择菜单DebugReset CPU。 4打开工程文件: 打开菜单“Project”的“Open”项;选择C:ICETEK-VC5509-EDULabLab0303-Timer 目录中的“Timer.pjt”。 在项目浏览器中,双击main.c,激活mai

9、n.c 文件。 打开ICETEK-VC5509-A.cmd,对照vector.asm 源程序学习中断向量表的写法。 5编译、下载程序。 6运行程序,观察结果。 7改变TIMER_init()函数里*prd0 = 0x0ffff 为 “=0x0fff ”;重复步骤5,6 观察实验现象。 8退出CCS三部分程序代码 / 定义指示灯寄存器地址和寄存器类型 #define LBDS (*(unsigned int *)0x400001)void INTR_init( void ); void TIMER_init(void);unsigned int uLED4=1,2,4,8; int i=0;in

10、t nCount;main() nCount=0; CLK_init(); SDRAM_init(); LBDS=0; INTR_init(); TIMER_init(); while ( 1 ) void interrupt Timer() nCount+; nCount%=256; if ( nCount=0 ) LBDS=uLED(i+)%4; void INTR_init( void ) IVPD=0xd0; IVPH=0xd0; IER0=0x10; DBIER0 =0x10; IFR0=0xffff; asm(“ BCLR INTM“);void TIMER_init(void)

11、ioport unsigned int *tim0; ioport unsigned int *prd0; ioport unsigned int *tcr0; ioport unsigned int *prsc0; tim0 = (unsigned int *)0x1000; prd0 = (unsigned int *)0x1001; tcr0 = (unsigned int *)0x1002; prsc0 = (unsigned int *)0x1003;*tcr0 = 0x04f0;*tim0 = 0;*prd0 = 0x0ffff;/从0x0fff改为0x0ffff,现象:循环变慢*

12、prsc0 = 2;*tcr0 = 0x00e0; 四实验结果 LED指示灯D1在定时器的定时中断中按照设计定时闪烁。五实验体会 通过实验熟悉VC5509A 的定时器; 掌握VC5509A 定时器的控制方法; 掌握VC5509A 的中断结构和对中断的处理流程; 学会C 语言中断程序设计,以及运用中断程序控制程序流程。三、中断的使用三、中断的使用一实验原理 1中断及中断处理过程: 中断简介: 中断是一种由硬件或软件驱动的信号,DSP 在接到此信号时,将当前程序悬挂起来,转去执行另外一个任务,这个任务我们称为中断服务程序中断服务程序(ISR)。TMS320C55x (C55x) DSP 可支持32

13、 个ISR,可由硬件或软件触发。 所有的C55x 中断,可以分成可屏蔽中断和不可屏蔽中断两种,软件中断是不可屏蔽的。DSP 处理中断的步骤: 接收中断请求。请求由软件或硬件发出。 响应中断请求。对于可屏蔽中断,需要满足若干条件,才发生响应;而对于不可屏蔽中 断,则立即响应。 准备执行中断服务程序。 -完成当前正在执行的指令;将进入流水线但还未解码的指令清除。 -自动保存若干寄存器的值到数据堆栈和系统堆栈。 -取得用户定义的中断向量表中当前中断向量,中断向量指向中断服务程序入口。 执行中断服务程序。中断服务程序包含中断返回指令,这样返回时可以出栈以前保存的 关键寄存器数据,从而恢复中断服务程序执

14、行前的现场。 中断向量表: 中断向量表的地址可以由用户指定。 外中断: TMS320C5509 可以响应INT0-INT4 五个外中断。 2ICETEK-CTR 板的键盘接口: 显示/控制模块ICETEK-CTR 通过接口P8 连接小键盘,接收小键盘传送的扫描码,并在每 个扫描码结束后保存,同时向DSP 的INT2 发送中断信号;当DSP 读键盘时将扫描码送到 数据总线上。小键盘上每次按下一个键将产生2 个扫描码、2 次中断。 3程序编制: 由一个不含中断处理程序的工程通过改写加入中断处理程序部分大致需要如下操作(假设使 用INT2): 编制中断服务程序:可以用C 语言程序实现,编写单独的一个

15、函数XINT, 此函数使用interrupt 修饰,没有参数和返回值。 构造中断向量表:构造中断向量表:可以用汇编语言构造,编写一个汇编语言模块程序vector.asm,在程序 头上声明段名为“.vectors”;定义外部标号_XINT,由于汇编语言要使用C 语言程序中定 义的标号XINT,需要在这个标号前加底线;在中断向量表该中断对应位置(int2)写汇编语 言语句跳转语句。 修改连接命令文件:在MEMORY 小节中开辟单独的地址段用以存放中断向量表;在 SECTIONS 小节中指定.vectors 段到前步开设的内存段中。 主程序中进行初始化设置:定位中断向量表,使能中断,清中断等。 4实

16、验程序流程图:二实验步骤 1实验准备: 1. 连接实验设备: 连接实验箱附带的键盘的PS2 插头到ICETEK-CTR 的“键盘接口”P8。 将ICETEK-CTR 板的供电电源开关拨动到“开”的位置。开关位置请参见第二部分、第 一章、五、“扩展模块电源开关及其指示灯”。 2设置Code Composer Studio 2.21 在硬件仿真(Emulator)方式下运行: 3启动Code Composer Studio 2.21:选择菜单DebugReset CPU。 4打开工程文件: 工程目录:C:ICETEK-VC5509-EDULabLab0304-XINTXINT.pjt。 开始初始化:DSP 时钟、EMIF、 ICETEK-CTR、GPIO、 初始化中断控制寄存器 等待中断产生 改变

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号