基于TI5416芯片的键盘控制程序的实现

更新时间:2024-06-12 01:21:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

XXX 《基于TI5416芯片的键盘控制程序的实现》 第 1 页 共 26 页

XXXXXX

《通信电路DSP》课程设计报告

XXX

学 院 XXXXXXXXXXX 专 业 通信工程 班 级 XXXXXXXXX 学 号 XX 学生姓名 指导教师 课程成绩 完成日期 2011年1月14日

课程设计成绩评定

XXX 《基于TI5416芯片的键盘控制程序的实现》 第 2 页 共 26 页

学 院 计算机与通信工程学院 专 业 通信工程 班 级 学 号 学生姓名 指导教师 完成日期 2011年1月14日 成 绩

指导教师对学生在课程设计中的评价

评分项目 课程设计中的创造性成果 学生掌握课程内容的程度 课程设计完成情况 课程设计动手能力 文字表达 学习态度 规范要求 课程设计论文的质量

优 良 中 及格 不及格 指导教师对课程设计的评定意见

综合成绩 指导教师签字 2011年 月 日

课程设计任务书

XXX 《基于TI5416芯片的键盘控制程序的实现》 第 3 页 共 26 页

计算机与通信工程 学院 通信工程 专业

课程名称 DSP课程设计 学生姓名 题 目 主要内容: 本课程设计的目的主要是通过基于DSP芯片来完成逻辑分析仪的实现,通过对输入逻辑数字信号发生器,数据采集,功能控制,还有显示电路等逻辑器件组成可以产生8路循环移位逻辑信号序列,调节显示预置。最终将其高速送入示波器稳定显示。 要求: (1)本设计开发平台为C语言编程和CCS平台。 (2)模型设计应该符合工程实际,模块参数设置必须与原理相符合。 (3)处理结果和分析结论应该一致,而且应符合理论。 (4)独立完成课程设计并按要求编写课程设计报告书。 应当提交的文件: (1)课程设计学年论文。 (2)课程设计附件(主要是模型文件和源程序)。 时间 2010~2011学年第1学期17~20周 指导老师 基于TIC5416芯片的逻辑分析仪的实现

基于TMS320VC5416芯片的A/D采样实现

学生姓名:XXX 指导老师:XXX

摘要:本文并行模数转换器与DSP连线复杂,而且需要设计相应的译码电路,所以在一

XXX 《基于TI5416芯片的键盘控制程序的实现》 第 4 页 共 26 页

定程度上引入了干扰和不稳定因素。根据高速定点DSP芯片TMs32OVc5416多通道缓冲串口的特点和串行模数转换芯片AD73360的工作特性。提出了使用串行A/D转换器AD73360作为DSP系统的模拟量输入部分,解决了以往基于并行数据传输的A/D转换器接口复杂问题。在此基础上介绍了串行A/D与TMS320VC5416 DSP的McBSP接口设计方法,给出具体的硬件设计和与之相关的软件设计。实现了接口电路简单化并且保证了系统工作的稳定性。

关键词:电子技术;多通道缓冲串口;译码电路;A/D接口设计

Abstract: 此处将中文翻译成英文摘要 Keywords:

1引言

模数接口是数字信号处理(DSP)系统中一个重要的组成部分,其设计和实现直接影响到信号处理的质量,许多A/D转换芯片都采用并行的数字接口,并行接口的优势在于资源丰富,但是在使用过程中与DSP接口时需要设计相应的译码电路。这不仅连线复杂,增加了布线的面积,而且一定程度上引入了干扰和不稳定的因素。串行接口则连线

XXX 《基于TI5416芯片的键盘控制程序的实现》 第 5 页 共 26 页

