《DSP技术与应用》上机实验指导书.docx
《《DSP技术与应用》上机实验指导书.docx》由会员分享,可在线阅读,更多相关《《DSP技术与应用》上机实验指导书.docx(39页珍藏版)》请在冰点文库上搜索。
![《DSP技术与应用》上机实验指导书.docx](https://file1.bingdoc.com/fileroot1/2023-6/15/3b4e5e40-b937-4fe2-b100-9dff4d485f35/3b4e5e40-b937-4fe2-b100-9dff4d485f351.gif)
《DSP技术与应用》上机实验指导书
北京印刷学院
信息与机电工程学院
信息工程系
DSP技术与应用
指
导
书
自动化教研室编
目录
实验一:
CODECOMPOSERSTUDUIO实验.........................3
实验二:
数据存取实验.......................................10
实验三:
I/O端口实验、定时器实验............................13
实验四:
数/模转换和数/模转换实验...........................15
实验五:
键盘输入实验.......................................22
实验六:
液晶显示器控制显示实验.............................25
实验一:
CODECOMPOSERSTUDUIO实验
一.实验目的
1.掌握CodeComposerStudio2.21的安装和配置步骤过程。
2.了解DSP开发系统和计算机与目标系统的连接方法。
3.了解CodeComposerStudio2.21软件的操作环境和基本功能,了解TMS320C28xx软件
开发过程。
(1)学习创建工程和管理工程的方法。
(2)了解基本的编译和调试功能。
(3)学习使用观察窗口。
(4)了解图形功能的使用。
二.实验设备
1.PC兼容机一台;操作系统为Windows2000(或WindowsNT、Windows98、WindowsXP,
以下假定操作系统为Windows2000)。
Windows操作系统的内核如果是NT的应安装相应的补丁程序(如:
Windows2000为ServicePack3,WindowsXP为ServicePack1)。
2.ICETEK-F2812-EDU实验箱一台。
如无实验箱则配备ICETEK-ICETEK-USB仿真器或
ICETEK-ICETEK-PP仿真器和ICETEK-F2812-A评估板,+5V电源一只。
3.USB连接电缆一条(如使用PP型仿真器换用并口电缆一条)。
三.实验原理
*开发TMS320C5xxx应用系统一般需要以下几个调试工具来完成:
-软件集成开发环境(CodeComposerStudio2.21):
完成系统的软件开发,进行软件和硬件
仿真调试。
它也是硬件调试的辅助手段。
-开发系统(ICETEK5100USB或ICETEK5100PP):
实现硬件仿真调试时与硬件系统的
通信,控制和读取硬件系统的状态和数据。
-评估模块(ICETEKF2812-A等):
提供软件运行和调试的平台和用户系统开发的参照。
*CodeComposerStudio2.21主要完成系统的软件开发和调试。
它提供一整套的程序编制、维护、编译、调试环境,能将汇编语言和C语言程序编译连接生成COFF(公共目标文件)格式的可执行文件,并能将程序下载到目标DSP上运行调试。
*用户系统的软件部分可以由CCS建立的工程文件进行管理,工程一般包含以下几种文件:
-源程序文件:
C语言或汇编语言文件(*.ASM或*.C)
-头文件(*.H)
-命令文件(*.CMD)
-库文件(*.LIB,*.OBJ)
四.实验步骤
1.实验准备
由于本实验采用软仿真模式,不要打开实验箱电源。
2.设置CodeComposerStudio2.21在软仿真(Simulator)方式下运行
请参看本书第三部分、第一章、四、1。
3.启动CodeComposerStudio2.21
请参看本书第三部分、第一章、五、2。
选择菜单Debug→ResetCPU。
成功地启动了CCS后会出现如下窗口:
图2-1-1CCS软件界面介绍
4.创建工程
(1)创建新的工程文件
选择菜单“Project”的“New…”项。
图2-1-2创建工程文件
如下图,按编号顺序操作建立volume.pjt工程文件:
图2-1-3新建工程
展开主窗口左侧工程管理窗口中“Projects”下新建立的“volume.pjt”,其各项均为空。
(2)在工程文件中添加程序文件:
选择菜单“Project”的“AddFilestoProject…”项;在“AddFilestoProject”对话框中选择文件目录为C:
\ICETEK-F2812-A-EDUlab\DSP281x_examples\Lab0101-UseCCS,改
变文件类型为“CSourceFiles(*.c;*.ccc)”,选择显示出来的文件“volum.c”;重复上述各步骤,添加C:
\ICETEK-F2812-A-EDUlab\DSP281x_examples\Lab0101-UseCCS\volume.cmd文件到volum工程中;添加C:
\ti\c2000\cgtools\lib\rts2800_ml.lib。
(3)编译连接工程:
选择菜单“Project”的“RebuildAll”项,或单击工具条
中的按钮;注意编
译过程中CCS主窗口下部“Build”提示窗中显示编译信息,最后将给出错误和警告的统
计数。
5.编辑修改工程中的文件
(1)查看工程文件
展开CCS主窗口左侧工程管理窗中的工程各分支,可以看到“volume.pjt”工程中包
含“volume.h”、“rts2800.lib”、“volume.c”和“volume.cmd”文件,其中第一个为程序在编译时根据程序中的“include”语句自动加入的。
(2)查看源文件
*双击工程管理窗中的“volume.c”文件,可以查看程序内容。
可以看到,用标准C语
言编制的程序,大致分成几个功能块:
-头文件。
描述标准库程序的调用规则和用户自定义数据、函数头、数据类型等。
具体
包含哪一个头文件,需要根据程序中使用了哪些函数或数据而定。
比如:
如果程序中
使用了printf函数,它是个标准C提供的输入/输出库函数,选中“printf”关键字,按
Shift+F1会启动关于此关键字的帮助,在帮助信息中可发现其头函数为stdio.h,那么
在此部分程序中需要增加一条语句:
#include“stdio.h”。
-工作变量定义。
定义全局变量。
-子程序调用规则。
这部分描述用户编制的子程序的调用规则。
也可以写到用户自己编
制的.h文件中去。
-主程序。
即main()函数。
它可分为两部分:
变量定义和初始化部分、主循环部分。
主
循环部分完成程序的主要功能。
-用户自定义函数。
这个程序是一个音频信号采集、处理输出的程序。
程序的主循环中调用自定义的函数
read_signals来获得音频数据并存入输入缓存inp_buffer数组;再调用自定义函数
write_buffer来处理音频数据并存入输出缓存;output_signals将输出缓冲区的数据送输出设
备;最后调用标准C的显示信息的函数printf显示进度提示信息。
整个系统可以完成将输
入的音频数据扩大volume倍后再输出的功能。
read_signal子程序中首先应有从外接AD设备获得音频数据的程序设计,但此例中由
于未采用实际AD设备,就未写相应控制程序。
此例打算用读文件的方式获得数据,模拟
代替实际的AD输入信号数据。
write_buffer子程序中首先将输入缓冲区的数据进行放大处理,即乘以系数volume,
然后放入输出缓冲区。
output_signals函数完成将处理后的设备输出的功能,由于此例未具体操作硬件输出设
备,所以函数中未写具体操作语句。
*双击工程管理窗中的“volume.h”文件,打开此文件显示,可以看到其中有主程序中
要用到的一些宏定义如“BUF_SIZE”等。
*volume.cmd文件定义程序所放置的位置,此例中描述了ICETEK-F2812-A评估板的
存储器资源,指定了程序和数据在内存中的位置。
比如:
它首先将ICETEK-F2812-A评估板的可用存储器分为八个部分,每个区给定起
始地址和长度(区域地址空间不允许重叠);然后指定经编译器编译后产生的各模块放到哪
个区。
这些区域需要根据评估板硬件的具体情况来确定。
(3)编辑修改源文件及编译程序
打开“volume.c”,找到“main()”主函数,将语句“input=inp_buffer;”最后的分号去
掉,这样程序中就出现了一个语法错误;重新编译连接工程,可以发现编译信息窗口出现
发现错误的提示;双击红色错误提示,CCS自动转到程序中出错的地方;将语句修改正确
(将语句末尾的分号加上);重新编译;注意,重新编译时修改过的文件被CCS自动保存。
(4)修改工程文件的设置
图2-1-4修改工程文件
通过以上设置操作,重新编译后,程序中的用户堆栈的尺寸被设置成1024个字。
6.基本调试功能
(1)下载程序:
执行FileLoadProgram,在随后打开的对话框中选择刚刚建立的
C:
\ICETEK-F2812-A-EDUlab\DSP281x_examples\Lab0101-UseCCS\Debug\volume.out文
件。
(2)设置软件调试断点:
在项目浏览窗口中,双击volume.c激活这个文件,移动光标到main()
行上,单击鼠标右键选择ToggleBreakpoint或按F9设置断点(另外,双击此行左边的灰
色控制条也可以设置或删除断点标记)。
(3)利用断点调试程序:
选择DebugRun或按F5运行程序,程序会自动停在main()函数上。
①按F10执行到write_buffer()函数。
②再按F8,程序将转到write_buffer函数中运行。
③此时,为了返回主函数,按shift-F7完成write_buffer函数的执行。
④再次执行到write_buffer一行,按F10执行程序,对比与F8执行的不同。
提示:
在执行C语言的程序时,为了快速的运行到主函数调试自己的代码,可以使用
DebugGomain命令,上述实验中的使用的是较为繁琐的一种方法。
7.使用观察窗口
(1)执行ViewWatchWindow打开观察窗口。
(2)在volume.c中,用鼠标双击一个变量(比如num),再单击鼠标右键,选择“QuickWatch”,
CCS将打开QuickWatch窗口并显示选中的变量。
(3)在volume.c中,选中变量num,单击鼠标右键,选择“AddtoWatchWindow”,CCS将
把变量添加到观察窗口并显示选中的变量值。
(4)在观察窗口中双击变量,则弹出修改变量窗口。
此时,可以在这个窗口中改变变量的值。
(5)把str变量加到观察窗口中,点击变量左边的”+”,观察窗口可以展开结构变量,并且显示结
构变量的每个元素的值。
(6)把str变量加到观察窗口中;执行程序进入write_buffer函数,此时num变量超出了作用
范围,可以利用CallStack窗口察看在其他函数中的变量:
①选择菜单ViewCallStack打开堆栈窗口。
②双击堆栈窗口的main()选项,此时可以察看num变量的值。
8.文件输入/输出
下面介绍如何从PC机上加载数据到DSP上。
用于利用已知的数据流测试算法。
在完成下面的操作以前,先介绍CodeComposerStudio的Probe(探针)断点,这种断点
允许用户在指定位置提取/注入数据。
Probe断点可以设置在程序的任何位置,.当程序运行到Probe断点时,与Probe断点相关的事件将会被触发,当事件结束后,程序会继续执行。
在这一节里,Probe断点触发的事件是:
从PC机存储的数据文件中的一段数据加载到DSP的缓冲区中。
(1)在真实的系统中,read_signals函数用于读取A/D模块的数据并放到DSP缓冲区中。
在
这里,代替A/D模块完成这个工作的是Probe断点。
当执行到函数read_signals时,Probe
断_______点完成这个工作。
①在程序行read_signals(input);上单击鼠标右键选择“Togglebreakpoint”,设置软件断点。
②再在同一行上单击鼠标右键,选择“ToggleProbePoint”,设置Probe断点。
(2)执行以下操作
图2-1-5设置fileio文件
此时,已经配置好了Probe断点和与之关联的事件.进一步的结果在下面实验中显示。
9.图形功能简介
下面我们使用CCS的图形功能检验上一节的结果。
首先进行下面设置操作:
图2-1-6设置图形显示功能
图2-1-6设置图形显示功能
-在弹出的图形窗口中单击鼠标右键,选择“ClearDisplay”。
-按F12运行程序.观察input窗口的内容。
10.选择菜单File→workspace→saveworkspacsAs…,输入文件名SY.wks。
11.退出CCS。
请参看本书第三部分、第一章、六。
五.实验结果
通过对工程文件“volume”的编译、执行后得到结果的图形显示如下:
图2-1-7结果显示
六.问题与思考
实验二:
数据存取实验
一.实验目的
1.了解TMS320F2812A的内部存储器空间的分配及指令寻址方式。
2.了解ICETEK-F2812-A评估板扩展存储器空间寻址方法,及其应用。
3.了解ICETEK-F2812-EDU实验箱扩展存储器空间寻址方法,及其应用。
4.学习用CodeComposerStudio修改、填充DSP内存单元的方法。
5.学习操作TMS32028xx内存空间的指令。
二.实验设备
计算机,ICETEK-F2812-A-EDU实验箱(或ICETEK仿真器+ICETEK-F2812-A评估板+相关连线及电源)。
三.实验原理
TMS32028xxDSP内部存储器资源介绍:
TMS32028xx系列DSP基于增强的哈佛结构,可以通过三组并行总线访问多个存储空间。
它们分别是:
程序地址总线(PAB)、数据读地址总线(DRAB)和数据写地址总线(DWAB)。
由于总线工作是独立的,所以可以同时访问程序和数据空间。
TMS32028xx系列DSP的地址映象请参考ICETEK–F2812-A评估板硬件使用指导部分I-4
页的介绍。
四.实验步骤
1.实验准备
连接实验设备:
请参看本书第三部分、第一章、二。
关闭实验箱上扩展模块和信号源电源开关。
2.设置CodeComposerStudio2.21在硬件仿真(Emulator)方式下运行
请参看本书第三部分、第一章、四、2。
3.启动CodeComposerStudio2.21
请参看本书第三部分、第一章、五、2。
选择菜单Debug→ResetCPU。
4.打开工程文件
工程文件为:
:
\ICETEK-F2812-A-EDUlab\DSP281x_examples\Lab0201-Memory\Memory.pjt
5.编译、下载程序。
6.程序区的观察和修改
(1)运行到main函数入口:
选择菜单Debug->GoMain,当程序运行并停止在main函数入口
时,展开“Disassembly”反汇编窗口,发现main函数入口地址为81000H,也就是说从
此地址开始存放主函数的程序代码。
(2)显示程序区:
(3)修改程序区的存储单元
程序区单元的内容由CCS的下载功能填充,但也能用手动方式修改;双击“Code”
窗口地址“0x81000:
”后的第一个数,显示“EditMemory”窗口,在“Data”中输入0x20,
修改page:
为program,单击“Done”按钮,观察“Code”窗口中相应地址的数据被修改,
同时在反汇编窗口中的反汇编语句也发生了变化,当前语句被改成了“TRAP#0”。
将地
址0x81000上的数据改回0xfe08,程序又恢复成原样。
(4)观察修改数据区
①显示数据存储区:
图2-5-1显示数据存储器
同样请打开窗口Data1,起始地址在0x80100。
②修改数据单元:
数据单元可以单个进行修改,只需双击想要改变的数据单元即可,如同
第(3)步中修改程序区单元的操作相同。
③填充数据单元:
图2-5-2观察DATA数据
观察“Data”窗口中的变化。
请同样将0x80100开始的头16个单元的值用0填充。
7.运行程序观察结果
(1)打开Memory.c,在有注释的行上加软件断点。
(2)按“F5”键运行到各断点,注意观察窗口“Data”和“Data1”中的变化,体会用程序修
改数据区语句的方法。
8.退出CCS
请参看本书第三部分、第一章、六。
五.实验结果
实验程序运行之后,位于数据区地址80000H开始的16个单元的数值被复制到了数据区
80100H开始的16个单元中。
*通过改写内存单元的方式,我们可以手工设置DSP的一些状态位,从而改变DSP工作
的状态。
六.问题与思考
实验三:
I/O端口实验、定时器实验
一.实验目的
1.通过实验熟悉F2812A的定时器;
2.掌握F2812A定时器的控制方法;
3.掌握F2812A的中断结构和对中断的处理流程;
4.学会C语言中断程序设计,以及运用中断程序控制程序流程。
二.实验设备
计算机,ICETEK-F2812-EDU实验箱(或ICETEK仿真器+ICETEK-F2812-A系统板+相关连
线及电源)。
三.实验原理
1.通用定时器介绍及其控制方法(详见spru078a.pdf)
TMS320F2812A内部有三个32位通用定时器(TIMER0/1/2),定时器1和2被保留给
实时操作系统(DSPBIOS)用,只有定时器0可以提供给用户使用。
2.中断响应过程(详见spru078a.pdf)
a.接受中断请求。
必须由软件中断(从程序代码)或硬件中断(从一个引脚或一个基于
芯片的设备)提出请求去暂停当前主程序的执行。
b.响应中断。
必须能够响应中断请求。
如果中断是可屏蔽的,则必须满足一定的条件,
按照一定的顺序去执行。
而对于非可屏蔽中断和软件中断,会立即作出响应。
c.准备执行中断服务程序并保存寄存器的值。
d.执行中断服务子程序。
调用相应得中断服务程序ISR,进入预先规定的向量地址,并
且执行已写好的ISR。
3.中断类别
可屏蔽中断:
这些中断可以用软件加以屏蔽或解除屏蔽。
不可屏蔽中断:
这些中断不能够被屏蔽,将立即响应该类中断并转入相应的子程序去执
行。
所有软件调用的中断都属于该类中断。
4.中断的优先级
如果多个中断被同时激发,将按照他们的中断优先级来提供服务。
中断优先级是芯片内
部已定义好的,不可修改。
4.实验程序流程图
5.实验程序分析
本实验设计的程序是在上实验3.1基础上修改得来,由于实验3.1控制指示灯闪烁的延时
控制是用循环计算方法得到的,延时不精确也不均匀,采用中断方式可以实现指示灯的定时闪烁,时间更加准确。
四.实验步骤
1.实验准备
连接实验设备:
请参看本书第三部分、第一章、二。
关闭实验箱上扩展模块和信号源电源开关。
2.设置CodeComposerStudio2.21在硬件仿真(Emulator)方式下运行
请参看本书第三部分、第一章、四、2。
3.启动CodeComposerStudio2.21
请参看本书第三部分、第一章、五、2。
选择菜单Debug→ResetCPU。
4.打开工程文件
打开菜单“Project”的“Open”项;选择
C:
\ICETEK-F2812-A-EDUlab\DSP281x_examples\Lab0303-Timer目录中的“Timer.pjt”。
在项目浏览器中,双击time.c,激活time.c文件,浏览该文件的内容,理解各语句作
用。
5.编译、下载程序。
6.运行程序,观察结果。
7.改变“CpuTimer0Regs.PRD.all=0xffff;”函数里的值;重复步骤5,6观察实验现象。
8.退出CCS
请参看本书第三部分、第一章、六。
五.实验结果
-指示灯在定时器的定时中断中按照设计定时闪烁。
-使用定时器和中断服务程序可以完成许多需要定时完成的任务,比如DSP定时启动A/D转
换,日常生活中的计时器计数、空调的定时启动和关闭等。
-在调试程序时,有时需要指示程序工作的状态,可以利用指示灯的闪烁来达到,指示灯灵
活的闪烁方式可表达多种状态信息。
六.问题与思考
实验四:
数/模转换和数/模转换实验
(一)单路,多路模数转换(AD)
一.实验目的
1.通过实验熟悉F2812A的定时器。
2.掌握F2812A片内AD的控制方法。
二.实验设备
计算机,ICETEK-F2812-EDU实验箱(或ICETEK仿真器+ICETEK-F2812-A系统板+相关连
线及电源)。
三.实验原理
1.TMS320F2812A芯片自带模数转换模块特性
-12位模数转换模块ADC,快速转换时间运行在25mhz,ADC时钟或12.5MSPS。
-16个模拟输入通道(AIN0—AIN15)。
-内置双采样-保持器
-采样幅度:
0-3v,切记输入ad的信号不要超过这个范围,否则会烧坏2812芯片的。
2.模数模块介绍
ADC模块有16个通道,可配置为两个独立的8通道模块以方便为事件管理器A和B
服务。
两个独立的8通道模块可以级连组成16通道模块。
虽然有多个输入通道和两个序列
器,但在ADC内部只有一个转换器,同一时刻只有1路ad进行转换数据。
3.模数转换的程序控制
模数转换相对于计算机来说是一个较为缓慢的过程。
一般采用中断方式启动转换或保存
结果,这样在CPU忙于其他工作时可以少占用处理时间。
设计转换程序应首先考虑处理过
程如何与模数转换的时间相匹配,根据实际需要选择适当的触发转换的手段,也要能及时地
保存结果。
关于TMS320F2812ADSP芯片内的A/D转换器的详细结构和控制方法,请参见文档
spru060a.pdf。
4.实验程序流程图
四.实验步骤
1.实验准备
(1)连接实验设备:
请参看本书第三部分、第一章、二。
(2)准备信号源进行AD输入。
①取出2根实验箱附带的信号线(如右图,两端均为单声道语音插头)。
②用1根信号线连接实验箱底板上信号源I模块(图2-10-1中单实线框
中部分)的“波形输出”插座(图2-10-1中的3或4)和“A/D输入”模块(图2-10-1中虚
线框中部分)的“ADCIN0”插座(图2-10-1中的A),注意插头要插牢、到底。
这样,信
号源I的输出波形即可送到ICETEK-F2812-A评估板的AD输入通道0。
③用1根信号线连接实验箱底板上信号源