南邮大四课程设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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 源程序学习中断向量表的写法。