简单、布线少,比并行接口更稳定,但硬件资源较少。对于一些信号处理系统,基于连线简单、结构更加紧凑的考虑,经常会采用串行接口来控制A/D。TMs320VC54xx系列芯片配备了多通道带缓冲能力的串行口(McBSP,multi-channel buffered serialport),为设计串行模数接口提供了极大的便利[2]。McBSP具有双向的自动缓冲单元,缓冲单元有自己的循环寻址寄存器组,用来做串行口和C54x内部存储器之间数据传输的缓存。同时McBSP的功能非常强大,除具有一般DSP串口功能之外,还可以支持T1/E1,ST—BUS,SPI等不同标准;为便于进行多通道的数字信号处理,McBSP最多支持128个通道;支持多种数据格式(8/12/16/20/24/32bit)的传输;可自动进行语音的/1律:A律压扩;其工作速率可达到1/2 CPU 时钟速率口]。这些特性为模数接口电路设计提供了很大的灵活性。

2系统硬件简述

2.1 TMS320VC5416

TMS320VC5416(以下简称VC5416)是TI公司的一款16bit定点高性能DSP,是

XXX 《基于TI5416芯片的键盘控制程序的实现》 第 16 页 共 26 页

CMPR 0AR1

BC ERRORCRCnTC 判断控制字是否已正确写入,

ERRORCRD STM #8388hDXR10 向CRD写控制字88h,通道 LD DRR10A 1和通道2加电,增益为0DB STL AAR1 STM #0BB88hAR0 CMPR 0AR1

BC ERRORCRDnTC 判断控制字是否已正确写入,

ERRORCRE STM #8488hDXR10 向CRE写控制字88h,通道 LD DRR10A 3和通道4加电,增益为0DB STL AAR1 STM #0BC88hAR0 CMPR 0AR1

BC ERRORCREnTC 判断控制字是否已正确写入,

ERRORCRf STM #8588hDXR10 向CRF写控制字88h,通道 LD DRR10A 5和通道6加电,增益为0DB STL AAR1 STM #0BD88hAR0 CMPR 0AR1

BC ERRORCRfnTC 判断控制字是否已正确写入,

ERRORCRgSTM #8600hDXR10 向CRG写控制字00h,设置 LD DRR10A 1至6通道为差动输入方式 STL AAR1 STM #0BE00hAR0 CMPR 0AR1

BC ERRORCRgnTC 判断控制字是否已正确写入,

ERRORCRhSTM #8700hDXR10 向CRH写控制字00h,设置 LD DRR10A 1至6通道为同相输入方式 STL AAR1 STM #0Bf00hAR0

XXX 《基于TI5416芯片的键盘控制程序的实现》 第 17 页 共 26 页

CMPR 0AR1

BC ERRORCRhnTC 判断控制字是否已正确写入, STM #8001hDXR10 向CRA写控制字01h,使 RPT #400 AD73360进入数据模式 nOP

4实验检验

4.1 A/D采样实验调试

1. ad.c:这是实验的主程序,包含系统初始化,配置CODEC,AD 设置,通过CODEC 进行AD 采样等。

2. boot.asm:C 环境的引导程序。

3. dec5416.c:对SEED-DEC5416 各项资源的操作的函数集,主要包含了对UART 的

XXX 《基于TI5416芯片的键盘控制程序的实现》 第 18 页 共 26 页

操作的各个函数,对CODEC 的各个控制函数。以及对系统各项的初始化函数。

4. memory.asm:包含了对FLASH 的各项操作、程序空间MEMORY 的读写。 5. sysreg.asm:包含了对DSP 的各项控制,像中断的设置、系统时钟设置、及各项寄存器的操作。

6. uart.asm:对异步串口的寄存器的读与写。 7. vector.asm:包含了VC5416 的中断向量表。

8. dec5416.cmd:声明了系统的存贮器配置与程序各段的连接关系。

4.2 A/D采样实验调试程序的实验步骤

1.将DSP 仿真器与计算机连接好。

2. 将DSP 仿真器的JTAG 插头与SEED-DEC5416 单元的J1 相连接。 3. 启动计算机,当计算机启动后,打开SEED-DTK_DBD 的电源。观察

