基于TMS320X2812的 流水灯设计

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

Guangxi University of Science and Technology 课程设计说明书
实验课程:DSP原理、开发与应用
实验内容:基于TMS320X2812的流水灯设计
院(系):计算机学院
专业:通信工程
班级:101班
学生姓名:
学号:201000402008
指导教师:
2013年7月3日
目录
一、设计任务 (1)
二、实验目的 (1)
三、设计内容 (1)
四、实验原理 (2)
4.1DSP(2812)性能概述 (2)
4.2TMS320F2812的引脚图及功能 (4)
4.3电源转换 (5)
4.4复位电路 (5)
4.5时钟电路 (6)
4.6JTAG仿真接口电路 (7)
五、程序设计 (8)
1、流程图 (8)
2、程序源代码 (9)
5.2.1系统初始化函数 (9)
5.2.2程序主函数 (13)
六、CCS集成开发工具与测试 (15)
6.2CCS窗口简介 (15)
6.2.1CCS窗口示例 (15)
6.2.2CCS中常用的工具 (16)
七、实验总结 (16)
八、参考资料 (17)
前言
随着计算机和信息技术的飞速发展,DSP技术已经应用到我们生活的每一个角落,从军用到民用,从航空航天到生产生活,都越来越多的使用DSP。

DSP的主要应用有数字化移动电话,数据调制解调器,磁盘/光盘控制器需求,图形图像处理需求,汽车电子系统等。

应用DSP的领域可以说是不胜枚举。

DSP在航空航天方面,主要用于雷达和声纳信号处理;在通信方面,主要用于移动电话,IP电话,ADSL和HFC的信号传输;在控制方面,主要用于电机控制,光驱和因公安驱动器;在电子娱乐方面,主要用于高清晰电视,机顶盒,家庭影院,DVD等应用;还有数字相机,网络相机等等。

可以说没有DSP就没有对互联网的访问,也没有多媒体,也没有无线通信。

随着科学技术的发展,将会出现更多的DSP新应用领域。

一、设计任务
1、基于TMS320X2812的Led显示控制系统设计
要求:
(1)绘制系统框图(VISIO);
(2)包括复位电路设计、JTAG接口设计、时钟电路设计、电源设计等,并且用Protel 软件绘制原理图;
(3)编写程序,实现功能;
(4)理论分析
(5)设计过程、源代码和注释、设计说明书。

二、实验目的
⑴学习并了解DSP开发版的基本原理;
⑵学习并了解TMS320X2812芯片的基本结构和原理;
⑶熟悉流水灯的软件实现原理和硬件设计;
⑷熟悉Emulator方式下的程序调试规程,并最终能够熟练掌握在DSP软硬件环境下的程序开发流程;能够对现有器件进行简单地编程,实现各种简单地显示控制。

三、设计内容
(1)使用Altium Designer软件绘制原理图。

(2)使用VISIO软件绘制系统框图和软件流程图。

(3)使用CCStudio v3.3软件设计程序实现流水灯。

四、实验原理
通过本设计熟悉中规模集成电路进行时序电路和组合电路设计的方法,掌握彩灯循环控制器的设计方法通过对DSP结构、原理及应用的学习。

在初步了解DSP结构和原理的基础上,进行简单的应用实验,掌握DSP的基本应用。

通过熟悉DSP模板的内部结构以及CCS软件,掌握DSP2407的汇编语言编程和调试方法,了解DSP的指令和I/O 端口的寄存器的配置,并结合DSP实验模板对DSP进行编程控制数字输入/输出端口点亮LED显示管。

实验的具体要求如下:实现LED显示管的循环显示:先第1个LED 亮,然后是第2个LED亮,第3个LED显示管亮。

第4个灯亮。

如此循环显示。

DSP最小系统
4.1DSP(2812)性能概述
(1)F2812DSP芯片采用高性能静态CMOS技术
1主频高达150MHz,每个时钟周期为6.67ns。

2采用低电压供电,当主频为135MHz时,内核电压为1.8V,主频150MHz
时内核电压为1.9V,I/O引脚电压为3.3V。

