《DSP实验指导书 .doc》由会员分享,可在线阅读,更多相关《DSP实验指导书 .doc(28页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、实践系列教材DSP原理与应用实验指导书嘉兴学院机电工程学院目 录实验一:TMS32054x基本算术运算实验1实验二:I/O 端口实验5实验三:DSP的定时器中断实验8实验四:模数转换实验11实验五:有限冲击响应滤波器(FIR)算法16实验六:无限冲击响应滤波器(IIR)算法实验19实验七 快速傅立叶变换(FFT)算法22实验八 FIR滤波器的信号滤波24注意:安装c2000之后,安装驱动usb的,插上设备,会搜索2次才完成。双击setup c2000,选择ice即最后倒数第二项即可;如果出现ox100地址错误之类,估计是ovly应该设置为1,在ccs软件的cpu寄存器里面设置。实验一:TMS3
2、2054x基本算术运算实验一、 实验目的和要求1、了解Code Composer Studio 2.0 软件的操作环境和基本功能,了解TMS320C5xxx 软件开发过程。(1)学习创建工程和管理工程的方法。(2)了解基本的编译和调试功能。(3)学习使用观察窗口。(4)了解图形功能的使用2、学习使用定点DSP实现16位定点加、减、乘运算的基本方法和编程技巧。二实验设备1PC 兼容机一台;操作系统为Windows2000 (或WindowsNT、Windows98、WindowsXP,以下假定操作系统为Windows2000)。Windows 操作系统的内核如果是NT 的应安装相应的补丁程序(如
3、:Windows2000 为Service Pack3,WindowsXP 为Service Pack1)。2ICETEK-VC54167-USB-EDU(或ICETEK-VC5416-PP-EDU)实验箱一台。如无实验箱则配备ICETEK-ICETEK-USB 仿真器或ICETEK-ICETEK-PP 仿真器和ICETEK-VC5416-A/USB,5V电源一只。3USB 连接电缆一条(如使用PP 型仿真器换成并口电缆一条)。三实验原理1、开发TMS320C5xxx 应用系统一般需要以下几个调试工具来完成:软件集成开发环境(Code Composer Studio 2.0):完成系统的软件开
4、发,进行软件和硬件仿真调试。它也是硬件调试的辅助手段。开发系统(ICETEK 5100 USB 或ICETEK 5100 PP):实现硬件仿真调试时与硬件系统的通信,控制和读取硬件系统的状态和数据。评估模块(ICETEK VC5416-A 或ICETEK VC5416-C 等):提供软件运行和调试的平台和用户系统开发的参照。2、Code Composer Studio 2.0 主要完成系统的软件开发和调试。它提供一整套的程序编制、维护、编译、调试环境,能将汇编语言和C 语言程序编译连接生成COFF (公共目标文件)格式的可执行文件,并能将程序下载到目标DSP 上运行调试。3、用户系统的软件部分
5、可以由Code Composer Studio 建立的工程文件进行管理,工程文件一般包含以下几种文件:-源程序文件:C 语言或汇编语言文件(*.ASM 或*.C)-头文件(*.H)-命令文件(*.CMD)-库文件(*.LIB,*.OBJ)四实验步骤1实验准备(1)连接实验设备检查并设置ICETEK-VC5416 实验箱的各电源开关均处于关闭状态;连接实验箱提供的220V 电源线,保证接地良好。使用USB 型仿真器,将提供的USB 电缆的扁平端连接到计算机的USB 接口上,另一端先不做连接。连接仿真器的仿真电缆接头到DSP 系统板上的JTAG 接头。注意仿真器接头上的一个插孔中有一个封针,DSP
6、 系统板上的JTAG 接口的相应插针是被空开的,这样保证了仿真接头的方向不会接反。(2)开启设备接通计算机电源,进入Windows 操作系统。打开实验箱电源开关,实验箱上的电源指示灯亮。ICETEK-VC5416-A 系统板上电源指示灯D1、D2 亮。2启动Code Composer Studio 2.0双击桌面上“CCS 2(C5000)”,启动Code Composer Studio 2.0;可以看到显示出的C54X CodeComposer Studio 窗口;注意:在此之前请打开实验箱中的所有电源开关。3创建工程(1)创建新的工程文件选择菜单“Project”的“New”项;在“Pro
7、ject Creation”对话框中,在“Project”项输入volume ; 单击“ Location ” 项末尾的浏览按钮, 改变目录到C:ICETEK-VC5416-EDULabLab0101-UseCC,单击“OK”;单击“完成”;这时建立的是一个空的工程文件;展开主窗口左侧工程管理窗口中“Projects”下新建立的“volume.pjt”,其中各项均为空。(2)在工程文件中添加程序文件:选择菜单“Project”的“Add Files to Project”项;在“Add Files to Project”对话框中选择文件目录为C:ICETEK-VC5416-EDULabLab1
8、-UseCC,改变文件类型为“C SourceFiles(*.c;*.ccc)”,选择显示出来的文件“volum.c”;重复上述各步骤,添加volume.cmd 文件到volum 工程中;添加C:tiC5400cgtoolslibrts.lib。(3)编译连接工程:选择菜单“Project”的“Rebuild All”项;注意编译过程中CCS 主窗口下部的“Build”,提示窗中显示编译信息,最后将给出错误和警告的统计数。4编辑修改工程中的文件(1)查看工程文件展开CCS 主窗口左侧工程管理窗中的工程各分支,可以看到“volume.pjt”工程中包含“volume.h”、“rts.lib”、“
9、volume.c”和“volume.cmd”文件,其中第一个为程序在编译时根据程序中的“include”语句自动加入的。(2)查看源文件双击工程管理窗中的“volume.c”文件,可以查看程序内容。双击工程管理窗中的“volume.h”文件,打开此文件显示,可以看到其中有主程序中要用到的一些宏定义如“BUF_SIZE”等。“volume.cmd”文件定义程序所放置的位置,此例中描述了5416 的存储器资源,指定了程序和数据在内存中的位置。(3)编辑修改源文件打开“volume.c”,找到“main()”主函数,将语句“input = &inp_buffer0;”最后的分号去掉,这样程序中就出现
10、了一个语法错误;重新编译连接工程,可以发现编译信息窗口出现发现错误的提示;双击红色错误提示,CCS 自动转到程序中出错的地方;将语句修改正确(将语句末尾的分号加上);重新编译;注意,重新编译时修改过的文件被CCS 自动保存。(4)修改工程文件的设置选择“Project”菜单中的“Build Options”项,打开“Build Options for volume.pjt”对话框,选择“Linker”卡片,在“Stack Size”项后输入1024;单击“确定”完成设置;通过此设置,重新编译后,程序中的堆栈的尺寸被设置成1024 个字。5基本调试功能(1) 执行FileLo
11、ad Program , 在随后打开的对话框中选择刚刚建立的C:ICETEK-VC5416-EDULabLab0101-UseCCDebugvolume.out 文件。(2)在项目浏览窗口中,双击volume.c 激活这个文件,移动光标到main()行上,右击鼠标选择Toggle Breakpoint 或按F9 设置断点。(3)选择DebugRun 或按F5 运行程序,程序会自动停在main()函数头上。按F10 执行到write_buffer()函数上。再按F8,程序将转到write_buffer 函数中运行。此时,为了返回主函数,按shift-F7 完成write_bu
12、ffer 函数的执行。再次执行到write_buffer 一行,按F10 执行程序,对比与F8 执行的不同。注意: 在执行C 语言的程序时,为了快速的运行到主函数调试自己的代码,可以使用Debug Go main 命令,上述实验中的使用的是较为繁琐的一种方法。6使用观察窗口(1)执行ViewWatch Window 打开观察窗口。(2)在volume.c 中,选中任意一个变量,右击鼠标,选择“Quick Watch”,CCS 将打开Quick Watch窗口并显示选中的变量。(3)在volume.c 中,选中任意一个变量,右击鼠标,选择“Add to Watch Windo
13、w”,CCS 将把变量添加到观察窗口并显示选中的变量值。(4)在观察窗口中双击变量,则弹出修改变量窗口。此时,可以在这个窗口中改变变量的值。(5)把str 变量加到观察窗口中,点击变量左边的”+”,观察窗口可以展开结构变量,并且显示结构变量的每个元素的值。(6)把str 变量加到观察窗口中;执行程序进入write_buffer 函数,此时num 函数超出了作用范围,可以利用Call Stack 窗口察看在不同作用范围的变量:执行ViewCall Stack 打开堆栈窗口。双击堆栈窗口的main()选项,此时可以察看num 变量的值。7文件输入/输出介绍如何从PC 机上加载数
14、据到目标机上。可用于使用已知的数据流测试算法的正确性。在完成下面的操作以前,先介绍Code Composer Studio 的Probe(探针)断点,这种断点允许用户在指定位置提取/注入数据。Probe 断点可以设置在程序的任何位置,.当程序运行到Probe断点时,与Probe 断点相关的事件将会被触发,当事件结束后,程序会继续执行。在这一节里,Probe 断点触发的事件是:从PC 机的数据文件加载数据到目标系统的缓冲区中。(1)在真实的系统中,read_signals 函数用于读取A/D 模块的数据并放到DSP 缓冲区中。在这里,代替A/D 模块完成这个工作的是Probe 断点。当执行到函数
15、read_signals 时,Probe 断点完成这个工作。在程序行read_signals(int *input)上单击鼠标右键,选择“Toggle breakpoint”,设置软件断点。单击鼠标右键,选择“Toggle Probe Point”,设置Probe 断点。(2)执行FileFile I/O,打开对话框。(3)点击Add File 把sine2.dat 文件加到对话框中。(4)完成设置:在Address 中,输入inp_buffer在Length 中,输入100保证warp around 被选中;(5)关联事件和Probe 断点:点击Add Probe Poi
16、nt 按钮,打开对话框;点击Probe Point 列表中的内容,使之被选中;在Connect 中选择sine2.dat 文件;点击Replace 按钮确认设置;点击”确定”关闭对话框。(6)点击”确定”关闭对话框,此时,已经配置好了Probe 断点和与之关联的事件.进一步的结果在下面实验中显示。8图形功能简介下面我们使用CCS的图形功能检验上一节的结果(1)执行ViewGraphTime/Frequency 打开Graph Property Dialog 窗口。(2)修改属性为如下值并确定:Graph Title: InputSatrt Address
17、: inp_bufferAcquisition Buffer Size: 100Display Data Size 100DSP Type: 16-bit signed integer-在弹出的图形窗口中单击鼠标右键,选择“Clear Display”。(3)按F12 运行程序.观察input 窗口的内容。9创建新的工程,完成基本运算:加、减、乘。五.问题与思考总结CCS 编译调试环境在使用上的特点,联系其它使用过的编译器,找出它们之间相似的功能。进一步掌握其它在实验中没有用到的功能选项和编译、调试技巧实验二:I/O 端口实验一实验目的1了解ICETEK-VC5416-A/USB 板在I/O
18、空间上的扩展;2掌握I/O 端口的控制方法;3学习在C 语言中控制I/O 端口读写的方法。二实验设备计算机,ICETEK-VC5416-EDU 实验箱(或ICETEK 仿真器+ICETEK-VC5416-A 系统板+相关连线及电源)。三实验原理1I/O 空间的扩展及使用:C54x DSP 的I/O 空间被保留用于外部扩展。由于在程序中访问I/O 空间的语句只有in 和out 指令,所以在扩展时一般将带有控制能的寄存器或分离地址访问的存储单元的地址映射到I/O 空间,访问这部分的单元又称I/O 端口访问。例如:可将控制指示灯组的寄存器或锁存器映射到一个I/O 端口地址上;A/D、D/A 等专用芯
19、片控制端和状态寄存器也常映射到I/O 端口上。总之,在I/O 空间中扩展的设备一般重点用于控制,而使用大片连续存储空间的存储器单元一般映射到数据空间。ICETEK-VC5416-A 板将指示灯、DIP 开关、A/D、D/A、异步串行通信接口和WatchDog的控制端等映射在I/O 空间,具体地址见: 0001-0001h:WatchDog 控制寄存器0002-0004h:A/D 转换控制寄存器1000-1004h:D/A 转换控制寄存器2000-2007h:异步串口通信控制寄存器3002-3002h: 板上指示灯控制寄存器3003-3003h: 板上DIP 拨动开关控制寄存器-ICETEK-V
20、C5416-EDU 实验箱上控制模块也使用I/O 端口控制大部分设备:8001-8001h: 读-键盘扫描值,写-液晶控制寄存器8002-8002h: 液晶控制寄存器8003-8004h: 液晶显示数据寄存器8005-8005h: 发光二极管显示阵列控制寄存器8006-9FFFh: 保留在程序中,访问I/O 端口的语句较为简单。对于汇编语言程序,可用PORTR 和PORTW 指令,例如,从端口0008h 读入一个字到变量x 的指令为portr 8,x,而向端口000Ch 输出x 变量的值的指令为portw #0Ch,x;在C 语言中访问I/O 端口则必须首先声明I/O 端口的类型,然后才能访问
21、,以下语句仍完成上面汇编语言所完成的功能:/* 端口定义 */ioport unsigned int port0008;ioport unsigned int port000c;/* 在程序中使用: */x=port0008;port000c=(unsigned int)x;2. 操作相关硬件原理图3硬件原理图四实验步骤1. 实验准备(1) 连接设备:关闭计算机和实验箱电源。如使用PP 型仿真器则用附带的并口连线连接计算机并口和仿真器相应接口;检查ICETEK-VC5416-A 板上DIP 开关MP/MC 的位置,应设置在“OFF”位置(靠近复位按钮),即设置DSP 工作在MP 方式。关闭实验
22、箱上的三个开关。(2) 开启设备:计算机电源打开实验箱全部电源开关,包括两个信号源及ctr 控制模块的电源。注意:ICETEK-VC5416-A 板上指示灯D1 和D2 亮。如使用用USB 型仿真器,用附带的USB 电缆连接计算机和仿真器相应接口,注意仿真器上两个指示灯均亮。 (3) 设置Code Composer Studio 2.0 为Emulator 方式:参见“Code Composer Studio 入门实验”之四.3。(4) 启动Code Composer Studio双击桌面上“CCS 2(C5000)”图标,启动Code Composer Studio 2.0。2打开工程文件打
23、开菜单“Project”的“Open”项;选择C:ICETEK-VC5416-EDULabLab0301-led 目录中led.pjt”。3浏览程序在项目浏览器中,双击led.c,激活led.c 文件,浏览该文件的内容,理解各语句作用。4编译工程打开“Project”选单,选择“Rebuild All”选项,Code Composer Studio 重新编译和链接这个工程项目,整个的处理过程在屏幕下方的“Message”窗口中返回信息。5下载程序打开“File”选单,选择“Load Program”选项,在“Load Program”对话框中,选中C:ICETEK-VC5416-EDULabL
24、ab0301-ledDebug 目录下的led.out 文件;此时,CodeComposer Studio 将把这个目标文件装载到ICETEK-VC5416-A 板上,同时,Code ComposerStudio 打开反汇编窗口显示被加载程序的汇编指令码。6运行程序观察结果打开“Debug”菜单,选择“Run”选项运行程序(或按F5 键),设置ICETEK-VC5416-A 板上的DIP 开关U20 就可以定制指示灯是否为亮。7结束运行,关闭工程(1)打开“Debug”选单,选择“Halt”选项或按Shift-F5 终止实验。(2)选择菜单“Project”、“Close”关闭工程1。8打开C
25、:ICETEK-VC5416-EDULabLab0302-dip,运行程序观察结果。五实验结果 实验的最后现象:可以看到指示灯依次闪烁。六问题与思考I/O 端口操作与内存读写操作的效果一样吗?各自的优势是什么?实验三:DSP的定时器中断实验一实验目的1通过实验熟悉5416 的定时器。2掌握5416 定时器的控制方法。3掌握5416 的中断结构合对中断的处理流程。4学会C 语言中断程序设计,以及运用中断程序控制程序流程。5学习用C 语言同汇编语言混合编程的技术。二实验设备计算机,ICETEK-VC5416-EDU 实验箱。三实验原理1通用定时器介绍及其控制方法片内定时器是一个软件可编程定时器,可
26、以用来产生周期的中断信号。定时器主要由3 个寄存器所组成:定时器寄存器(TIM)、定时器周期寄存器(PRD)和定时器控制寄存器(TCR)。这3 个寄存器都有映象寄存器,它们在数据存储器中的地址分别为24H、25H 和26H。TIM 是一个递减计数器;PRD 中存放计数值;TCR 中有定时器的控制位和状态位:1512 保留11-10 soft free96 PSC 定时器预定标计数器5 TRB 定时器重新加载位,用来复位片内定时器4 TSS 定时器停止状态位,用于停止或启动定时器30 TDDR 定时器分频系数在正常工作情况下,当TIM 减到0 后,PRD 中的时间常数自动地加载到TIM。复位后,
27、定时器控制寄存器(TCR)的停止状态位TSS=0,定时器启动工作,时钟信号CLKOUT加到预定标计数器PSC。PSC 也是一个递减计数器,每当复位或其减到0 后,自动地将定时器分频系数TDDR 加载到PSC。PSC 在CLKOUT 作用下,作减1 计数。当PSC 减到0,产生一个借位信号,令TIM 作减1 计数。TIM 减到0 后,产生定时器中断信号TINT,传送到CPU和定时器输出引脚TOUT。定时器中断的周期为:CLKOUT(TDDR+1)(PRD+1)其中,CLKOUT 位时钟周期,TDDR 和PRD 分别为定时器的分频系数和时间常数。-对定时器初始化的步骤如下:先将TCR 中的TSS
28、位置1,关闭定时器。加载PRD。重新加载TCR(使TDDR 初始化;令TSS 位=0,以接通CLKOUT;TRB 位值1,以使TIM 减到0 后重新加载定时器时间常数),启动定时器。-对中断的处理:设置INTM=1将IFR 中的TINT 位置1,清除尚未处理完的定时器中断。将IMR 中的TINT 位置1,开放定时器中断。将ST1 中的INTM 位请0,开放所有可屏蔽中断。2TMS320VC5416 中断结构INT0-3 为外部引脚产生的中断,TINT 为定时器中断,RINT0-2 和XINT0-2 对应McBSP 口的接收和发送中断,HINT 对应HPI 接口中断,另外还有DMA 中断。3中断
29、响应过程外设事件要引起CPU 中断,必须保证:IMR 相应位被使能(置1),ST1 寄存器中的INTM使能(置0)。当CPU 响应中断时,PC 指针指向中断向量表中对应中断的地址,进入中断服务子程序。中断向量表是DSP 存放中断服务程序的一段内存区域,大小为80H。在中断向量表中,每一个中断占用4 个字的空间,一般情况是将一条跳转或延时跳转指令存放于此。中断向量表的位置是可以改变的,修改PMST 寄存器中的中断向量表基地址可以实现这一点。4中断程序设计-程序中应包含中断向量表,5416 默认向量表从程序区FF80 地址开始存放。-向量表中每项为4 个字,存放一个跳转指令,跳转指令中的地址为相应
30、服务程序入口地址;第一个向量表的首项为复位向量,即CPU 复位操作完成后自动进入执行的程序入口;-程序中包含相应的中断服务程序,应将其入口地址加入相应中断向量表中。5实验程序分析本实验设计的程序是在上一个实验基础上修改得来,由于上一实验控制指示灯闪烁的延时控制是用循环计算方法得到的,延时不精确也不均匀,采用中断方式可以实现指示灯的定时闪烁,时间更加准确。对于定时器的周期寄存器为计数f423H,分频系数定为15,即 个CPU 时钟计数一次,由于DSP 工作在8MHz 主频(ICETEK-VC5416-A 板上DIP 开关U2 的CLKMD1-3 均为OFF 时),正好是125ms 中断一次,所以
31、在中断服务程序中计算中断4 次时改变指示灯状态,实现指示灯亮0.5 秒再灭0.5 秒,即每秒闪烁1 次。实验程序的工程中包含了两种源代码,主程序采用C 语言编制利于控制,中断向量表在vector.asm 汇编语言文件中,利于直观地控制存储区分配。在工程中只需将它们添加进来即可,编译系统会自动识别分别处理完成整合工作。实验程序的C 语言主程序中包含了内嵌汇编语句,提供一种在需要更直接控制DSP 状态的方法,同样的方法也能提高C 语言部分程序的计算效率。四实验步骤1实验准备(1)连接设备关闭计算机和实验箱电源;如使用PP 型仿真器则用附带的并口连线连接计算机并口和仿真器相应接口;检查ICETEK-
32、VC5416-A 板上DIP 开关MP/MC 的位置,应设置在“OFF”位置(靠近复位按钮),即设置DSP 工作在MP 方式。关闭实验箱上的三个开关。(2)开启设备:打开计算机电源打开实验箱全部电源开关,包括两个信号源及ctr 控制模块的电源。注意:ICETEK-VC5416-A 板上指示灯D1 和D2 亮。如使用USB 型仿真器,用附带的USB 电缆连接计算机和仿真器相应接口,注意仿真器上两个指示灯均亮。(3)设置Code Composer Studio 为Emulator 方式。(4)启动Code Composer Studio双击桌面上“CCS 2(C5000)”图标,启动Code Co
33、mposer 2.0。2打开工程文件,浏览程序打开菜单“Project”的“Open”项;选择C:ICETEK-VC5416-EDULabLab0303-Timer 目录中的“Timer.pjt”。在项目浏览器中,双击timer.c,激活timer.c 文件,浏览该文件的内容,理解各语句作用。打开timer.cmd,浏览并理解各语句作用,对照C 源程序学习中断向量表的写法。3编译工程单击“Project”菜单,“Rebuild all”项,编译工程中的文件,生成Timer.out 文件。4下载程序单击“File”菜单,“Load program”项,选择C:ICETEK-VC5416-EDUL
34、abLab0303-TimerDebug目录中的Timer.out 文件,通过仿真器将其下载到5416 DSP 上。5运行程序观察结果.单击“Debug”菜单,“Run”项,运行程序。.观察实验箱控制模块上指示灯J5 闪烁情况。.单击“Debug”菜单,“Halt”项,停止程序运行。6修改程序重新运行适当改变程序中的延时参数,重复步骤3-5,使指示灯约1 秒闪烁两次、三次、四次。7将主程序改成汇编语言程序,重复上述步骤。五实验结果-指示灯在定时器的定时中断中按照设计定时闪烁。实验四:模数转换实验一实验目的1掌握A/D 转换的基本过程;2熟悉ICETEK-VC5416-A 板上使用ADS7864
35、 技术指标和操作方法。二实验设备计算机,ICETEK-VC5416-EDU 实验箱(或ICETEK 仿真器+ICETEK-VC5416-A 系统板+信号源+示波器+相关连线及电源)。三实验原理1ADS7864 模数转换模块特性ADS7864 是TI 公司的一种500K、12 位、6 通道模数转换芯片。每通道信号可采用插分方式输入。ICETEK-VC5416-A 板上使用的方式是非插分方式,即所有IN-端均与参考地相接,采用输入信号的范围为0+5V。由于ADS7864 芯片为5V 器件,而5416DSP 为3.3V 器件,所以在进行硬件连接设计时采用电平转换芯片对信号线和数据线进行隔离。ICET
36、EK-VC5416-A 板上将ADS7864 的控制映射到I/O 空间,使用I/O 空间地址2H 传送数据,3H 进行通道选择,4H 发送转换信号。由于ADS7864 的6 个通道转换是分成3 路完成的(A、B、C),在每个转换周期可选择启动2、4、6 个转换通道,选择的方法是在3H 地址的相应位上置低电平。3H 地址输出的最低位(第0 位)控制A 路,次低位(第1 位)控制B 路,第2 位控制C 路,所以如果需要采集A0 和A1 两路信号则可在3H 地址上输出6(110b),B0 和B1 输出5(101b),C0 和C1 输出3(011b)。以下是控制字同相应选择通道的列表:06H A0,A
37、1 04H A0,A1,B0,B1 00H A0,A1,B0,B1,C0,C105H B0,B1 01H B0,B1,C0,C103H C0,C1 02H A0,A1,C0,C1如果只需要进行单通道的转换,可以只进行1 路输入而保存相应通道的数据即可。2模数转换工作过程模数转换模块接到启动转换信号后,按照设置进行相应通道的数据采样转换。经过一个采样时间的延迟后,将采样结果放入相应通道的FIFO 保存。转换结束,设置标志。等待下一个启动信号。3模数转换的程序控制模数转换相对于计算机来说是一个较为缓慢的过程。一般采用中断方式启动转换或保存结果,这样在CPU 忙于其他工作时可以少占用处理时间。设计转
38、换程序应首先考虑处理过程如何与模数转换的时间相匹配,根据实际需要选择适当的触发转换的手段,也要能及时地保存结果。由于ADS7864 芯片的A/D 转换精度是12 位的,转换结果的最高位表示转换值是否有效(1有效),第14-12 位表示转换的通道号,低12 位为转换数值,所以在保留时应注意取出结果的低12 位,再根据高4 位进行相应保存。4源程序及注释本实验程序采用中断程序设计,定时器设置采样时间为15.625KHz(64 微秒),采样通道设置为A0 和A1(ICETEK-VC5416-EDU 实验箱上ADCIN2 和ADCIN3)。#defineTIM *(int *)0x24#defineP
39、RD *(int *)0x25#defineTCR *(int *)0x26#defineIMR *(int *)0x0#defineIFR *(int *)0x1#definePMST *(int *)0x1dioport unsigned int port3,port4,port2;#define AD_DATA port2#define AD_SEL port3#define AD_HOLD port4void interrupt time(void);int *ptr,k;unsigned int uWork;main()int i,j;asm( ssbx INTM); / 关闭可屏蔽
40、中断k=0;ptr=(int *)0x3000; / 转换数据的保存区,从数据区3000H 开始/ 3000H-3200H 保存第1 通道(AIN1)的转换结果/ 3200H-3400H 保存第2 通道(AIN2)的转换结果for(i=0;i=0x200 )k=0; / 软中断位置AD_HOLD =0; / 送转换信号for ( uWork=0;uWork10;uWork+ );AD_HOLD=1;四实验步骤1实验准备(1)连接设备:关闭计算机和实验箱电源。如使用PP 型仿真器则用附带的并口连线连接计算机并口和仿真器相应接口。检查ICETEK-VC5416-A 板上拨动开关MP/MC 的位置,
41、应设置在位置(靠近复位按钮一侧),即设置DSP 工作在MP 方式。用实验箱附带的信号连接线(两边均为单声道耳机插头)连接第一信号源的波形输出端到“A/D 输入”的ADCIN2 插座;用信号连线连接第二信号源的输出端到“A/D 输入”的ADCIN3 插座。 关闭实验箱上三个开关。(2)开启设备:打开计算机电源。打开实验箱全部电源开关,包括两个信号源及ctr 控制模块的电源。如使用USB 型仿真器用附带的USB 电缆连接计算机和仿真器相应接口,注意仿真器上两个指示灯均亮。(3)设置Code Composer Studio 为Emulator 方式参见“Code Composer Studio 入门
42、实验”(4)启动Code Composer Studio双击桌面上“CCS 2(C5000)”图标,启动Code Composer Studio 2.0。2打开工程并浏览程序打开菜单“Project”的“Open”项;选择C:ICETEK-VC5416-EDULabLab0305-ADC 目录中的“adc.pjt”。在项目浏览器中,双击adc.c,激活adc.c 文件,浏览该文件的内容,理解各语句作用。打开ad.cmd,浏览并理解各语句作用。3编译工程单击“Project”菜单,“Rebuild All”项,编译工程中的文件,生成adc.out 文件。4下载程序单击“File”菜单,“Load
43、 program”项,选择C:ICETEK-VC5416-EDULabLab0305-ADCDebug目录中的adc.out 文件,通过仿真器将其下载到5416 DSP 上。5打开观察窗口-选择菜单“View”、“Graph”、“Time/Frequency”做如下设置,然后单击“OK”按钮。在弹出的图形窗口中单击鼠标右键,选择“Clear Display”。在有“软中断位置”注释的语句上加上软件跟踪断点(Toggle Breakpoint),即鼠标左键单击该语句后按F9 键。通过设置,我们打开了图形窗口观察两个通道模数转换的结果。6设置信号源由于模数输入信号未经任何转换就进入DSP,所以必须
44、保证输入的模拟信号的幅度在0+5V 之间。实验箱上信号源输出为0+3.3V。但如果使用外接信号源,则必须用示波器检测信号范围,保证最小值0V 最大值+5V,否则容易损坏DSP 芯片的模数采集模块。首先设置一号信号源(上部)开关为“关”。设置实验箱上一号信号源的“频率选择”,在“100Hz1KHz”档,“波形选择”在“三角波”档,“频率微调”选择较大位置靠近最大值,“幅值微调”选择最大。开启一号信号源开关,一号信号源电源指示灯亮。首先设置二号信号源(下部)开关为“关”。设置实验箱上二号信号源的“频率选择”在“100Hz1KHz”档,“波形选择”在“正弦波”档,“频率微调”选择适中位置,“幅值微调”选择最大。开启二号信号源开关,二号信号源电源指示灯亮。7运行程序观察结果单击“Debug”菜单,“Run”项,运行程序。当程序停在所设置的软件断点上时,观察“AIN1、AIN2”窗口中的图形显示。用示波器探头测试相应测试点的波形,观察是否与屏幕上得到的波形一致。适当改变信号源的四个调节旋钮的位置,按F5 健再次运行到断点位置,观察图形窗口中的显示。注意:输入信号的频率不能大于7.5KHz,否则会引起混叠失真,而无法观察到波形,如果有兴趣,可以试着做一下,观察采样失真后的图形。8停止运行结束实验五实验结果-用实验中的设置,我们可以看到如下结果实验现象分析:由