SEED-DTK-IO1 单元的+5V,+3.3V,+15V,-15V 的电源指示灯,SEED_DEC5416 的D2 以及SEED-DSK2812 的D2 是否均亮;若有不亮的,请断开电源,检查电源。

4. 打开CCS,进入CCS 的操作环境,新建CCS-AD工程。

5. 装入CCS-AD.pjt 工程文件,添加dtk-boot.gel 文件,开始进行调试。 6. 打开ad.c 文件,到第60,61 行,可以修改宏定义SAMPLELONG 和SAMPLERATE。SAMPLELONG 有3 个选择256、512、1024,表示采样点数。SAMPLERATE 也有3 个选择1、2、3。1 表示采样率为8k,2 表示采样率为44k,3 表示采样率为96k。

7. 修改完宏定义后, 编译、链接生成CCS-AD.out 文件, 装载程序CCS-AD.out。 8. 本实验和FFT 实验,数字滤波实验都需要设置实验箱信号源。通过液晶和按键,设置信号源。菜单路径为:“系统设置”-“信号发生器设置”。在“信号发生器设置”这一菜单下:“通道”设为“0”;“信号类型”可根据需要任意选择;“信号频率”和“信号振幅”可在屏幕下方“有效输入”限定的范围内任意输入,建议设为1000 左右;

“信号发生器开关”设为“开启”。此时便有正弦信号输入CODEC芯片。系统时钟设置,CODEC 芯片接口等的配置AD 采样参数设置,条件编译实现采样频率的选择,初始化DEC5416,通过CODEC 进行AD 采样

9. 运行程序。可以观察收到的数据和显示的图像,数据保存在dataleft数组中,图像显示的即为dataleft 数组。如下图显示了采样频率为44K,采样长度(点)为1024 点时

XXX 《基于TI5416芯片的键盘控制程序的实现》 第 19 页 共 26 页

的采样结果:显示图像时请注意所显示数组的数据类型及长度。可以修改信号源,继续执行,观察输入不同信号源的执行结果。

10. 重新执行第6)步,变化采样频率或采样长度,或者退出实验。

4.3工程包含文件介绍

1. da.c:这是实验的主程序,包含了系统的初始化,D/A 转换参数的设置, D/A 转换的启动。

2. ac811.c:对DAC811 转换芯片操作的函数集。 3. da_a.asm:对D/A 转换的时钟初始化; 4. system_int.asm:seed-mmi5402 系统初始化。 5. vector.asm:seed-mmi5402 的中断向量表。 6. uart.asm:对异步串口的寄存器的读与写。 7. vector.asm:包含了VC5416 的中断向量表。

8. dec5416.cmd:声明了系统的存贮器配置与程序各段的链接关系。 9. Dtk-boot.gel: 系统的初始化文件

10. commn.h:各子函数的头文件,定义了AD 实验中所用的命令宏。

4.4 采样信号在CCS中的显示

AD73360初始化完成之后就可以打开串口的接收中断,在中断服务程序中接收A/D转换的数据。在该配置条件下,若输入时钟为8.192MHz,则AD73360为六路模拟采样,采样率为8kHz。

实践表明,由VC5416的MCBSP和AD73360构成的信号采集和处理系统具有设计简便、结构紧凑、工作稳定和可以方便地在几种采样率之间选择等优点。与并行接口相比,采用串行接口的硬件连接线大为减少,这样不仅可以减少印制电路板的面积,还可以减少电磁干扰,从而有利于系统更加稳定的工作。在不影响系统工作速度的条件下,在系统设计中利用串行接口代替并行接口不失为一种很好的设计方法。

XXX 《基于TI5416芯片的键盘控制程序的实现》 第 20 页 共 26 页

5 遇到的问题及解决办法

XXX 《基于TI5416芯片的键盘控制程序的实现》 第 21 页 共 26 页

6 结束语

基于以上设计, 可以在SEED-DTK5416 基于TMS320VC5416、TMS320VC5402的新型双DSP 试验箱中实现A/D转换采样的实现。这次课程设计让我们对通信电路DSP实现各种功能模块的设计有了进一步的认识:

