DSPLED跑马灯实验.docx
《DSPLED跑马灯实验.docx》由会员分享,可在线阅读,更多相关《DSPLED跑马灯实验.docx(7页珍藏版)》请在冰豆网上搜索。
DSPLED跑马灯实验
《DSP技术与实验》实验报告
姓名:
学号:
学期:
实验名:
LED跑马灯
一、实验目的
1.熟悉CCS4集成开发环境
2.掌握CCS4下TMS320VC5509A的编程方法
3.熟悉CSL库的使用
二、实验设备
1.一台装有CCS4软件的计算机
2.HX5509开发板
3.XDS100-USBV1仿真器
三、实验原理
LED实验是一个基础,主要为了熟悉开发环境和5509芯片基本编程方式。
要实现LED跑马灯就首先要对芯片GPIO进行控制,GPIO为GeneralPurposeInputOutput的缩写,即通用输入输出接口。
每个GPIO都可以配置为输入或输出。
HX5509开发板的LED硬件电路如图一所示。
对GPIO控制寄存器IODIP写1就可以设定GPIO为输出,然后对数据寄存器IODATA写1或0就可以控制LED状态。
GPIO寄存器表如图二所示。
在TI的5509编程过程中,我们不需要直接对寄存器地址操作,而是可以使用TI官方提供的CSL函数库,即ChipSupportLibrary(片级支持库)。
有了它,可以简单方便的完成对DSP器件片上外设配置和控制的编程工作,从而简化了DSP片上外设开发工作,缩短开发周期,并且可以达成标准化控制的编程工作。
通过查阅TMS320C55xChipSupportLibraryAPIReferenceGuide(Rev.G).pdf可知,GPIO操作函数原型为:
而且官方手册中提示REGincludetheregistersIODIR,IOD
ATA,GPIODIR,GPIODATA,GPIOEN,AGPIODIR,AGPIODATA,andAGPIOEN。
想了解更多信息请查阅DSP5509开发板\应用资料\官方手册\TMS320C55xChipSupportLibraryAPIReferenceGuide(Rev.G).pdf。
四、实验步骤
1.打开CCS4,将开发板上电,链接好仿真器;
2打开本实验工程,编译工程;
3.点击Target---->LaunchTIDebugger;
4.点击Target---->ConnectTarget或者点击工具栏图标
连接开发板,当出现如图所示,则说明连接成功。
5.点击Target---->LoadProgram或者工具栏图标
下载程序
6.点击Target---->Run或者图标
运行程序。
此时可以看到开发板上的LED灯开始闪烁。
五、实验结果及分析
1.记录本次实验的实验原理、设计过程、程序设计思想和实验结果、硬件测试结果。
2.LED的详细参数如工作电压,电流你知道吗?
3.熟悉了解CSL库的使用方法。
六、参考文献
1.《所有实验说明.PDF》
2.《TMS320C55xDSP原理及应用。
》
附件:
程序及说明
gpio.c
#include
#include
#include
#include
voiddelay();
/*锁相环的设置*/
PLL_ConfigmyConfig={
0,//IAI:
thePLLlocksusingthesameprocessthatwasunderway
//beforetheidlemodewasentered
1,//IOB:
IfthePLLindicatesabreakinthephaselock,
//itswitchestoitsbypassmodeandrestartsthePLLphase-locking
//sequence
24,//PLLmultiplyvalue;multiply24times
1//Divideby2PLLdividevalue;itcanbeeitherPLLdividevalue
//(whenPLLisenabled),orBypass-modedividevalue
//(PLLinbypassmode,ifPLLmultiplyvalueissetto1)
};
main()
{
inti=0;
/*初始化CSL库*/
CSL_init();
/*设置系统的运行速度为144MHz*/
PLL_config(&myConfig);
/*确定方向为输出*/
GPIO_RSET(IODIR,0xFF);
for(i=0;i<0x0a;i++)
{
/*全亮*/
GPIO_RSET(IODATA,0xff);
delay();
/*全灭*/
GPIO_RSET(IODATA,0x0);
delay();
}
/*循环闪烁*/
for(;;)
{
GPIO_RSET(IODATA,0x1);
delay();
delay();
GPIO_RSET(IODATA,0x2);
delay();
delay();
GPIO_RSET(IODATA,0x4);
delay();
delay();
GPIO_RSET(IODATA,0x8);
delay();
delay();
GPIO_RSET(IODATA,0x10);
delay();
delay();
GPIO_RSET(IODATA,0x40);
delay();
delay();
GPIO_RSET(IODATA,0x80);
delay();
delay();
}
}
voiddelay()
{
Uint32j=0,k=0;
for(j=0;j<0x0c;j++)
{
for(k=0;k<0xffff;k++)
{}
}
}