(2)支持JTAG在线仿真接口
(3)32位高性能处理器
1支持16bX16b和32bX32b的乘法加法运算。

2支持16bX16b双乘法运算。

3采用哈佛总线结构模式。

4快速的中断响应和中断处理能力。

5统一的存储设计模式。

6兼容C/C++语言以及汇编语言。

(4)片内存储空间
1片内FLASH空间大小为128KX16b,分为4个8KX16b和6个16KX16b
存储段。

2OTP ROM空间大小1KX16b。

3L0、L1两块4KX16b单地址寻址随机存储器(SARAM)。

4H0:一块8KX16b随机存储器(SARAM)。

5M0、M1:两块1KX16bSARAM。

(5)Boot ROM空间
空间大小为4KX16b,内含软件启动模式以及标准数学函数库。

(6)外部接口
1高达1MX16b的总存储空间。

2可编程的等待时间。

3可编程的等待读写时序。

43个独立的片选信号。

(7)时钟和系统控制
1支持动态锁相环倍频。

2片内振荡器。

3内含看门狗定时模块。

(8)3个外部中断
(9)外设中断模块(PIE)可以支持45个外设中断
(10)3个32位CPU定时器
(11)128位安全密钥
1可以包含Flash ROM OTP以及L0L1SARAM。

2防止系统硬件、软件被修改。

(12)用于控制电机的外设
1两路事件管理(EVA、EVB)。

(13)串行通信端口
1串行外设接口SPI。

2两路串行通信接口SCI,标准URAT口。

3增强型CAN模块(eCAN)。

4多通道缓冲串行接口(MSBSP)。

(14)12位ADC转换模块
12X8路输入通道。

2两个采样保持器。

3单一或级联转换模式。

4最高转换速度80ns/12.5Msps。

(15)56个通用GPIO口
(16)先进的仿真模式
1具有实时仿真及设置断点的功能。

2支持硬件仿真。

(17)开发工具
1DSP集成环境CCS。

2JTAG仿真器。

(18)低电模式和电源存储
1支持IDLE、STANDBY、HALT模式。

2禁止/使能独立外设时钟。

(19)封装
1179引脚BGA封装,带扩展存储接口。

2176引脚PGF封装,带扩展存储接口。

4.2TMS320F2812的引脚图及功能
如图2-1为TMS320F2812引脚图以及各个引脚的作用。

4.3电源转换
DSP最小系统仅有5V电源供电,由于DSP芯片供电电压只能是3.3V,所以在设计电路时,需要将5V电源转换为3.3V给CPU供电,因此使用了TI公司的5V/3V的TPS7333Q高性能稳压芯片,并可提供上电复位信号,该信号/RS—DSP接到DSP的复位引脚上。

该芯片最大输出电流500mA。

TPS7333Q输出后的10μf和0.1μf的电容不能省略,否则得不到稳定的3.3V电压。

图4-1为电源转换原理图。

图4-1电源转换原理图
4.4复位电路
DSP系统的复位电路的设计对于系统性能有重要影响。

DSP2812为低
电平复位,由于内部有复位电路,所以直接在复位引脚/xrs接一个10K的上拉电阻即可;有些电源芯片有复位引脚,可用于DSP的直接复位。

复位电路原理图如图4-2所示:
图4-2复位电路原理图
4.5时钟电路
TMS320F2812DSP的时钟可以有两种连接方式,即外部振荡器方式和谐振器方式。

有源晶振驱动能力较强,频率范围较宽,在1HZ—400MHZ之间。

无源晶振驱动能力差,价格便宜,频率范围较窄。

本文采用的是外部有源时钟方式,直接选择一个3.3V供电的30MHz有源晶振实现。

晶振电路如图4-3所示。

图4-3时钟电路
4.6JTAG仿真接口电路
几乎所有的高速控制器和可编程器件都配有标准仿真接口JTAG,F2812也不例外。

JTAG扫描逻辑电路用于仿真和测试,采用JTAG可实现在线仿真,同时也.是调试过程装载数据、代码的唯一通道。