1、熟悉了SEED-DTK5416 基于TMS320VC5416、TMS320VC5402的新型双DSP 试验箱;

2、熟悉了并使用TMS320VC5416芯片和AD73360芯片(包括芯片各功能扩展,引脚功能,接口电路设计);

3、熟悉了并掌握上述芯片的接口软件的编写,调试、下载和运行实现。

XXX 《基于TI5416芯片的键盘控制程序的实现》 第 22 页 共 26 页

参考文献

[1] 郝静,王业浦,刘兵兵等.等厚形三棱轴与孔的设计[J].农机化研究,2002.2(1):88-89.

[2] 郭芝俊,左宝山,张桂芳等.机械设计便览[M].天津:天津科学技术出版社,1986:26-64.

[3] 李继彬,李国仁,张振良.高等数学教程[M].北京:科学出版社,1999:43-44. [4] 林洁,数控加工程序编制[M].北京:航空工业出版社,1993:212-216.

XXX 《基于TI5416芯片的键盘控制程序的实现》 第 23 页 共 26 页

附件

1、ad.c文件:这是实验的主程序,包含系统初始化,配置CODEC,AD 设置,通过CODEC 进行AD 采样等。

ioport unsigned port0bfff; #define IOSR port0bfff #define _cosx 0.999390827

#pragma DATA_SECTION(_COSX,\float _cosx[200];

#pragma DATA_SECTION(dacdata,\int dacdata[180]; void delay(void); void main(void) {

unsigned int i=0;

XXX 《基于TI5416芯片的键盘控制程序的实现》 第 24 页 共 26 页 _cosx[0]=1.000; dacdata[0]=4095; _cosx[1]=_COSX;

dacdata[1]=_COSX*2047+2048; i=1; while(1) {

if(i++>179) break;

_cosx[i]=2*_COSX*_cosx[i-1]-_cosx[i-2]; dacdata[i]=_cosx[i]*2047+2048; } i=0; while(1) {

if(i>179) i=0;

IOSR=dacdata[i++]; /*delay*/ } }

void delay(void) {

long int j;

for(j=0; j<200; j++) asm(\}

2. boot.asm文件:C 环境的引导程序。 sint17 .space 4*16 sint18 .space 4*16 sint19 .space 4*16 sint20 .space 4*16 sint21 .space 4*16 sint22 .space 4*16 sint23 .space 4*16 sint24 .space 4*16 sint25 .space 4*16 sint26 .space 4*16 sint27 .space 4*16 sint28 .space 4*16 sint29 .space 4*16 sint30 .space 4*16

int0: RETE

NOP

XXX 《基于TI5416芯片的键盘控制程序的实现》 第 25 页 共 26 页 NOP NOP int1: RETE

NOP NOP NOP int2: RETE

NOP NOP NOP tint: B _time .ref _time

NOP NOP rint0: RETE

NOP NOP NOP xint0: RETE

NOP NOP NOP rint1: RETE

NOP NOP NOP xint1: RETE

NOP NOP NOP int3: RETE

NOP NOP NOP .end

3.dec5416.cmd文件:声明了系统的存贮器配置与程序各段的连接关系。 -c

-o cos.out -l rts.lib MEMORY {

PAGE 0:

PARAM : origin=0x1000, length=0x0efd PAGE 1:

DARAM : origin=0x2000, length=0x2000

XXX 《基于TI5416芯片的键盘控制程序的实现》 第 26 页 共 26 页 }

SECTIONS {

.text : {} > PARAM PAGE 0 .cinit: {} > PARAM PAGE 0 .data: {} > DARAM PAGE 1 .bss: {} > DARAM PAGE 1 .const: {} > DARAM PAGE 1 }

4.vector.asm文件:包含了VC5416 的中断向量表

#define DEC5416_CTL 0x60000 //定义DEC5416_CTL 寄存器 #define DEC5416_INT 0x60001 //定义DEC5416_ INT 寄存器 #define DEC5416_STA 0x60002 //定义DEC5416_ STA 寄存器 StartUp( ) ; 开始函数 {

GEL_MapReset(); ; 存储空间复位

GEL_MapAdd(0x0000,0,0x7fff,1,1); 定义程序空间0000-7fff 可读 写

GEL_MapAdd(0x8000,0,0x7000,1,1); 定义程序空间8000-f000 可读写 GEL_MapAdd(0x0000,1,0x1000,1,1); 定义数据空间0000-f000 可读写 GEL_MapAdd(0xffff,2,1,1,1); 定义i/o 空间0xffff 可读写 GEL_MapOn(); 存储空间打开

GEL_MemoryFill(0xffff,2,1,0x40); 在i/o 空间添入数值40h }

