版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 - 75 -前言随着数字电子技术不断发展,人们对数字信号处理的要求也越来越高,传统意义上的微处理器已不能满足现代数字电子技术发展的要求,而数字信号处理器(DSP)在近20多年的发展与普及后,应用领域几乎涵盖了所有的行业:通信、信息处理、自动控制、雷达、航空航天、医疗、日常消费品等。目前大多数学校都是理论结合实验进行教学,围绕该课程所开的实验课程皆为阶段性理论的验证实验,实验设备也仅是为验证某些算法和理论所使用,实验的项目相对来说比较单一和固定,实验设备的利用效率低下,其实验设备缺少研发和形成一个数字信号处理产品的能力。目前,我校的通信工程专业开设了数字信号处理、语音信号处理、数字图像处理等信
2、号处理相关课程,但尚缺乏一个动手实践和灵活应用的实验平台。数字信号处理器由于其优异的运算能力和独特的硬件结构,是一个理想的选择。结合当前的情况,本实验讲义从培养应用型人才的角度出发,并充分借鉴各大高校的先进试验教学管理技术,开发并设计了相应的DSP实验项目。本实验讲义将实验分为三个模块,即基础实验、应用实验、扩展实验,以满足不同能力和需求的学生的需要。本实验讲义在DSP原理及应用实验教学改革课题支持下编写完成。不足之处,请广大师生指正。目 录基础实验1 CCS软件的使用5基础实验2: 简单应用程序的调试17应用实验1: DSP数据存取实验21应用实验2: GPIO控制实验24应用程序3: 定时
3、器控制实验27应用实验4: DMA读写实验31应用实验5: UART控制实验36应用实验6: A/D采样实验41应用实验7: 有限冲击响应滤波器(FIR)算法实验44应用实验8: 快速傅立叶变换(FFT)算法实验49扩展实验1: 语音回声实验55扩展实验2: 语音和声实验57扩展实验3: 交通灯实验60附录A64附录B73基础实验1 CCS软件的使用1. 实验目的:1. 熟悉CCS集成开发环境,掌握工程的生成方法;2. 熟悉SEED-DEC5502实验环境;3. 掌握CCS集成开发环境的调试方法。2. 实验内容:1. DSP源文件的建立;2. DSP程序工程文件的建立; 3. 学习使用CCS集
4、成开发工具的调试工具。3. 实验背景知识:3.1 CCS简介CCS提供了配置、建立、调试、跟踪和分析程序的工具,它便于实时、嵌入式信号处理程序的编制和测试,它能够加速开发进程,提高工作效率。CCS提供了基本的代码生成工具,它们具有一系列的调试、分析能力。CCS支持如下所示的开发周期的所有阶段设计概念性规划编程与编译创建工程文件编写源程序编写配置文件调试语法检测逻辑检测分析实时调试统计跟踪CCS构成及接口见下图CCS窗口介绍:3.2 使用CCS常遇见文件简介:1. program.c:C程序源文件2. program.asm:汇编程序源文件3. filename.h: C程序的头文件,包含DSP
5、/BIOS API模块的头文件4. filename.lib: 库文件5. project.cmd: 连接命令文件6. program.obj: 由源文件编译或汇编而得的目标文件7. program.out: 经完整的编译、汇编以及连接后生成可执行文件8. program.map:经完整的编译、汇编以及连接后生成空间分配文件9. project.wks: 存储环境设置信息的工作区文件 保存配置文件时将产生下列文件:1. programcfg.cmd:连接器命令文件2. programcfg.h54:汇编头文件3. programcfg.s54:汇编源文件(一) CMD文件简介cmd文件用于DS
6、P代码的定位。由3部分组成: 1 输入输出定义:.obj文件:链接器要链接的目标文件。 .lib文件:链接器要链接的库文件。.map文件:链接器生成的交叉索引文件。.out文件:链接器生成的可执行代码;链接器选项 。2 MEMORY命令:描述系统实际的硬件资源。 3 SECTIONS命令:描述"段"如何定位。下面例子则可说明其基本格式: -o sample.out -m sample.map -stack 100 sample.obj meminit.obj -l rts.lib MEMORY PAGE 0: VECT: origin = 0xff
7、80, length 0x80 PAGE 0: PROG: origin = 0x2000, length 0x400 PAGE 1: DATA: origin = 0x800, length 0x400 SECTIONS .vectors : >PROG PAGE 0 .text : >PROG PAGE 0 .data : >PROG PAGE 0 .cinit : >PROG PAGE 0 .bss :
8、>DATA PAGE 1 下面介绍一下CMD文件中常用的程序段名与含义1. .cinit 存放C程序中的变量初值和常量;2. .const 存放C程序中的字符常量、浮点常量和用const声明的常量; 3. .text 存放C程序的代码; 4. .bss 为C程序中的全局和静态变量保留存储空间; 5. .far 为C程序中用far声明的全局和静态变量保留空间; 6. .stack 为C程序系统堆栈保留存储空间,用于保存返回地址、函数间的参 数传递、存储局部变量和保存中间结果; .sysmem 用于C程序中malloc、calloc和realloc函数动态分配存储空间。(二) vecs.as
9、m文件简介vecs.asm是DSP的中断向量表文件。中断服务程序的地址(中断向量)要装载到存储器的合适区域。一般中断向量表文件是采用汇编语言编写;在文件中一般汇编指令.sect来生成一个表。这个表包含中断向量的地址和跳转指令。因为中断读物的标志符在汇编语言模块外部使用,所以标志符用.ref 或.global。(三) GEL文件简介GEL文件的功能同cmd文件的功能基本相同,用于初始化DSP。但它的功能比cmd文件的功能有所增强,GEL在CCS下有一个菜单,可以根据DSP的对象不同,设置不同的初始化程序。以下面的例子介绍一下GEL文件的构成。例:#define DEC5502_CTL 0x600
10、00 /定义DEC5502_CTL寄存器#define DEC5502_INT 0x60001 /定义DEC5502_ INT 寄存器#define DEC5502_STA 0x60002 /定义DEC5502_ STA寄存器StartUp( ) ; 开始函数 GEL_MapReset(); ; 存储空间复位 GEL_MapAdd(0x0000,0,0x7fff,1,1); 定义程序空间00007fff 可读写 GEL_MapAdd(0x8000,0,0x7000,1,1); 定义程序空间8000f000可读写 GEL_MapAdd(0x0000,1,0x1000,1,1); 定义数据空间00
11、00f000可读写 GEL_MapAdd(0xffff,2,1,1,1); 定义I/O 空间0xffff可读写 GEL_MapOn(); 存储空间打开 GEL_MemoryFill(0xffff,2,1,0x40); 在I/O空间添入数值40h 3.3 CCS常用指令简介1. 设置断点。将光标放置在需要设置断点的程序行前,选择DebugBreakpoints,即完成可一个断点的设置。2. CCS提供3种方法复位目标板1) Reset DSP:Debug Reset D,初始化所有的寄存器内容并暂停运行中的程序。使用此命令后,要重新装载.out 文件后,再执行程序。2) Restart:Debu
12、g Restart ,将PC值恢复到当前载入程序的入口地址。3) Go main:Debug Go main ,将程序运行到主程序的入口处暂停。3. CCS提供4种执行操作1) 执行执行:Debug Run ,程序运行直到遇到断点为止。2) 暂停执行:Debug Halt ,程序停止运行。3) 动画执行:Debug Animate,用户反复运行程序,直到遇到断点为止。4) 自由执行:Debug Run Free ,禁止所有断点运行程序。4. CCS提供4种单步执行操作1) 单步进入:快捷键F8,Debug step into ,当调试语句不是基本的汇编指令时,此操作进入语句内部。2) 单步执行
13、:Debug step Over ,此命令将函数或子函数当作一条语句执行,不进入内部调试。3) 单步跳出:Debug step Out ,此命令作用为从子程序中跳出4) 执行到光标处:快捷键crtl+F10,Debug Run to Cursor,此命令作用为将程序运行到光标处。5. 内存、寄存器与变量的操作1) 查看变量:使用view Watch Window命令2) 查看寄存器:使用view Registers CPU Registers 命令3) 查看内存:使用view memory命令6. Graph的设置即图形显示1) 选择View Graph Time/Frequency。2) 在
14、弹出的Graph Property Dialog对话窗中, 将 Graph Title,Start Address,Acquisition Buffer Size,Display Data Size,DSP Data Type等的属性可改变为如下图所示(也可根据具体需要设置属性)。向下滚动右侧的滚动条或调整 dialog 框的大小可看到所有的属性。示例(A) 将起始地址为0x2c28的数组进行图形显示3) 点击OK,将出现所设的图形窗口。如:在滤波实验中,用以上方法设定的图形窗口,在运行滤波程序后,最终的显示结果如下图所示4) 可以在图形上单击右键,选择“Float In Main Table
15、”,这时图形将浮现在主窗口中,以便观察。4. 实验准备:1. 将DSP仿真器与计算机连接好;2. 将DSP仿真器的JTAG插头与SEED-DEC5502单元的J1相连接;3. 启动计算机,当计算机启动后,打开SEED-DTK5502的电源。观察SEED-DTK_MBoard单元的5V,3.3V,15V,15V的电源指示灯灯以及SEED-DEC5502的电源指示灯D2、D4是否均亮;若有不亮的,请断开电源,检查电源。下面按照原文件、工程文件以及编译条件的设置来分别介绍一下CCS的使用。5. 实验步骤:5.1 创建源文件1. 双击 图标进入CCS环境。2. 打开CCS 选择File New Sou
16、rce File 命令3. 编写源代码并保存4. 保存源程序名为math.c,选择File Save5. 创建其他源程序(如.cmd)可重复上述步骤。5.2 创建工程文件1. 打开CCS,点击Project->New,创建一个新工程,其中工程名及路径可任意指定弹出如下对话框:2. 在Project中填入工程名,Location中输入工程路径;其余按照默认选项,点击完成即可完成工程创建;3. 点击Project选择add files to project,添加工程所需文件;4. 在弹出的对话框中的下拉菜单中分别选择.c点击打开,即可添加源程序math.c添加到工程中;5. 同样的方法可以添
17、加文件math.cmd、rts.lib到工程中;在下面窗口中可以看到math.c、math.cmd、rts.lib文件已经加到工程文件中。5.3 设置编译与连接选项1. 点击Project选择Build Opitions;2. 在弹出的对话框中设置相应的编译参数,一般情况下,按默认值就可以;3. 在弹出的对话框中选择连接的参数设置,设置输出文件名(可执行文件与空间分配文件),堆栈的大小以及初始化的方式。5.4 工程编译与调试1. 点击Project Build all,对工程进行编译,如正确则生成out文件;若是修改程序,可以使用Project Build命令,进行编译连接,它只对修改部分做编
18、译连接工作。可节省编译与连接的时间。编译通过,生成.out文件;2. 点击File load program,在弹出的对话框中载入debug 文件夹下的.out可执行文件;3. 装载完毕;4. 点击debug Go Main回到C程序的入口;5. 打开File Workspace Save Workspace保存调试环境,以便下次调试时不需要重新进行设置。只要File Workspace Load Workspace即可恢复当前设置。6. 思考题1. DSP软件开发与常规的软件开发(如:VC+等)有何区别?2. 仿真器在DSP软件开发中的作用是什么?基础实验2: 简单应用程序的调试1. 实验目
19、的:1. 熟悉CCS集成开发环境,掌握工程的生成方法;2. 熟悉SEED-DEC5502实验环境;3. 掌握CCS集成开发环境的调试方法。2. 实验内容:1. 编译与链接的设置,生成可执行的DSP文件;2. 进行DSP程序的调试与改错;3. 学习使用CCS集成开发工具的调试工具;3. 实验程序,包含文件:本实验中主要包括以下文件:1. math.c这个文件中包含了实验中关于DSP运算的主要函数。主要包含有:fixed_add(int x,int y):定点加法运算;fixed_sub(int x,int y):定点减法运算;fixed_mul(int x,int y):定点乘法运算;fixed
20、_div(int x,int y):定点除法运算;float_add(double x,double y):浮点加法运算;float_sub(double x,double y):浮点减法运算;float_mul(double x,double y):浮点乘法运算;float_div(double x,double y):浮点除法运算;float_fixed(double x):浮点转定点运算;fixed_float(int x):定点转浮点运算;2. math.cmd这是DSP的链接文件。它的主要功能是将DSP的每段的程序链接到相应的DSP的存贮区中。3. rts55x.lib这是一个库文件
21、,主要包含了有关C的运行环境与相应的函数的代码。4. 实验准备:首先将光盘下03. Examples of Program 04. SEED-DTK5502实验程序目录下的3.1.5 Math文件夹拷贝到D:盘根目录下。1. 将DSP仿真器与计算机连接好;2. 将DSP仿真器的JTAG插头与SEED-DEC5502单元的J1相连接;3. 打开SEED-DTK5502的电源。观察SEED-DTK_MBoard单元的5V,3.3V,15V,15V的电源指示灯以及SEED-DEC5502的电源指示灯D2、D4是否均亮;若有不亮的,请断开电源,检查电源。5. 实验步骤4. 双击 图标进入CCS环境。5
22、. 点击Project open命令,在弹出的对话框中添加math.pjt文件;6. 按照下图所示的方法添加GEL 文件,即右键点击工程视窗中的GEL files,在弹出的菜单中选择 laod gel 命令。7. 按照下图所示添加.out文件,即使用FileLoad Program菜单命令。.out文件一般存放在math文件下的debug文件夹中。8. 使用projiectBulid命令编译当前程序。使用projiectBulid all命令编译整个工程程序。注意:在这个实验中,为了加深对CCS的了解,分别在编译与链接过程中设置了的错误行。这些错误行都是在程序调试中经常遇到的。n 源程序错误:
23、u 在函数fixed_add()中的z的定义未加“;”号;u 函数float_add()的号缺右边而未完整n 链接错误;u DSP的空间分配重叠;在进行此实验时,只有将上述的程序错误改正后才能正确的编译与链接。产生MATH.out。链接错误修改方法如下:链接错误存在于CMD文件中:n MMR:origin = 0000000h,length = 00000d0h修改为:MMR:origin = 0000000h, length = 00000c0h9. 点击debug Go Main回到C程序的入口main( )函数处。10. 使用F5快捷键,运行程序,在Stdout观察窗中查看程序运行结果。
24、6. 思考题1. 当编译或链接过程中出现了错误或告警时,如何利用编译窗口提示的信息来修改程序?应用实验1: DSP数据存取实验1. 实验目的:1. 了解TMS320VC5502的内部存储器空间的分配及指令寻址方式;2. 学习用Code Composer Studio修改、填充DSP内存单元的方法;3. 学习操作TMS320VC5502内存空间的指令。2. 实验内容:1. 读写DSP内存单元数据;2. 复制内存单元的数据。3. 实验背景知识:TMS320VC55xx系列DSP基于增强的哈佛结构,可以通过三组并行总线访问多个存储空间。它们分别是:程序地址总线(PAB)、数据读地址总线(DRAB)和
25、数据写地址总线(DWAB)。由于总线工作是独立的,所以可以同时访问程序和数据空间。4. 实验程序功能与结构说明:1. Memory.c:这是实验的主程序,包含了系统初始化,读写、复制DSP内存单元等;2. SEED_DEC5502.gel:系统初始化文件3. SEED_DEC5502.cmd: 声明了系统的存储器配置与程序各段的连接关系。5. 实验准备首先将光盘下03. Examples of Program 04. SEED-DTK5502实验程序目录下的3.2.1 DEC5502_Memory的文件夹拷贝到D:盘根目录下。1. 将DSP仿真器与计算机连接好;2. 将DSP仿真器的JTAG插
26、头与SEED-DEC5502单元的J1相连接;3. 打开SEED-DTK5502的电源。观察SEED-DTK_MBoard单元的5V,3.3V,15V,15V的电源指示灯以及SEED_DEC5502的电源指示灯D2、D4是否均亮;若有不亮的,请断开电源,检查电源。6. 实验步骤1. 打开CCS,进入CCS的操作环境。2. 装入Memory.pjt工程文件, 添加SEED_DEC5502.gel文件。3. 装载程序Memory.out,进行调试。4. 程序区的观察和修改运行到main函数入口:选择菜单Debug->Go Main,当程序运行并停止在main函数入口时,展开“Disassem
27、bly”反汇编窗口,发现main函数入口地址为028CH,也就是说从此地址开始存放主函数的程序代码。显示程序区:修改程序区的存储单元:程序区单元的内容由CCS的下载功能填充,但也能用手动方式修改;双击“Code”窗口地址“0x028C:”后的第一个数,显示“Edit Memory”窗口,在“Data”中输入0x20,单击“Done”按钮,观察“Code”窗口中相应地址的数据被修改,同时在反汇编窗口中的反汇编语句也发生了变化,当前语句被改成了“NOP”。将地址0x028C上的数据改回0x4e,程序又恢复成原样。5. 观察修改数据区显示片内数据存储区:同样打开窗口Data1,起始地址在0x4100
28、。修改数据单元:数据单元可以单个进行修改,只需双击想要改变的数据单元即可,与修改程序区单元的操作相同。填充数据单元:选择Edit->Memory->Fill观察“Data”窗口中的变化。同样将0x4100开始的头16个单元的值用0填充。6. 运行程序观察结果在Memory.c程序的第36行”for ( i=0,pz=py;i<16;i+,pz+ )”,第38行”for ( i=0;i<16;i+,px+,py+ )”,第42行”处设置断点。运行程序,程序会停在断点处,此时可观察到Data窗口中前16个单元的值被写入0000至000F。继续运行程序,程序会停在第二个断点处
29、,此时可观察到Data1窗口中前16个单元的值被均被写入1234。继续运行程序,程序结束,此时0x4080前16个单元的值复制到0x4100的前16个单元。7. 思考题1. 查看指令与查看数据有何不同之处?2. 查看程序中的某个变量主要有哪些方法,试列举两种方法。应用实验2: GPIO控制实验1. 实验目的:1. 了解GPIO片上外设;2. 掌握延时程序应用;3. 用GPIO口实现LED指示灯控制。2. 实验内容:1. DSP的初始化;2. 延时程序;3. GPIO引脚的配置。3. 实验背景知识:通用目的输入输出(GPIO)片内外设提供了专用的通用目的引脚,可以配置位输入或输出。当配置为一个输
30、出时,用户可以写一个内部寄存器以控制输出引脚上驱动的状态。当配置为输入引脚时,用户可以通过内部寄存器的状态检测到输入的状态。另外,GPIO片内外设可以用不同的中断/事件产生CPU中断和EDMA事件。一旦在GPIO使能寄存器(GPEN)被使能,GPIO引脚可以用作通用目的输入/输出。用户可以使用GPIO方向寄存器(GPDIR)独立配置每条GPIO引脚为输入或输出。当配置为输出(GPXDIR位=1),GPIO值寄存器(GPVAL)的GPXVAL位的值就被送到相应的GPn引脚。当配置为输入(GPXDIR位=0)时,输入状态可以从相应的GPXVAL读取TMS320VC5502有1-位通用输出引脚XF和
31、8-位通用I/O引脚GPIO7:0,其中GPIO3、GPIO5与McBSP2复用引脚。SEED-DEC5502模板上这些引脚的使用情况如下:XF用于点亮LED指示灯D1。XF = 1,点亮;XF = 0,熄灭。GPIO2:0:经电平转换后连至外设扩展总线的备用引脚。GPIO3:与McBSP2的CLKX2复用引脚,当配置为GPIO3时,用作COM1的。GPIO4:经电平转换后连至外设扩展总线的备用引脚。GPIO5:与McBSP2的FSX2复用引脚,当配置为GPIO5时,用作COM1的。GPIO6:经电平转换后连至外设扩展总线的备用引脚。GPIO7:用于点亮LED指示灯D5。XF = 1,点亮;X
32、F = 0,熄灭。通过本实验,要求掌握GPIO口的应用;熟悉延时程序的应用。4. 实验程序功能与结构说明:1. 5502_GPIO.c:这是实验的主程序,包含系统初始化,GPIO引脚点亮程序等;2. vectors.s55: 包含5502的中断向量表;3. SEED_DEC5502.cmd: 声明了系统的存储器配置与程序各段的连接关系。5. 程序流程图CSL初始化GPIO7引脚使能GPIO操作6. 实验准备首先将光盘下03. Examples of Program 04. SEED-DTK5502实验程序目录下的3.2.6 DEC5502_GPIOLED的文件夹拷贝到D:盘根目录下。1. 将D
33、SP仿真器与计算机连接好;2. 将DSP仿真器的JTAG插头与SEED-DEC5502单元的J1相连接;3. 打开SEED-DTK5502的电源。观察SEED-DTK_MBoard单元的5V,3.3V,15V,15V的电源指示灯以及SEED_DEC5502的电源指示灯D2、D4是否均亮;若有不亮的,请断开电源,检查电源。7. 实验步骤1. 打开CCS,进入CCS的操作环境。2. 装入DEC5502_GPIO.pjt工程文件, 添加SEED_DEC5502.gel文件。3. 装载程序DEC5502_GPIO.out,进行调试。4. 在5502_LED.c程序的第69行“delay();”处,第7
34、2行“delay();”处,第75行“delay();”处,第78行“delay();”处设置断点。5. 运行程序,程序会停在第一个断点处,关闭指示灯D1;6. 继续运行程序,程序每次都会停在第二个断点处,点亮指示灯D1; 7. 继续运行程序,程序每次都会停在第三个断点处,点亮指示灯D5;8. 继续运行程序,程序每次都会停在第四个断点处,关闭指示灯D5;9. 也可直接执行程序,观察指示灯D1,D5的闪烁情况。8. 思考题1. GPIO是什么,在实际工程中如何应用GPIO?2. CHIP_FSET()函数的作用是什么,如何使用?3. 如何控制指示灯D1或D5的闪烁频率?应用程序3: 定时器控制实
35、验1. 实验目的:1. 了解TMS320VC5502的定时器;2. 熟悉定时器各寄存器的配置;3. 掌握TMS320VC5502 的中断结构和对中断的处理流程;4. 学会C 语言中断程序设计,以及运用中断程序控制程序流程2. 实验内容:1. 系统初始化;2. 定时器中断初始化;3. 实验背景知识:TMS320VC5502 有3个64-位可编程的定时器,其中2个用作通用定时器(TIM0和TIM1),第三个定时器可以配置为通用定时器或看门狗定时器,其功能取决于看门狗全局定时控制寄存器1(WDTGCTL1)中的TIMMODE位以及看门狗定时器控制寄存器1(WDTWCTL1)中的看门狗使能位(WDEN
36、)的设置。在系统复位时,第3个定时器缺省配置为64-位的通用定时器。VC5502的每一个定时器均有一个外部引脚,该引脚可配置为输入或输出。VC5502片上定时器的功能框图如下图所示:下面简单的介绍一下TMS320VC5502中定时器的寄存器:EMU用来确定定时器竞争模式;CLK确定内在时钟分割比率;GPINT确定定时器的中断模式;GPEN确定在GPIO模式中定时器引脚的操作模式;GPDIR确定在GPIO模式中定时器引脚的输入输出模式;GPDAT确定在GPIO模式中涉及定时器引脚的信号标准。GCTL描述定时器的操作模式:其中TDDR34位段为定时器分配比率位,TIMMOD位段为定时器模式位。其中
37、CTL,PRD,CNT寄存器如下表:缩写 寄存器名称 类别 CTL定时器控制寄存器 CT0 CT1 PRD定时器周期寄存器 PRD0 PRD1 CNT定时器计数寄存器 CNT0 CNT1CTL中TIEN位段为定时器输入使能位;ENAMODE使能模式位;INVINP为TINP反向控制位;CLKSRC定时器输入时钟源位;CP时钟/脉冲模式使能位;PWID脉冲宽度位; INVOUT位段为TOUT反向控制位。PRD中共32位为将要计数的定时器输入时钟周期数。CNT中共32位为主计数器的当前值。周期如何算:周期=周期寄存器/f(时钟源)具体的Timer操作参见TMS320VC55015502 DSP T
38、imers Reference Guide (Rev. A).pdf通过本实验,熟悉中断的结构及用中断程序控制程序流程,掌握定时器的应用。4. 实验程序功能与结构说明:1. 5502-LED.c:这是实验的主程序,包含了系统初始化,定时器中断初始化,定时器中断程序等;2. vectors.s55: 包含5502的中断向量表;3. SEED_DEC5502.cmd: 声明了系统的存储器配置与程序各段的连接关系。5. 程序流程图;CSL初始化系统时钟设置定时器中断初始化定时器各寄存器配置使能定时器中断使能定时器1For循环等待进入定时器中断Main程序流程图中断处理结束D1指示灯开关wewei关闭
39、D1灯D5灯打开开关置0开关置1D5灯关闭定时器中断程序NY中断程序流程图6. 实验准备首先将光盘下03. Examples of Program 04. SEED_DTK-EPD实验程序目录下的3.2.7 DEC5502_TIMERLED的文件夹拷贝到D:盘根目录下。1. 将DSP仿真器与计算机连接好;2. 将DSP仿真器的JTAG插头与SEED-DEC5502单元的J1相连接;3. 打开SEED-DTK5502的电源。观察SEED-DTK_MBoard单元的5V,3.3V,15V,15V的电源指示灯以及SEED_DEC5502的电源指示灯D2、D4是否均亮;若有不亮的,请断开电源,检查电源
40、。7. 实验步骤1. 打开CCS,进入CCS的操作环境。2. 装入DEC5502_LED.pjt工程文件, 添加SEED_DEC5502.gel文件。3. 装载DEC5502_LED.out文件,进行调试。4. 在5502-LED.c程序的第136行“LEDMARK = 1;”、第141行“LEDMARK = 0;”和第146行“CHIP_FSET(ST1_55,XF,0);”处设置断点。5. 运行5502-LED.c程序,程序会停在第一个断点处,表明已进入定时器中断。观察指示灯D5灭。6. 继续运行程序,程序会停在第二个断点处。观察指示灯D5亮。7. 继续运行程序,程序会停在第三个断点处。观
41、察指示灯D1灭。8. 思考题1. 定时器有哪些寄存器,各种寄存器的作用是什么,如何设置通用定时器的寄存器?2. 通过对定时器寄存器的修改,如何改变指示灯的闪烁频率。应用实验4: DMA读写实验1. 实验目的:1. 了解DMA原理;2. 熟悉DMA的接口的配置;3. 掌握DMA的操作。2. 实验内容:1. DSP初始化;2. DMA配置;3. 实验背景知识:DMA控制器可以在没有CPU参与的情况下完成存储器影射空间中的数据传输。这些数据的传输可以是在片内存储器、片内外设或是外部器件之间,而且是在CPU操作后台进行的。1. DMA控制器的主要特点:1) 后台操作:DMA控制器可以独立于CPU工作。
42、2) 高吞吐率:可以以CPU时钟的速度进行数据吞吐。3) 6个通道:DMA控制器可以控制6个独立通道的传输。4) 辅助通道:该通道允许主机口向CPU的存储器空间进行请求。辅助通道与其他通道间的优先级可以设置。5) 但通道分割(即Split-channel)操作:利用单个通道就可以与一个外设间同时进行数据的读取和写入,与存在两个DMA通道的效果一样。6) 多帧(Multiframe)传输:传送的每个数据块可以含有多个数据帧。7) 优先级可编程:每一个通道对于CPU的优先级是可编程确定的。8) 可编程的地址产生方式:每个通道的源地址寄存器和目标地址寄存器对于每次读和写传输都是可配置的。地址可以是常
43、量、递增、递减,或是设定地址索引值。9) 自动初始化:每传送完一块数据,DMA通道会自动重新为下一个数据块的传送做好准备。10) 事件同步:读、写和帧操作都可以由指定的事件触发。11) 中断反馈:当一帧或一块数据传送完毕,或是出现错误情况时,每一个通道都可以向CPU发送中断。2. TMS320VC5502有6个DMA通道,4个DMA端口。相关内容可参考TMS320VC55015502 DSP DMA Controller Reference Guide (Rev. E).pdf。通过本实验,了解DMA接口的配置及应用;4. 实验程序功能与结构说明:1. DEC5502_DMA.c:这是实验的主
44、程序,包含了系统初始化,系统时钟设置,EMIF设置,初始化DSP的外部SDRAM,运行DMA转移函数等;2. emif.c:配置emif;3. SEED_DEC5502.cmd: 声明了系统的存储器配置与程序各段的连接关系。5. 程序流程图 CSL初始化系统时钟设置EMIF为全EMIF接口初始化DSP的外部SDRAM打开Timer 0运行DMA转移函数显示结果6. 实验准备首先将光盘下03. Examples of Program 04. SEED-DTK5502实验程序目录下的DEC5502_DMA的文件夹拷贝到D:盘根目录下。1. 将DSP仿真器与计算机连接好;2. 将DSP仿真器的JTA
45、G插头与SEED-DEC5502单元的J1相连接;3. 打开SEED-DEC5502的电源。观察SEED-DTK_MBoard单元的5V,3.3V,15V,15V的电源指示灯以及SEED_DEC5502的电源指示灯D2、D4是否均亮;若有不亮的,请断开电源,检查电源。7. 实验步骤1. 打开CCS,进入CCS的操作环境。2. 装入DEC5502_DMA.pjt工程文件, 添加SEED_DEC5502.gel文件。3. 装载DEC5502_DMA.out文件,进行调试。4. 由于软件重启对计数寄存器没有影响,所以为了获得DMA传递的准确时间,每次重新进行实验时应按如下步骤进行:5. 通过“Deb
46、ug->Reset CPU”重启CPU;6. 单击“Debug->Restart” ;7. 单击“Debug->Go Main” ;8. 在DEC5502_DMA.c程序的第246行“GPT_start(hGpt);”和第262行“cnt1=MYGPTCINT1_0;”处设置断点。9. 运行程序,程序会停在第一个断点处,此时可查看初始化后数组DstData和SrcData的值,并准备开始计时。10. 继续运行程序,程序会停在第二个断点处,此时可观察到数组DstData 数组的值11. 观察计数器的值。可以得到DMA传递数组的用时。T=(cnt2×65535cnt1)
47、×(1/频率)所以,以上图为例,T=(7×6553553969)(1/300MHz)=1.71ms,上例为源和目标端口都采用burst和data package模式。如果源和目标端口都采用NO-burst和NO-data package模式,可在程序第78至86行作响应修改:计数器值为:可计算出用时约为2.02ms。12. 继续运行程序,可观察到实验结果。8. 思考题1. DMA有哪些寄存器,各种寄存器的作用是什么,如何设置DMA的寄存器?2. 如何计算DMA传递的准确时间。3. 要想改变DMA传递的时间,对寄存器该做怎样的修改。应用实验5: UART控制实验1. 实验目的
48、:1. 了解DEC5502UART外设;2. 熟悉片上UART的使用;3. 熟悉利用串口调试器进行数据发送。2. 实验内容:1. 初始化系统;2. 选择片上UART。3. 实验背景知识:TMS320VC5502片上集成有UART外设,其功能类似于工业标准的异步收发器件TL16C550,接收器和发送器各有16个字节的FIFO,用于缓冲接收发送的数据,接收器FIFO的每个单元除了存储8-位字节数据外,还额外增加了3-位,用于存储接收错误状态位。VC5502片上UART有一个波特率发生器,用一个16-位分频器对输入时钟SYSCLK2进行分频,得到片上UART的工作时钟,工作时钟频率16分频即为片上U
49、ART接收发送的波特率。所以,分频系数与波特率之间的关系如下式:分频系数 = SYSCLK216×波特率VC5502片上的McBSP2/UART有3种用途,由系统控制寄存器0(SYSCNTL0)中的2个控制位McBSP2SEL1:0 控制。McBSP2/UART口的3种用途如下图所示:UART波特率设置对应下表:片上UART寄存器见下表URDLL和URDLM是锁存除数的寄存器,用来存放16位除数对应波特率时钟发生器URIER被用于中断请求的使能和关闭。其中ELSI使能接收排队中断请求;ETBEI使能THR中断请求;ERBI使能数据准备好或超时中断请求。URFCR是一个只写寄存器,用来
50、使能FIFO和选择接受者的FIFO标准。URLCR是一个用来控制不同信息交流的格式的寄存器。其中DLAB位段控制除数锁存寄存器(URDLL和URDLM)的地址共享;BC位段是暂停控制位;EPS奇偶选择位;STP停止位模式选择位;WLS信息长度选择位。URMCR调制解调控制寄存器。其中LOOP位段为使能循环模式位。URPECR能量竞争控制寄存器。其中URST位为UART重启位;FREE位段用来选择竞争模式位。有关片上UART的详细描述参见TMS320VC5501/5502 DSP Universal Asynchronous Receiver Transmitter Reference Guid
51、e(文献号SPRU597)4. 实验程序功能与结构说明:1. DEC5502-UARTONCHIP.c:这是实验的主程序,包含了系统初始化,片上UART选择,目标数组初始化程序等。2. vectors.s55: 包含5502的中断向量表。3. Timer.c:包含定时器的初始化,各操作函数和中断程序。4. Uart-Function.c:包含UART口的操作函数和中断程序。5. SEED_DEC5502.cmd: 声明了系统的存储器配置与程序各段的连接关系。5. 程序流程图系统时钟设置配置定时器选择片上UART配置UART寄存器初始化目标数组For循环等待进入UART中断CSL初始化6. 实验
52、准备首先将光盘下03. Examples of Program 04. SEED_DTK-EPD实验程序目录下的3.2.10 DEC5502-UARTONCHIP的文件夹拷贝到D:盘根目录下。1. 将DSP仿真器与计算机连接好;2. 将DSP仿真器的JTAG插头与SEED-DEC5502单元的J1相连接;3. 打开SEED-DTK5502的电源。观察SEED-DTK-IO单元的5V,3.3V,15V,15V的电源指示灯以及SEED_DEC5502的电源指示灯D2、D4是否均亮;若有不亮的,请断开电源,检查电源。4. 将与计算机连接的串口线接入J4(异步串口B)。7. 实验步骤 1. 打开CCS
53、,进入CCS的操作环境。2. 装入DEC5502_UARTONCHIP.pjt工程文件,添加SEED_DEC5502.gel文件。3. 装载DEC5502_UARTONCHIP.out文件,进行调试。4. 在Uart-Function.c程序的第102行“while(!UART_FGET(URLSR,DR);” (发送中断)处设置第一个断点。并在Timer.c程序的第123行“UART_RSET(URTHR, DestDataCounter);”(接受中断)处设置第二个断点。5. 打开串口调试器.exe,按串口配置设置。6. 运行程序,程序会等待外部中断。此时在发送区输入要发送的单个字符,点击
54、手工发送。7. 程序会停在第一个断点处。观察DestData数组的变化。8. 继续运行程序,程序每次都会停在第二个断点处。观察串口调试器.exe,字符会出现在接收区9. 用户可通过更改Uart-Function.h文件的第13行LENGTH 的宏定义的值改变数据发送的个数。8. 思考题1. UART有哪些寄存器,各种寄存器的作用是什么,如何设置UART的寄存器?2. 串口调试器如何使用。应用实验6: A/D采样实验1. 实验目的:1. 熟悉运用CODEC芯片TLV320AIC23B进行 A/D采集的原理;2. 了解McBSP的基本原理与设置;3. 了解DAC7724的工作方式;4. 了解D/A信号的产生过程。2. 实验内容:1. D/A与CODEC的初始化;2. 产生不同幅度与频率的波形,;3. 实验背景知识:DAC7724为12BIT,±10V量程,±15V供电的并行D/A转换器。它内部有2个锁存器。操作时,先将数据锁存到锁存器中,然后再启动转换寄存器;这样,D/A输出相应的电平。其原理图如下:本实验要求:通过本实验,完成模拟信号的采集,与模拟信号的生成,掌握对DAC7724的寄存器的设置,掌握对TLV320AIC23B的设置,以及完成模拟信号从输出到采集的整个过程。4. 实验程序功能与结构说明:1. DEC5502_AD.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 主播合同:模版(2026版)
- 2023年6月卫生资格考试呼吸内科肺癌预防专项试题及答案
- 广州市天河区招聘社区专职工作人员笔试真题2025
- 2026职测-增长率分析
- 2026 年初中秋季开学第一课厄尔尼诺背景汛期防灾减灾教育
- 2026年黑龙江省齐齐哈尔市中考历史试卷(真题+答案)
- 铝加工厂工艺流程细则
- 党校遴选真题及详细答案
- 孕妇预防血栓考试试题及答案呈现
- 初级前端面试常见题目与答案
- 内蒙古赤峰市2025-2026学年高一下学期7月期末考试数学试卷
- 2026中国压力传感器技术创新与下游应用领域拓展报告
- 中邮金融资产投资有限公司招聘笔试题库2026
- 美国糖尿病学会“2026年妊娠期高血糖诊治指南”解读
- 自然灾害中的急救护理
- 2026年全国I卷高考语文真题解读暨2027届高三高考备考复习策略
- 肩关节不稳康复治疗方法
- 2026-2030中国拍立得行业营销格局及未来前景趋势分析研究报告
- 中国对外文化集团公司招聘笔试题库2026
- 2026年国家电网招聘考试(计算机类)试题及答案
- 船厂质量管理奖惩制度
评论
0/150
提交评论