DSP第四次实验报告精.docx
《DSP第四次实验报告精.docx》由会员分享,可在线阅读,更多相关《DSP第四次实验报告精.docx(8页珍藏版)》请在冰豆网上搜索。
![DSP第四次实验报告精.docx](https://file1.bdocx.com/fileroot1/2022-10/13/7584443f-aa87-484e-b100-82d50707a381/7584443f-aa87-484e-b100-82d50707a3811.gif)
DSP第四次实验报告精
DSP第四次实验报告
实验七、CODEC(模数/数模转换)
实验八、UART串口通信实验
学院:
信息工程学院
班级:
08级电子信息工程2班
姓名:
肖秀
学号:
2008550503
指导老师:
姚志强
完成日期:
2011.11.26
实验七、CODEC(模数/数模转换)
一、实验目的
1.熟悉DSK板的结构和设置(DSK板注意事项在第2页);
2.掌握利用CODEC进行AD/DA转换;
3.熟悉McBSP,DMA的使用;
4.掌握C和汇编混合编程封装具体实现。
二、实验设备
1.集成开发环境CCS
2.5402DSK实验板
3.实验代码:
a.混合编程:
codec_c.h(.h、.h54均由程序自动加载,可不加,后同,dsp_cnst.h54,codec.s54,codec_c.c,rts.lib和codec_c.cmd,c5402_dsk.gel(同上用来做gel初始设置,c5402_dsk.gel与c5402.gel稍有区别,注意比较其中的异同)。
b.汇编(时间多的同学做:
codec_cnst.h54,dsp_cnst.h54,macro.h54,codec_init.s54,dsp_init.s54,main.s54和codec.cmd,c5402_dsk.gel(说明同前。
三、实验内容及步骤
1.阅读理解McBSP,CODEC和DMA的相关文档
2.阅读和理解相关实验代码
3.本实验由于用到DSK板,环境设置与前不同,要特别注意。
打开CCS前,用并口电缆将TMS320VC5402DSK与PC机相连,出现发现硬件提示,安装驱动(驱动程序在D:
\DSP\driver5000。
一般会要求装3次,2次装USB,driver5000\USBDevice目录,如无则可跳过;1次装driver,即driver5000中setup.exe,注意driver驱动的安装路径要求与CCS的安装路径一致,故要先找出CCS的安装目录)。
4.接通DSK板电源,配置工作环境:
双击打开CodeComposer(Studio)配置程序,如图:
点击“Clear”按钮,清除原有配置。
然后,在列表框“AvailableConfigurations”中加亮“ICETEK-5100USBEmulator”选项。
如图中圆圈所示:
点击对话框中的“Import”按钮,然后点击“SaveandQuit”按钮,退出并确认同时打开CCS主程序。
5.建立项目,添加代码,编译并连接,各事项如下:
a混合编程中改设置:
Buildoption子菜单linker中Basic项AutoinitModel改为Load-timeInitialization或Run-timeInitialization。
用NoInitialization编译不过,有1Errors,1Warnings。
为:
error:
symbolreferencingerrors
undefinedfirstreferenced
symbolinfile
pinitD:
\ProgramFiles\TI\myprojects\..\lab56\51_codec\C\rts.lib
cinitD:
\ProgramFiles\TI\myprojects\..\lab56\51_codec\C\rts.lib
warning:
"codec_c.c",line63:
warning:
statementisunreachable
修改后只有1Warnings,同上,但是可以做出实验结果。
b汇编编程中:
Buildoption子菜单linker中Basic项AutoinitModel则可用NoInitialization,用load-timeInitialization或Run-timeInitialization将有1Warnings,为:
warning:
entrypointotherthan_c_int00specified,都可做出实验结果。
6.Build得到.out程序,然后加载程序并调试,
7.输入声音信号或自己的语音并听取DA端输出。
四、实验结果和提示
1.DSK实验板上有两块CODEC(编译码器)芯片,一块与DAA口相联,另一块与音频模块相联。
5402有两个McBSP口,在DSK板上的缺省设置为McBSP0的信号源为DAA,McBSP1的信号源为音频模块。
如果想更改缺省设置必须写相应的CPLD寄存器,具体情况请参考《数字信号处理器开发实践》4.2.3节。
本实验中使用了音频模块作为输入输出端口,因此实验中使用的是相应的CODEC及McBSP1口。
2.使用CODEC必须设置相应的控制寄存器,实验使用的TLC320AD50C共有7个寄存器,其中4个为控制寄存器,要写这些控制寄存器必须将CODEC切换到第二串行通信方式,切换方式有两种:
硬件方式和软件方式。
本实验采用了硬件方式,这样必须将FC在FS的上跳沿前拉高,然后CODEC会在128个SCLK后切换到第二串行通信,然后就可以向CODEC发送控制字。
具体可参阅《数字信号处理器开发实践》5.1.2及5.1.3节。
3.要设置CODEC必须通过McBSP1口发送数据,为使McBSP1口正常工作要设置相应的控制寄存器,McBSP1的15个控制寄存器采用同址访问的方式进行访问,将要访问的寄存器的子地址写入子地址寄存器SPSA1后再访问同一个数据寄存器即可。
具体控制寄存器的设置请参阅《数字信号处理系统的应用和设计》5.4.2节。
要注意的是由于板上McBSP1口与CODEC相联时FS,CLK信号均由CODEC驱动,所以相应的管脚必须设置为输入脚并置好对应的标志位,可以参考实验代码中的寄存器参数注释。
4.音频信号经CODEC采集后通过McBSP再由DMA通道送往数据区缓冲区,这样可以在不影响CPU的情况下完成数据的传输。
5402的DMA共有6个通道,每个通道有5个独立的控制寄存器,此外还共享10个全局寄存器。
由于全局寄存器中有四个重载寄存器,可以对1个通道实现自动初始化,这样可以很方便的对输入(或输出)信号进行连续传输。
由于输入输出必须占用两个DMA通道,这样就必须对另一个通道手动重载,这些在中断中完成。
由于5402中断资源有限,DMA中断是与其他外设中断复用的,这个通过DMPREC寄存器中的中断复用位进行设置。
对以上这40个寄存器的访问也采用与McBSP相同的同址访问方式。
具体设置请参阅《数字信号处理系统的应用和设计》5.5.2节和实验代码中的寄存器参数注释。
5.要实现数据连续的数据采集和发送必须在数据缓冲区开辟两块区域交替使用,为了辨别使用哪块区域要设置一个相应标志位,这就是常用的乒乓法。
在DMA中断处理程序中要根据此标志位更新缓冲区地址。
6.数据输入的DMA通道中断后必须对输入数据进行处理,然后送入输出缓冲区,这就要在中断中设置一个中断标志位,然后在主程序中查询此标志位判断是否要进行数据处理。
本实验中没有对数据进行任何处理直接送入输出缓冲区,但是可以很方便地加入各种信号处理代码。
7.将汇编程序分模块封装成C函数后可以使整个流程简洁明了,一目了然。
同时留下的接口可以让用户很方便地对CODEC进行设置并加入自己想要采用的信号处理代码。
在混合编程中要注意的是函数名和变量在C和汇编中的命名规则;C语言接口的汇编函数可以自由使用的寄存器和使用前必须先保存的寄存器;C语言中的状态标志位缺省值以及C语言和汇编的相互调用通过堆栈来进行参数和返回值的传递,同时通过堆栈可以方便的实现局部数据的使用。
具体情况可以参阅《数字信号处理系统的应用和设计》7.1节。
五、实验思考题:
1、整个语言程序是如何实现的?
答:
整个语言程序由主程序和子程序构成,主函数中由亮灯程序、延时程序、初始化程序、CODEC程序等,子函数中是各函数的定义,还有中断函数。
音频信号经CODEC采集后通过McBSP再由DMA通道送往数据区缓冲区,CODEC中的A/D出来的语音采样数据由串行口ISR(中断服务控制通过DSS_rxPipe
触发软件中断,在这里语音采样数据被编码存储,然后再被解码通过DSS_txPipe发送至串行口ISR,经由CODEC中的D/A可以播放出来。
2、语言程序由哪个模块组成?
答:
语言程序由语音模块组成,进行语音信号的处理。
3、如果要对语音进行处理的话,可以在哪个地方添加处理程序?
答:
在_enable_codec:
函数中可以添加处理程序,如图所示:
4、比较C5402.gel和CS402_dsk.gel的区别?
答:
在C5402.gel文件中;
在CS402_dsk.gel文件中;
由上两图可知:
两个gel文件中SWWSR中地址不同,还有在在CS402_dsk.gel文件中添加了语句SWWSR=SWWSR_VAL。
六:
实验心得
这次实验是我们第一次接触到DSP硬件设施,对此感到很好奇。
主要目的在于熟悉DSK板的结构和设置(DSK板注意事项在第2页);掌握利用CODEC进行AD/DA转换;熟悉McBSP,DMA的使用;掌握C和汇编混合编程封装具体实现。
前三次实验我们一直都在熟悉DSP的软件开发工具CCS和混合编程的学习。
这个实验不算难,在助教的帮助下,很快完成了实验,熟悉了CODEC(模数/数模)转换模块以及相应的语言程序编写,也第一次接触到中断程序,感觉学到很多,再接再厉。
实验八、UART串口通信实验
一、实验目的
1.了解RS232通信接口的基本原理;
2.熟悉通信接口芯片(TL16C550C)在DSPI/O空间寄存器的地址映射及工作原理;
3.了解异步通信中串口模式选择、设置数据传输格式、设置波特率、建立连接、传输数据和断开连接等功能。
二、实验设备
1.集成开发环境CCS
2.实验开发板TMS320VC5402DSK、RS232接口电缆线及附件
3.程序“串口调试程序v2.2.exe”
三、实验内容及步骤
实验操作流程参照前面实验。
1在汇编环境调试Uart:
(实现字符或文件的发送和回发功能
a.实验代码main.s54、uartasm.cmd和uart_init.s54、dsp_init.s54以及uartasm.h54,c5402_dsk.gel(说明同前。
b.串口调试程序“串口调试程序v2.2.exe”,汇编调试中Buildoption设置情况与CODEC实验中的汇编调试设置及出错情况相同。
c.程序文件介绍:
1)“uart.h54”定义了一些寄存器的地址以及函数类型。
2)“dsp_init.s54”与dsp工作有关的寄存器ST1、PMST、IMR、IFR和SWWSR,并且清除INTM位以及设定时钟模式。
3)“uart_init.s54”先检测UART模块是否工作正常,然后设定UART模块的寄存器,如CNTL1、CNTL2、LCR、MSB&LSB(设定波特率)、FCR、IER等。
4)“main.s54”主程序查看标志位,检测是否UART存在有效接收数据。
若有,则执行一定的处理,包括亮LED以及将接收的数据从UART回发。
d.执行程序时,只要发送数据时,可在串口调试程序的接收窗口立即看到回发的数据。
e.程序中UART工作参数设置如下:
1)波特率9600(或更低、无数据校验、字符长度8比特、停止位1、2均可;
2接收区自动清空不选、十六进制显示可选可不选;发送区不能选十六进制发送,可发送字符和文件两种方式;
3)I