5.commn.h文件:各子函数的头文件,定义了AD 实验中所用的命令宏 #define ADSTART 0xAA40 //启动AD 采样 #define ADSET 0xAA41 //AD 设置

#define ADDATASEND 0xAA43 //AD 数据传送 #define ADOVER 0xAA42 //AD 数据采样结束 #define ADGAIN 0xAA44 //AD 前向增益调整 /*AD 属性设置*/

typedef struct _AdConfig {

unsigned int SampleLong; //AD 采样数据长度 unsigned int SampleRate; //AD 采样率 unsigned int GainSet; //AD 前向增益调整

unsigned int DataLeft; //选择左通路数据还是右通路 }AdConfig, *PAdConfig; /*AD 采样率调整*/

#define ADSAMPL8K 0xd //采样率为8k #define ADSAMPL44K 0x23 //采样率为44k #define ADSAMPL96K 0x1d //采样率为96k

XXX 《基于TI5416芯片的键盘控制程序的实现》 第 26 页 共 26 页 }

SECTIONS {

.text : {} > PARAM PAGE 0 .cinit: {} > PARAM PAGE 0 .data: {} > DARAM PAGE 1 .bss: {} > DARAM PAGE 1 .const: {} > DARAM PAGE 1 }

4.vector.asm文件:包含了VC5416 的中断向量表

#define DEC5416_CTL 0x60000 //定义DEC5416_CTL 寄存器 #define DEC5416_INT 0x60001 //定义DEC5416_ INT 寄存器 #define DEC5416_STA 0x60002 //定义DEC5416_ STA 寄存器 StartUp( ) ; 开始函数 {

GEL_MapReset(); ; 存储空间复位

GEL_MapAdd(0x0000,0,0x7fff,1,1); 定义程序空间0000-7fff 可读 写

GEL_MapAdd(0x8000,0,0x7000,1,1); 定义程序空间8000-f000 可读写 GEL_MapAdd(0x0000,1,0x1000,1,1); 定义数据空间0000-f000 可读写 GEL_MapAdd(0xffff,2,1,1,1); 定义i/o 空间0xffff 可读写 GEL_MapOn(); 存储空间打开

GEL_MemoryFill(0xffff,2,1,0x40); 在i/o 空间添入数值40h }

5.commn.h文件:各子函数的头文件,定义了AD 实验中所用的命令宏 #define ADSTART 0xAA40 //启动AD 采样 #define ADSET 0xAA41 //AD 设置

#define ADDATASEND 0xAA43 //AD 数据传送 #define ADOVER 0xAA42 //AD 数据采样结束 #define ADGAIN 0xAA44 //AD 前向增益调整 /*AD 属性设置*/

typedef struct _AdConfig {

unsigned int SampleLong; //AD 采样数据长度 unsigned int SampleRate; //AD 采样率 unsigned int GainSet; //AD 前向增益调整

unsigned int DataLeft; //选择左通路数据还是右通路 }AdConfig, *PAdConfig; /*AD 采样率调整*/

#define ADSAMPL8K 0xd //采样率为8k #define ADSAMPL44K 0x23 //采样率为44k #define ADSAMPL96K 0x1d //采样率为96k

本文来源:https://www.bwwdw.com/article/2qp6.html

Top