CCS实验讲义.docx
《CCS实验讲义.docx》由会员分享,可在线阅读,更多相关《CCS实验讲义.docx(36页珍藏版)》请在冰豆网上搜索。
CCS实验讲义
DSP原理及应用实验讲义
中国石油大学信息与控制工程学院
电子信息工程系
2008.3
目 录
实验一CCS软件入门实验3
实验二DSP入门实验8
实验三I/O实验15
实验四定时器实验17
实验五外部中断实验19
实验六A/D转换实验21
实验七LCD实验26
实验八DSP综合实验29
附录一开发一个简单的应用程序30
附录二语言编程格式40
实验一CCS软件入门实验
1.实验目的
(1)通过学习CCS软件的说明和介绍了解如何使用CCS软件;
(2)熟悉如何建立工程,修改文件,编译运行程序;
(3)了解控制DSP的基本工作流程;
(4)学会阅读英文文档资料,按照文档介绍解决实际遇到的问题。
2.实验内容
本实验要求通过在课上学习的CCS使用方法,结合书上内容和CCS的帮助文档,按照CCS英文文档的步骤在CCS上建立一个简单的DSP工程文件。
学习如何建立工程、如何添加文件、设置程序选项、编译工程、定位错误、修改错误、运行程序、查看结果、分析程序等。
要求对每一个工程都要认真完成,彻底学会使用CCS软件。
CCS(CodeComposerStudio)代码调试器是TI公司专为DSP开发提供的一种集成开发环境(IDE,IntegratedDevelopmentEnvironment),在Windows操作系统下,采用图形接口界面,提供环境配置、源文件编辑、程序调试、跟踪和分析等工具,帮助用户完成DSP系统开发。
CCS有两种工作模式,即软件仿真器(Simulator)和硬件仿真器(Emulator)。
软件仿真器工作可以脱离DSP芯片,在PC上模拟DSP的指令和工作机制,主要用于前期DSP开发中算法的实现和调试。
硬件仿真需要运行在DSP芯片上,与硬件开发板联合在线编程和调试。
本节实验将学习和使用软件仿真模式,同学们在自己的电脑上进行编程时采用这种模式。
硬件仿真器(Emulator)将在实验二中介绍。
3实验步骤
一、配置CCS为软件仿真模式
1)打开桌面上的SetupCCS2('C5000)图标;进入如下界面:
2)点中Clear,将原始配置清除;
3)选中如下界面的选项:
4)点击Import按钮。
5)点击SaveandQuit;出现如下提示:
6)选择“是”,启动CCS软件
二、按照CCS自带的帮助文件建立工程、调试等
1)运行Help菜单下的Tutorial
2)打开了如下界面:
3)进入“CodeComposerStudioIDE”;
4)进入”DevelopingaSimpleProgram”
5)按照Tutorial中的实验步骤创建工程等。
详细的中文步骤参见附录一,但不推荐同学们参考中文。
注意:
把D:
\ti\tutorial\sim54xx\volume1目录下的文件拷贝到新建的目录。
4实验报告
实验做完,请让实验老师检查,并且随机提两个问题,综合结果作为实验成绩。
实验二DSP入门实验
1.实验目的
(1)进一步熟悉如何使用CCS软件;
(2)学会配置硬件仿真器的方法;
(3)深入了解通过软件如何控制DSP运行;
(4)学会最简单的控制DSP外设的方法;
2.实验内容
(1)学习配置CCS硬件仿真器(Emulator)仿真模式
(2)编写一个程序要求控制XF引脚的变化,然后用示波器测量XF脚波形或观察与相接的LED(XF引脚已经与实验台上的LED-D1相连,位于CPLD单元右上方)。
通过CCS的设置和上一个实验的知识,自主编写核心程序,控制DSP硬件的外设引脚。
通过循环对XF位置1和清0,用示波器或LED可以在XF脚检测到电平高低周期性变化。
在调试DSP系统过程中,也常使用这个实验来测度一下DSP能否正常工作。
3.预备知识
使用
asm("ssbxXF");
将汇编语言嵌入到C语言文件中。
ssbxXF的作用是将XF输出1;
asm("rsbxXF");
是将XF输出0;
在实验箱中XF脚接到一个LED,这样通过设置XF为1或0来使LED发光和熄灭。
用一个延时子程序将XF脚电平变化频率降到肉眼可分辨的程度,就可以用LED来显示电平的变化。
4.实验步骤
一、配置CCS为软件仿真模式
第一次启动CCS时,需要按照DSP器件的型号,对DSP硬件仿真器进行设置。
该配置文件用来定义DSP芯片和目标板(实验箱)类型,配置步骤如下:
(1)双击桌面上的SetupCCS2('C5000)图标,如图2.1-1。
下一次启动时直接双击桌面上的CCS2('C5000)双击桌面上的SetupCCS2('C5000)图标,如图2.1-2。
图2.1-1CCS配置图标图2.1-2CCS启动图标
(2)运行SetupCCS2('C5000)后,会出现如图2.1-3所示的图形对话框。
对于C5000系统,CCS默认的配置文件是TMS320C55x仿真器,清除以前定义的配置。
单击“Clear”按钮,弹出确认清除命令对话框,单击“Yes”按钮,清除以前的配置。
2.1-3CCS配置界面
(3)选择与实验箱目标系统相匹的配置文件。
在AvailableConfigruations对话框中选取C5416XDS510Emulator,单击Import按钮,然后单击“Close”按钮。
如图2.1-4所示。
图2.1-4DSP仿真器配置
(4)在CCS建立对话框的SystemConfiguration中选取目标系统C5416XDS510Emulator,单击鼠标右键,选取Properties项,如图2.1-5所示。
进入目标系统的配置对话框。
图2.1-5CCS参数设置
(5)在如图2.1-6所示的参数配置对话框中,目标板配置文件选取“Auto-generateboarddatafilewithextraconfiguration”,并为目标系统选择合适的配置文件。
单击“Browse”按钮,指定配置文件所在路径。
本实验系统的配置文件路径为“D:
\ti\drivers”,添加该配置文件,如图1.1-7所示。
并单击“next”按钮。
图2.1-6目标系统参数设置
图2.1-7添加系统设置文件
(6)在next后出现的对话框中将I/O端口地址由“0x240”修改为“0x280”,如图2.1-8所示。
图2.1-8设置仿真器端口地址
(7)再单击“Next”按钮,进入DSP处理器配置对话框,如图2.1-9所示。
如果“ProcessorsOn”框内存在“CPU_1”,直接按“Next”按钮,进入下一步。
如果“ProcessorsOn”框内不存在“CPU_1”,或目标系统存在多个CPU,可以分别按“AddSingle”或“AddMultiple”按钮。
图2.1-9配置CPU
(8)在单击“Next”按钮后,出现如图2.1-10所示的对话框,为DSP芯片选择一个“StartupGELFiles”,GEL文件的路径是“D:
\ti\cc\gel\c5416.gel”。
系统会按照所选择的器件自动为目标板配置相应的GEL文件。
图2.1-10配置GEL文件
(9)配置完成后单击“Finish”,并关闭“CodeComposerStudioSetup”对话框。
在弹出如图2.1-11所示的对话框中,选择“是(Yes)”按钮,保存DSP系统的配置,并启动CCS。
二、建立工程添加编、写源文件
(1)建立工程,工程名为TestXf;
(2)将DSPLab\2_TESTXP目录下的DspRegDefine.h;ucos_ii.CMD;VECTORS.ASM文件加入到工程中;
(3)增加D:
\ti\c5400\cgtools\lib\rts.lib到工程文件中;
(4)建立文件TestXf.c,在文件中编写程序实现XF的控制;
(5)修改程序,使LED闪烁频率变化;
5.实验报告
提交TestXf.c文件,将程序中用到的语句用中文注释,解释原因和机理。
实验老师检查实验结果,给出综合成绩。
5设计指导
请参阅附录二和实验一程序。
实验三I/O实验
1.实验目的
(1)了解I/O口的扩展;
(2)掌握I/O口的操作方法;
(3)熟悉在C语言中访问IO口的方法;
2.实验内容
编写一个程序对DSP的IO口控制的程序。
程序要求能够将从外部键盘输入的状态读到内部变量。
并且可以将不同的值通过DSP的IO口输出。
这个实验从外部输入的是开关K1~K8,通过设置不同的开关状态,在CCS里读取其相应的值。
输出控制LED指示灯LED1~LED8亮灭的变化,通过程序控制指示灯的变化。
最后通过程序,将从开关输入的状态映射到LED,这样不同的开关状态对应的LED有不同的变化。
注:
在实验台上,虽然LED1~LED8(位于数码管下方)与开关K1~K8(位于LED1~LED8下方)位置相近,但是它们分别对应不同的I/O口,即是相互独立的外围电路。
3.预备知识
C/C++中访问DSP的I/O空间的方法是借助关键字ioport来实现的。
在C54xx中的格式为:
ioport数据类型porthex_num
其中,ioport是定义访问I/O空间的关键字。
因为I/O空间在C54xx中只有64KW(W代表字),所以,数据类型只能为char、short、int、unsigned等16bit的类型。
对于访问I/O空间的地址100h,则变量名必须命名为port100。
ioportshortport100;
shortsh_a,sh_b;
读操作:
sh_a=port100;//将IO口的数据读到变量
写操作:
port100=sh_b;//将变量值写到IO口
在本实验中,提供的IO空间分配如下:
I/O空间:
0x8000拨码开关input8位
I/O空间:
0x8001LED灯output8位
4.实验步骤
(1)建立工程,工程名为TestIO;
(2)将实验二中DspRegDefine.h;ucos_ii.CMD;VECTORS.ASM文件加入到工程中;
(3)增加D:
\ti\c5400\cgtools\lib\rts.lib到工程文件中;
(4)建立文件TestIO.c,在文件中编写程序实现IO的控制;
(5)任意调整K1~K8开关,可以观察到对应LED1~LED8灯“亮”或“灭”;
5.实验报告
(1)提交TestIO.c文件,将程序中用到的语句用中文注释,解释原因和机理。
实验老师检查实验结果,给出综合成绩。
(2)分析LED1~LED8与D0~D7的对应方式
注:
在读入开关量语句设置断点,用观察窗口观察temp的值,单击
运行程序。
Animate和Run命令有些类似,它使目标板一直运行直到遇到一个断点,这时目标板被停止,所有的窗口被更新。
实验四定时器实验
1.实验目的
(1)熟悉C54的定时器;
(2)掌握C54定时器的控制方法;
(3)学会使用定时器中断方式控制程序流程。
2.实验内容
编写一个程序对DSP的TIMER控制的程序。
按照上课学过的定时器使用的方法或其它资料中定时器的介绍,编写定时器的程序,并且验证可行性。
通过IO实验的方法,让定时器定时触发中断,并且不同的中断时刻通过控制IO使LED灯LED1~LED8周期性的闪烁。
3.预备知识
C54的定时器是一个20位的减法计数器,可以被特定的状态位实现停止、重新启动、重设置或禁止,可以使用该定时器产生周期性的CPU中断,控制定时器中断频率的两个寄存器是定时周期寄存器PRD和定时减法寄存器TDDR,定时器的中断周期为:
CLKOUT*(TDDR+1)*(PRD+1)
在本系统中,如果设置时钟频率为10MHZ,令PRD=0x30D3,TDDR=15(即TCR第四位为1111),这样得到每0.02秒中断一次,通过累计50次,就能实现1秒钟定时。
0.1us*(15+1)*(12499+1)*50=1S
在头文件里定义定时器的寄存器:
#defineTIM0x0024//timer0reg
#definePRD0x0025//timer0periodreg
#defineTCR0x0026//timer0controlreg
通过下面的语句实现对中断寄存器的读写控制:
asm("ssbxintm");//禁止所有可屏蔽中断
*(unsignedint*)TCR=0x0010;//停止T0定时器记数
*(unsignedint*)PRD=0x30d3;/设置T0的周期寄存器
*(unsignedint*)IMR=*(unsignedint*)IMR|0x0008;//允许T0中断
*(unsignedint*)IFR=*(unsignedint*)IFR;//清除中断标志
*(unsignedint*)TCR=0x002f;//允许T0定时器记数
/*TRB=1,PRD中的数加载TIM及TDDR中的数加载PSC;TDDR=1111*/
asm("rsbxintm");//开放所有可屏蔽中断
编写定时器中断程序,响应中断后,周期的通过IO口设置LED变化。
I/O空间:
0x8001LED灯output8位
4.实验步骤
(1)建立工程,工程名为TestTIMER;
(2)将实验二中DspRegDefine.h;ucos_ii.CMD;VECTORS.ASM文件加入到工程中;
(3)增加D:
\ti\c5400\cgtools\lib\rts.lib到工程文件中;
(4)建立文件TestTimer.c,改写相应的其它文件,并且在TestTimer.c中编写程序实现定时器的控制;
(5)运行程序,使对应LED1~LED8灯按照规律周期性的“亮”或“灭”;
5.实验报告
提交TestTimer.c文件,将程序中用到的语句用中文注释,解释定时器机理以及程序的实现步骤。
实验老师检查实验结果,给出综合成绩。
实验五外部中断实验
1.实验目的
(1)掌握中断技术,学会对外部中断的处理方法;
(2)掌握中断对程序流程的控制,理解DSP对中断的响应时序。
2.实验内容
编写一个程序对DSP的外部中断控制的程序。
按照上课学过的定时器使用的方法或其它资料中定时器的介绍,编写外部中断的程序,并且验证可行性。
通过IO实验的方法,在中断服务程序里通过控制IO使LED灯LED1~LED8闪烁。
通过断点调试来测试外部中断和定时器中断的响应次序,并分析原因。
1、低电平单脉冲触发DSP中断INT2;该中断由“单脉冲输出”按键产生。
按一次,产生一个中断。
2、拨码开关:
SW2
SW2
备注
1
2
3
4
码位
ON
ON
OFF
ON
单脉冲产生的中断给CPU2的中断INT2
3.预备知识
54XDSP的INT2中断为低电平沿触发。
通过下列语句操作中断:
*(unsignedint*)IMR=0x0004;//使能int2中断
asm("rsbxINTM");//开总中断
对于中断服务程序必须使用:
interruptvoidExtInt2()//中断2中断子程序
{
}
形式定义。
并且在中断向量文件中要有对应的程序语句:
nINT2_SINT2:
;ExternalInterrupt2Vector(vector_base+0x48)
b_ExtInt2
nop
nop
这里ExtInt2要和主程序里的中断服务程序名称一致。
编写定时器中断程序,响应中断后,通过IO口设置LED变化。
I/O空间:
0x8001LED灯output8位
4.实验步骤
(1)建立工程,工程名为TestExtInt;
(2)将实验二中DspRegDefine.h;ucos_ii.CMD;VECTORS.ASM文件加入到工程中;
(3)增加D:
\ti\c5400\cgtools\lib\rts.lib到工程文件中;
(4)建立文件TestExtInt.c,在文件中编写程序实现外部中断的控制;
(5)实现低电平单脉冲触发DSP中断INT2;该中断由“单脉冲输出”按键产生。
按一次,产生一个中断。
每按一次“单脉冲输出”按键使LED1~LED8灯亮灭变化一次;
(6)增加定时器实验中的定时器中断,通过断点判断中断的优先级。
5.实验报告
提交TestExtInt.c文件,将程序中用到的语句用中文注释,解释原因和机理。
实验老师检查实验结果,给出综合成绩。
实验六A/D转换实验
1.实验目的
(1)熟悉A/D转换的基本原理;
(2)掌握AD7822的技术指标和常用方法;
(3)掌握并熟练使用DSP和AD7822BN的接口及其操作。
2.实验内容
编写一个程序使用CCS读取AD采集的数据到DSP的存储区。
按照课上介绍的AD与DSP的硬件连接和操作方法,编写读取AD采样后数据的程序,并且以图像或数据的形式将数据显示出来。
3.预备知识
拨码开关设置:
JP3拨码开关:
码位
备注
1
ON:
将“模拟信号源”单元1的信号输入到AD7822
2
OFF:
3
OFF:
4
OFF:
5
OFF:
6
OFF:
SW2拨码开关:
SW2
备注
1
2
3
4
码位
ON
ON
ON
ON
AD7822的采样时钟为250KHZ,且中断给CPU2的中断2
AD7822通过DSP的I/O口完成数据通讯。
采样数据存储在数据data_buff[]中。
AD7822的时序:
定义数据缓冲区:
UINT16data_buff[256];//数据缓冲256个数组
AD每完成一次采样,触发DSP外部中断,在中断服务程序里:
*(unsignedint*)IFR=0xFFFF;//清除所有中断标志,"写1清0",这个语句可以省略,响应中断自动清除中断标志
//----读AD7822的转换结果----------------
data_buff[i]=port8002&0x00ff;
i++;
if(i==256)i=0;
实现数据从端口0x8002读取AD采样后的数据。
4.实验步骤
(1)建立工程,工程名为TestAD;
(2)将实验二中DspRegDefine.h;ucos_ii.CMD;VECTORS.ASM文件加入到工程中;
(3)增加D:
\ti\c5400\cgtools\lib\rts.lib到工程文件中;
(4)建立文件TestAD.c,在文件中编写程序实现DSP对AD的操作;
(5)用下拉菜单中的View/Graph的“Time/Frequency”打开一个图形观察窗口;设置该图形观察窗口的参数,观察起始地址为”data_buff”,长度为256的存储器单元内的数据,该数据为输入信号经A/D转换之后的数据,数据类型为16位整型;
(6)单击“Animate”运行程序,调节信号源1的频率、幅值、波形调节旋钮,在图形观察窗口观察A/D转换后的数据波形变化;
(7)单击“Halt”暂停程序运行,用“View”的下拉菜单中“Memory”打开存储器数据观察窗口;设置该存储器数据观察窗口的参数,选择地址为data_buff,数据格式C格式16进制数;
(8)单击“Animate”运行程序,调整存储器数据观察窗口,并在该窗口中观察数据变化,A/D转换后的数据存储在地址为data_buff单元开始的256个单元内,变化数据将变为红色;
5.实验报告
提交TestAD.c文件,将程序中用到的语句用中文注释,解释原因和机理。
实验老师检查实验结果,给出综合成绩。
有精力的同学向任课或实验老师要DA转换实验的实验讲义,完成DA转换实验。
实验七LCD实验
1.实验目的
(1)了解LCD显示的基本原理;
(2)学习用TMS320C54XDSP芯片控制LCD的基本方法和步骤;
(3)加深对访问DSPIO空间的理解。
2.实验内容
根据提供的样例程序,对LCD进行操作。
深入理解LCD在原理上如何与DSP相连接;如何用DSP控制LCD进行显示。
3.预备知识
液晶显示器(LCD)以其功耗低、体积小、外形美观、价格低廉等多种优势在仪器仪表产品中得到愈来愈多的应用。
LCD数据接口基本上分为串行接口和并行接口两种形式,本实验系统选用的是北京青云创新科公司生产的中文液晶显示模块,型号为LCM12864ZK_LCD,其字型ROM内含8192个16*16点中文字型和128个16*8半宽的字母符号字型;另外绘图显示画面提供一个64*256的绘图区域GDRAM;而且内含GDRAM提供4组软件可编程的16*16点阵造字功能。
电源操作范围宽(2.7Vto5.5V);低功耗设计可满足产品的省电要求。
同时,与单片机等微控器的接口界面灵活(三种模式并行8位/4位串行3线/2线)。
中文液晶显示模块可实现汉字、ASCII码、点阵图形的同屏显示;广泛用于各种仪器、仪表家用电器和信息产品上作为显示器件。
本实验中,采用串行和并行8位数据接口输入方式,把LCD映射到DSP芯片的I/O空间,通过读写I/O地址来控制液晶,TMS320C54xDSP芯片对该地址输出数据,实现对LCD的显示控制。
4.实验步骤
(1)开关K9拨到右边,即仿真器选择连接右边的CPU:
CPU2;在CPU上连接DSP开发系统,正确连接完毕后,系统上电;将“液晶显示单元”拨码开关S2的1、2位都置“ON”,打开液晶的电源和背光电源。
(2)工作方式选择
A、并口工作方式:
拨码开关SW2的设置;
SW2
备注
1
2
3
4
码位
OFF
OFF
ON
ON
LCD工作模式控制,8位并口模式
跳线J65:
1、2短接
1)启动CCS2.0,用Project/Open打开“EXP10_CPU2\userlcdepp_54\” userlcdepp_54.pjt”工程文件;双击“userlcdepp_54.pjt”及“source”可查看各源程序;并加载“EXP10_CPU2\userlcdepp_54\debug”下的userlcdepp_54.out”;
2)单击“Run”运行程序;在LCD上显示:
4行汉字“白日依山尽,黄河入海流,欲穷千里目,更上一层楼”,每隔一定的时间清屏后又重新显示。
注:
随实验附带有液晶的编程说明,及使用说明。
B、串口工作方式:
拨码开关SW2的设置;
SW2
备注
1
2
3
4
码位
ON
ON
O