通过JTAG接口可将仿真器与目标系统相连接。

为了与仿真器通信,DSP控制板必须带有14引脚的双排直插管座。

F2812和14针仿真插座连接的电路如图4-4。

流水灯控制系统电路:
五、程序设计:
软件设计
这里用软件延时的方法来调整发光二极管的延时时间间隔。

当发光二极管被点亮之后,通过改变端口的数据输出,达到点亮不同的LED显示管的目的。

实验要求实现LED显示管的循环显示:先第1个LED亮,然后是第2个LED亮,第3个LED显示管亮。

第4个灯亮。

如此循环显示。

在给端口赋初值为00000001后,其高8位为00000000;主要是对低8位进行操作。

通过对低8位左移一位再与00000001相或,得到的值通过端口输出,便可以完成0000 0001→……→00001111的显示,每改变一次显示的时间间隔是由软件延时控制产生的。

当数据的最高位等于1的时候,根据判断将程序跳转,从11111111开始对数据的操作变为先与01111111B相与,再右移一位,将得到的结果输出。

当输出数据的最低位为0的时候程序跳转,完成了基本功能的一个循环,程序跳到循环开始的地方,即给程序重新赋值为00000001,进行下一轮的循环。

如此即可以实现实验要求的功能。

5.1.程序流程图
5.2程序部分源代码
5.2.1系统初始化函数
#include"DSP281x_Device.h"
#include"System.h"
#pragma CODE_SECTION(InitFlash,"ramfuncs");
/*------------------------------------------*/
/*形式参数:void*/ /*返回值:void*/ /*函数描述:初始化系统*/ /*------------------------------------------*/
void InitSysCtrl(void)
{
DisableDog();//禁止看门狗
InitPll(0x02);//设置系统时钟=XCLKIN*2/2
InitPeripheralClocks();//设置外设时钟
DINT;//关闭总中断
IER=0x0000;//关闭外设中断
IFR=0x0000;//清中断标志
InitPieCtrl();//初始化PIE控制寄存器
InitPieVectTable();//使能PIE向量表
}
/*------------------------------------------*/
/*形式参数:void*/ /*返回值:void*/ /*函数描述:禁止看门狗*/ /*------------------------------------------*/
void DisableDog(void)
{
EALLOW;
SysCtrlRegs.WDCR=0x0068;
EDIS;
}
/*------------------------------------------*/
/*形式参数:void*/ /*返回值:void*/ /*函数描述:喂看门狗*/ /*------------------------------------------*/
void KickDog(void)
{
EALLOW;
SysCtrlRegs.WDKEY=0x0055;
SysCtrlRegs.WDKEY=0x00AA;
EDIS;
}
/*------------------------------------------*/
/*形式参数:void*/ /*返回值:void*/ /*函数描述:设置锁相环倍频系数*/
/*------------------------------------------*/
void InitPll(Uint16val)
{
volatile Uint16iVol;
if(SysCtrlRegs.PLLCR.bit.DIV!=val)
{
EALLOW;
SysCtrlRegs.PLLCR.bit.DIV=val;
EDIS;
for(iVol=0;iV ol<4096;iV ol++);
}
}
/*------------------------------------------*/
/*形式参数:void*/
/*返回值:void*/
/*函数描述:初始化外设时钟*/
/*------------------------------------------*/
void InitPeripheralClocks(void)
{
EALLOW;
SysCtrlRegs.HISPCP.all=0x0001;//设置高速时钟2分频SysCtrlRegs.LOSPCP.all=0x0002;//设置低速时钟4分频//使能外围模块时钟
SysCtrlRegs.PCLKCR.bit.EV AENCLK=1;
SysCtrlRegs.PCLKCR.bit.EVBENCLK=1;
SysCtrlRegs.PCLKCR.bit.SCIAENCLK=1;
SysCtrlRegs.PCLKCR.bit.SCIBENCLK=1;
SysCtrlRegs.PCLKCR.bit.MCBSPENCLK=1;
SysCtrlRegs.PCLKCR.bit.SPIENCLK=1;
SysCtrlRegs.PCLKCR.bit.ECANENCLK=1;
SysCtrlRegs.PCLKCR.bit.ADCENCLK=1;
EDIS;
}
/*------------------------------------------*/
/*形式参数:void*/
/*返回值:void*/
/*函数描述:初始化Flash*/
/*------------------------------------------*/
void InitFlash(void)
{
EALLOW;
FlashRegs.FPWR.bit.PWR=3;//设置Flash为正常工作状态
FlashRegs.FBANKWAIT.bit.RANDWAIT=5;//设置随机存取等待时间
FlashRegs.FBANKWAIT.bit.PAGEWAIT=5;//设置页面存取等待时间
FlashRegs.FSTDBYWAIT.bit.STDBYWAIT=0x01FF;//设置从睡眠到等待的转换时间
FlashRegs.FACTIVEWAIT.bit.ACTIVEWAIT=0x01FF;//设置从等待到激活的转换时间
FlashRegs.FOPT.bit.ENPIPE=1;//使能流水线模式
EDIS;
asm("RPT#7||NOP");//软件延时,等待流水线刷新
}
/*------------------------------------------*/
/*形式参数:void*/
/*返回值:状态值*/
/*函数描述:unlocks the CSM*/
/*------------------------------------------*/
#define STATUS_FAIL0
#define STATUS_SUCCESS1
Uint16CsmUnlock()
{
volatile Uint16temp;
//写入密钥,应将0xFFFF替换成密钥值
EALLOW;
CsmRegs.KEY0=0xFFFF;
CsmRegs.KEY1=0xFFFF;
CsmRegs.KEY2=0xFFFF;
CsmRegs.KEY3=0xFFFF;
CsmRegs.KEY4=0xFFFF;
CsmRegs.KEY5=0xFFFF;
CsmRegs.KEY6=0xFFFF;
CsmRegs.KEY7=0xFFFF;
EDIS;
///执行空读
temp=CsmPwl.PSWD0;
temp=CsmPwl.PSWD1;
temp=CsmPwl.PSWD2;
temp=CsmPwl.PSWD3;
temp=CsmPwl.PSWD4;
temp=CsmPwl.PSWD5;
temp=CsmPwl.PSWD6;
temp=CsmPwl.PSWD7;
if(CsmRegs.CSMSCR.bit.SECURE==0)
return STATUS_SUCCESS;
else
return STATUS_FAIL;
}
5.2.2程序主函数
#include"DSP281x_Device.h"
#include"System.h"
/****************端口宏定义*****************/ /****************常量宏定义*****************/
/***************全局变量定义****************/
/****************函数声明*******************/
void Init_LED(void);
/*------------------------------------------*/
/*形式参数:void*/
/*返回值:void*/
/*函数描述:主函数*/
/*------------------------------------------*/
void main(void)
{
unsigned int i,j,temp;
InitSysCtrl();//系统初始化子程序,在DSP28_sysctrl.c中Init_LED();
temp=0x0001;
while(1)
{
GpioDataRegs.GPBCLEAR.all|=temp;
for(i=0;i<10;i++)
for(jzs=0;j<60000;j++);
GpioDataRegs.GPBSET.all|=temp;
temp<<=1;
if(temp==0x0100)
temp=0x0001;
}
}
/*------------------------------------------*/
/*形式参数:void*/
/*返回值:void*/
/*函数描述:初始化LED端口为输出*/
/*------------------------------------------*/
void Init_LED(void)
{
EALLOW;
GpioMuxRegs.GPBDIR.all|=0x00FF;
EDIS;
}
六、CCS集成开发工具与测试
6.1CCS是什么
通常,DSP厂商和第三方都会为DSP的开发应用提供各种各样的软硬件开发工具(代码生成工具和代码调试工具等)。

