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