资源描述
广西科技大学课程设计说明书 DSP技术及其应用
Guangxi University of Science and Technology
课程设计说明书
实验课程: DSP 技术原理与应用
实验内容: 基于DSPTMS320X2812的流水灯设计
院 (系): 计算机学院
专 业: 通信工程
班 级: 102班
学生姓名: 乐兴乐
学 号: 201000402060
指导教师: 袁浩浩
2013年 7 月 4日
9
目录
一、 设计任务 …………………………………………………………………………2
二、 实验目的 …………………………………………………………………………2
三、 设计内容…………………………………………………………………………2
四、 实验原理…………………………………………………………………………5
五、 程序设计…………………………………………………………………………6
1、流程图
2、程序源代码
六、实验总结………………………………………………………………………11
一、 设计任务
基于DSPTMS320X2812芯片,设计一个流水灯实验,并且熟悉ccs编译环境,掌握流水程序的编译与调试。
二、 设计目的
1、熟悉DSP2812的结构和使用,,掌握DSP系统调试的一般步骤和方法。
2、 编写程序实现流水灯,并调试。
3、 掌握DSP开发环境CCS的使用和一般的编程技巧。,
三、整体系统框图:
按键电路
TMS320X2812
复位电路
LED灯电路
电源电路
JTAG接口电路
时钟电路
1.电源电路
DSP 系统一般都采用多电源系统 ,电源及复位电路的设 计对 于系 统性 能有重 要影 响 。TM S320F2812 是一个较低功耗芯片 ,核电压为 1.8V , IO 电压3.3V .本文采用TI 公司的TPS767D318 电源芯片.该芯片属于线性降压型 DC/ DC 变换芯片 ,可 以 由5V电 源 同 时 产 生 两 种 不 同 的 电 ( 3.3V 1.8V 或2.5V ) , 其 最 大 输 出 电 流 为1000mA ,
可以同时满足一片 DSP 芯片和少量外围电路的供电需。片自带电源监控及复位管功能 ,可以方便地实现电源及复位电路设计 。除了可以稳定输出3.3V电压外,同时具有复位功能;TPS767D318复位脚与DSP复位脚相连接,当电源电路出现波动时,其复位脚可以输出200ms的复位信号,保证DSP芯片复位.
2. 时钟电路
利用DSPs 芯片内部提供的晶振电路,在DSPs芯片的X1 和X2/ CL KIN 之间连接一晶体可启动振荡器。此处,可以连接一个10MHz 的晶振
3. 复位电路
4. JTAG接口设计
JTAG是基于IEEE 1149. 1 标准的一种边界扫描测试方式。TI 公司为其大多数的DSPs 产品都提供了J TAG端口支持,5402 也不例外。结合配套的仿真软件,可访问DSPs 的所有资源,包括片内寄存器及所有的存储器,从而提供了一个实时的硬件仿真与调试环境,便于开发人员进行系统软件调试。除上述电路接口外,要使系统板正常地工作,还必须配置跳线和接插座等部分。其中:电源模块接出一个插座,以便于外部电压输入;音频编解码部分需安装话筒和扬声器;USB 芯片要连接到USB 接口插件,以实现与主机的交互。实用起见,所有这些插件均设置在电路板边界部分。最后,对于系统中一些难以事先决定的设置引脚附近,放置上位/ 下拉电阻,为以后的电路更改或扩展提供方便。
四. 实验原理
数字I/O端口:
I/O端口寄存器:
五、程序设计
程序流程图:
开始
初始化
键盘扫 描程序
S0==0 s4==0
循环
右移
左移
S0==0 s4==0
详细代码:
/*****************头文件********************/
#include "DSP281x_Device.h"
#include "System.h"
/****************端口宏定义*****************/
#define S1 GpioDataRegs.GPEDAT.bit.GPIOE2
#define S2 GpioDataRegs.GPBDAT.bit.GPIOB8
#define S3 GpioDataRegs.GPBDAT.bit.GPIOB9
#define S4 GpioDataRegs.GPBDAT.bit.GPIOB10
/****************常量宏定义*****************/
/***************全局变量定义****************/
unsigned int temp;
/****************函数声明*******************/
void Init_LED(void);
void Scan_Key(void); //扫描键盘
void Manage_Key1(void); //按键1处理程序
void Manage_Key2(void); //按键2处理程序
void Manage_Key3(void); //按键3处理程序
void Manage_Key4(void); //按键4处理程序
void main(void)
{
InitSysCtrl(); // 系统初始化子程序,在DSP28_sysctrl.c中
Init_LED();
GpioDataRegs.GPBSET.all |=0x00FF;
temp=0x0001;
GpioDataRegs.GPBCLEAR.all |=temp;
while(1)
{
if((S1==0)|(S4==0))//扫描是否按键按下
Scan_Key();
}
}
void Scan_Key(void)
{
unsigned int i;
for(i=0;i<10000;i++); //键盘消抖动
if(S1==0)
Manage_Key1();
else if(S4==0)
Manage_Key4();
while((S1==0)|(S4==0));
}
void Manage_Key1(void) //左移
{
if(temp!=0x0080)
{
GpioDataRegs.GPBSET.all |=temp;
temp<<=1;
GpioDataRegs.GPBCLEAR.all |=temp;
}
}
void Manage_Key2(void)
{
}
void Manage_Key3(void)
{
}
void Manage_Key4(void)//右移
{
if(temp!=0x0001)
{
GpioDataRegs.GPBSET.all |=temp;
temp>>=1;
GpioDataRegs.GPBCLEAR.all |=temp;
}
}
void Init_LED(void)
{
EALLOW;
GpioMuxRegs.GPBDIR.all |=0x00FF;
EDIS;
}
六、总结
通过本次的课程设计,我初步学会了用DSPTMS320X2812芯片,设计一个流水灯,并掌握了流水灯的工作原理。熟悉了DSPTMS320X2812的结构,并且学会了如何去编写一个流水灯实验。要学会DSPTMS320X2812的开发,还需要更多的努力!
展开阅读全文