早期的DSP开发工具没有集成化,需要在DOS环境下键入比较复杂的命令,使用起来不很方便,调试、开发的效率也不高。

1999年,TI公司推出了CCS(Code Composer Studio)集成开发工具(直译为代码设计工作室),为DSP用户提供了十分便利的开发环境。

CCS内部集成了以下软件工具:
◆DSP代码生成工具(包括DSP的C编译器、汇编优化器、汇编器和链接器等)
◆CCS集成开发工具(编辑、链接和调试DSP目标程序)。

◆实时分析插件DSP/BIOS和实时数据交换模块RTDX等(必须有硬件开发板)。

CCS是一种可视化集成开发工具,它集代码生成软件和代码调试工具于一体,具有强大的应用开发功能:
⑴可视化代码编辑界面:可以直接编写汇编语言和C语言程序、.H头文件和.CMD 命令文件等。

⑵代码生成工具:包括DSP的汇编器、C编译器和链接器等。

⑶各种调试工具:包括加载执行文件、运行、单步操作、设置断点、查看编辑存储器和寄存器、观察变量、评估程序和执行时间等。

⑷探针工具:可将PC机数据文件中的数据传到DSP,或者将DSP中数据传到PC机数据文件中,以便实现各种算法仿真和数据监视。

⑸图形显示工具:可以将DSP程序生成的数据绘制成时域/频域图等,以便于观察和分析。

