南邮大四课程设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、EMIF 接口上的I/O接口扩展

一.实验原理

1.TMS320VC5509DSP 的EMIF 接口:

存储器扩展接口(EMIF)是DSP 扩展片外资源的主要接口,它提供了一组控制信号和地址、数据线,可以扩展各类存储器和寄存器映射的外设。

-ICETEK-VC5509-A 评估板在EMIF 接口上除了扩展了片外SDRAM 外,还扩展了指示灯、DIP 开关和D/A 设备。具体扩展地址如下:

400800-400802h:D/A 转换控制寄存器

400000-400000h:板上DIP 开关控制寄存器

400001-400001h:板上指示灯控制寄存器

-与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 Studio 2.21:

选择菜单Debug→Reset CPU。

4.打开工程文件:

工程文件为:C:\ICETEK-VC5509-EDULab\Lab0301-LED\LED.pjt。

打开源程序LED.c。

5.编译、下载程序。

6.运行程序,观察结果。

7.退出CCS:

三.部分程序代码

// 定义指示灯寄存器地址和寄存器类型

#define LBDS (*((unsigned int *)0x400001))

// 子程序接口

void Delay(unsigned int nDelay); // 延时子程序

int i;

main()

{

unsigned int uLED[4]={1,2,4,8}; // 控制字,逐位置1: 0001B 0010B 0100B 1000B CLK_init(); // 初始化DSP运行时钟

SDRAM_init(); // 初始化EMIF接口

while ( 1 )

{

for ( i=0;i<4;i++ )

{

LBDS=uLED[i]; // 正向顺序送控制字

Delay(256); // 延时

}

for ( i=3;i>=0;i-- )

{

LBDS=uLED[i]; // 反向顺序送控制字

Delay(32); // 延时【延时256->32】

}

}

}

四.实验结果

映射在扩展存储器空间地址上的指示灯寄存器在设置时是低4位有效的,数据的最

低位对应指示灯D1,次低位对应D2,...依次类推。LED指示灯由D1→D2→D3→D4→D3→D2→D1循环依次点亮。

五.实验体会

了解ICETEK-VC5509-A 板在TMS320VC5509DSP 外部扩展存储空间上的扩展。

了解ICETEK-VC5509-A 板上指示灯扩展原理。

学习在C 语言中使用扩展的控制寄存器的方法。

二、定时器的使用

一.实验原理

1.通用定时器介绍及其控制方法

TMS320VC5509A 内部有两个20 位通用定时器(GP):

*每个通用定时器包括:

-一个16 位的减计数的计数器TIM;

-一个16 位的定时器周期寄存器PRD;

-一个16 位的定时器控制寄存器TCR;

-一个16 位的定时器预定标寄存器PSCR;

*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 中断),程序在进行服务操作之后,应将本外设的中断标志位清除以便能继续中断,然后返回。3.中断程序设计:

-程序中应包含中断向量表,VC5509A 默认向量表从程序区0 地址开始存放,根据IPVD 和IPVH 的值确定向量表的实际地址。

-注意观察程序中INTR_init()函数的定义部分,其中IPVD 和IPVH 的值都为0x0d0;同时观察配置文件ICETEK-VC5509-A.cmd 中的VECT 段描述中o=0x0d000。

-向量表中每项为8 个字,存放一个跳转指令,跳转指令中的地址为相应服务程序入口地址。第一个向量表的首项为复位向量,即CPU 复位操作完成后自动进入执行的程序入口。

-服务程序在服务操作完成后,清除相应中断标志,返回,完成一次中断服务。

4.实验程序流程图:

二.实验步骤

1.实验准备:

连接实验设备:关闭实验箱上扩展模块和信号源电源开关。

2.设置Code Composer Studio 2.21 在硬件仿真(Emulator)方式下运行:

3.启动Code Composer Studio 2.21:

选择菜单Debug→Reset CPU。

4.打开工程文件:

打开菜单“Project”的“Open”项;选择C:\ICETEK-VC5509-EDULab\Lab0303-Timer 目录中的“Timer.pjt”。

在项目浏览器中,双击main.c,激活main.c 文件。

打开ICETEK-VC5509-A.cmd,对照vector.asm 源程序学习中断向量表的写法。

相关文档
最新文档