⑹通用扩展语言GEL:可以让用户通过GEL语言编程,建立需要的GEL函数来扩展CCS的功能,包括配置各种参数、修改变量等。

⑺DSP/BIOS工具:它是DSP芯片简化了的操作系统内核,即各种DSP芯片操作系统的底层文件,为嵌入式系统应用提供基本的运行服务,具有代码较少、逻辑精简等优点。

⑻开放式的插入架构技术:只需安装相应的驱动程序,就能够集成第三方的专用插件。

6.2CCS窗口简介
6.2.1CCS窗口示例
CCS系统设置完成后,就可以打开CCS应用程序,在CCS集成开发环境下完成工程定义,程序的编辑、编译、链接和调试,以及程序运行结果的分析和评估等工作。

一个典型的CCS集成开发环境住窗口如图3-1所示。

该示例窗口由菜单栏、工具栏、工程窗口、源程序编辑和调试窗口、存储器窗口、CPU寄存器窗口、输出窗口等组成。

此外,
还可以根据需要打开反汇编窗口、图形显示窗口、变量观察窗口,以及时钟窗口等。

6.2.2CCS中常用的工具
菜单栏——和CCS所有功能相关的菜单都在这里面。

编译工具栏——编译程序时常用的一些工具。

调试工具栏——调试程序时常用的一些工具。

工程文件框——打开的工程所有文件会按类别放在这里,便于我们编程时在各个文件之间的切换。

代码编辑区——顾名思义,代码都是在这里编辑完成的了,是我们最主要的工作区域。

编译信息输出区——编译时产生的信息会在这个区域内输出,能让我们直观的了解到正在编译哪个文件,编译过程中是否产生了错误,而这些错误是哪些,由于什么原因引起的,这些内容都会显示在这里。

七、课程设计总结体会
通过这次的课程设计,提高自己动手能力的同时也学到了很多有关方面的知识,对DSP有了更深入的理解,巩固了以前学到的知识,是自己更加充实。

通过调试以上程序运行无误,完成了流水灯要求,使用dsp芯片设计流水灯;使用数码管显示;利用程序延时,接口转换实现流水灯。

通过本次课程设计实现了用DSP芯片设计流水灯,学习到了很多关于DSP的基础知识。

并且更加深刻的巩固了课堂上所学的课本知识,DSP技术有了更进一步的认识和了解。

掌握了DSP的基本实验方法,提高了工程设计和组织实验能力。

八、参考文献
刘和平《DSP原理及电机控制应用》北京航空航天大学出版社2006年顾卫钢《手把手教你学DSP》北京航空航天大学出版社2011年
戴明帧周建江《TMS320C2407X DSP结构、原理及应用》(第二版)北京航空航天大学出版社2007
张刚毅《Dsp原理、开发与应用》哈尔滨工业大学出版社(第二版)。

相关文档
最新文档