收藏 分享(赏)

DSP原理与应用实验讲义.doc

上传人:hwpkd79526 文档编号:9171992 上传时间:2019-07-26 格式:DOC 页数:76 大小:4.03MB
下载 相关 举报
DSP原理与应用实验讲义.doc_第1页
第1页 / 共76页
DSP原理与应用实验讲义.doc_第2页
第2页 / 共76页
DSP原理与应用实验讲义.doc_第3页
第3页 / 共76页
DSP原理与应用实验讲义.doc_第4页
第4页 / 共76页
DSP原理与应用实验讲义.doc_第5页
第5页 / 共76页
点击查看更多>>
资源描述

1、- 1 -前言随着数字电子技术不断发展,人们对数字信号处理的要求也越来越高,传统意义上的微处理器已不能满足现代数字电子技术发展的要求,而数字信号处理器(DSP)在近 20 多年的发展与普及后,应用领域几乎涵盖了所有的行业:通信、信息处理、自动控制、雷达、航空航天、医疗、日常消费品等。目前大多数学校都是理论结合实验进行教学,围绕该课程所开的实验课程皆为阶段性理论的验证实验,实验设备也仅是为验证某些算法和理论所使用,实验的项目相对来说比较单一和固定,实验设备的利用效率低下,其实验设备缺少研发和形成一个数字信号处理产品的能力。目前,我校的通信工程专业开设了数字信号处理 、 语音信号处理 、 数字图像

2、处理等信号处理相关课程,但尚缺乏一个动手实践和灵活应用的实验平台。数字信号处理器由于其优异的运算能力和独特的硬件结构,是一个理想的选择。结合当前的情况,本实验讲义从培养应用型人才的角度出发,并充分借鉴各大高校的先进试验教学管理技术,开发并设计了相应的 DSP 实验项目。本实验讲义将实验分为三个模块,即基础实验、应用实验、扩展实验,以满足不同能力和需求的学生的需要。本实验讲义在DSP 原理及应用实验教学改革课题支持下编写完成。不足之处,请广大师生指正。- 2 - 3 -目 录基础实验 1 CCS 软件的使用 .5基础实验 2: 简单应用程序的调试 17应用实验 1: DSP 数据存取实验 .21

3、应用实验 2: GPIO 控制实验 24应用程序 3: 定时器控制实验 27应用实验 4: DMA 读写实验 .31应用实验 5: UART 控制实验 36应用实验 6: A/D 采样实验 .41应用实验 7: 有限冲击响应滤波器(FIR)算法实验 .44应用实验 8: 快速傅立叶变换(FFT)算法实验 .49扩展实验 1: 语音回声实验 55扩展实验 2: 语音和声实验 57扩展实验 3: 交通灯实验 60附录 A .64附录 B .73- 4 - 5 -基础实验 1 CCS 软件的使用1. 实验目的:1. 熟悉 CCS 集成开发环境,掌握工程的生成方法;2. 熟悉 SEED-DEC5502

4、 实验环境;3. 掌握 CCS 集成开发环境的调试方法。2. 实验内容:1. DSP 源文件的建立;2. DSP 程序工程文件的建立; 3. 学习使用 CCS 集成开发工具的调试工具。3. 实验背景知识:3.1 CCS 简介CCS 提供了配置、建立、调试、跟踪和分析程序的工具,它便于实时、嵌入式信号处理程序的编制和测试,它能够加速开发进程,提高工作效率。CCS 提供了基本的代码生成工具,它们具有一系列的调试、分析能力。CCS 支持如下所示的开发周期的所有阶段设计概念性规划编程与编译创建工程文件编写源程序编写配置文件调试语法检测逻辑检测分析实时调试统计跟踪- 6 -CCS 构成及接口见下图CCS

5、窗口介绍:- 7 -3.2 使用 CCS 常遇见文件简介:1. program.c: C 程序源文件2. program.asm: 汇编程序源文件3. filename.h: C 程序的头文件,包含 DSP/BIOS API 模块的头文件4. filename.lib: 库文件5. project.cmd: 连接命令文件6. program.obj: 由源文件编译或汇编而得的目标文件7. program.out: 经完整的编译、汇编以及连接后生成可执行文件8. program.map: 经完整的编译、汇编以及连接后生成空间分配文件9. project.wks: 存储环境设置信息的工作区文件 保

6、存配置文件时将产生下列文件:1. programcfg.cmd: 连接器命令文件2. programcfg.h54: 汇编头文件3. programcfg.s54: 汇编源文件(一) CMD 文件简介cmd 文件用于 DSP 代码的定位。由 3 部分组成: 1 输入输出定义:.obj 文件:链接器要链接的目标文件。 .lib 文件:链接器要链接的库文件。.map 文件:链接器生成的交叉索引文件。.out 文件:链接器生成的可执行代码; 链接器选项 。2 MEMORY 命令:描述系统实际的硬件资源。 3 SECTIONS 命令:描述 “段“如何定位。下面例子则可说明其基本格式: -o sampl

7、e.out -m sample.map -stack 100 sample.obj meminit.obj -l rts.lib MEMORY PAGE 0: VECT: origin = 0xff80, 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 - 8 -下面介绍一下 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 和 re

9、alloc 函数动态分配存储空间。(二) vecs.asm 文件简介vecs.asm 是 DSP 的中断向量表文件。中断服务程序的地址(中断向量)要装载到存储器的合适区域。一般中断向量表文件是采用汇编语言编写;在文件中一般汇编指令.sect来生成一个表。这个表包含中断向量的地址和跳转指令。因为中断读物的标志符在汇编语言模块外部使用,所以标志符用.ref 或.global 。(三) GEL 文件简介GEL 文件的功能同 cmd 文件的功能基本相同,用于初始化 DSP。但它的功能比 cmd文件的功能有所增强,GEL 在 CCS 下有一个菜单,可以根据 DSP 的对象不同,设置不同的初始化程序。以下

10、面的例子介绍一下 GEL 文件的构成。例:#define DEC5502_CTL 0x60000 /定义 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); 定义程序空间

11、8000f000 可读写 GEL_MapAdd(0x0000,1,0x1000,1,1); 定义数据空间 0000f000 可读写 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 Res

12、et D,初始化所有的寄存器内容并暂停运行中的程序。使用此命令后,要重新装载.out 文件后,再执行程序。2) Restart: Debug Restart ,将 PC 值恢复到当前载入程序的入口地址。3) Go main: Debug Go main ,将程序运行到主程序的入口处暂停。- 9 -3. CCS 提供 4 种执行操作1) 执行执行: Debug Run ,程序运行直到遇到断点为止。2) 暂停执行: Debug Halt ,程序停止运行。3) 动画执行: Debug Animate ,用户反复运行程序,直到遇到断点为止。4) 自由执行: Debug Run Free ,禁止所有断点

13、运行程序。4. CCS 提供 4 种单步执行操作1) 单步进入: 快捷键 F8,Debug step into ,当调试语句不是基本的汇编指令时,此操作进入语句内部。2) 单步执行: Debug step Over ,此命令将函数或子函数当作一条语句执行,不进入内部调试。3) 单步跳出: Debug step Out ,此命令作用为从子程序中跳出4) 执行到光标处: 快捷键 crtl+F10,Debug Run to Cursor,此命令作用为将程序运行到光标处。5. 内存、寄存器与变量的操作1) 查看变量: 使用 view Watch Window 命令2) 查看寄存器: 使用 view R

14、egisters CPU Registers 命令3) 查看内存: 使用 view memory 命令6. Graph 的设置即图形显示1) 选择 View Graph Time/Frequency。2) 在弹出的 Graph Property Dialog 对话窗中, 将 Graph Title,Start Address,Acquisition Buffer Size,Display Data Size,DSP Data Type 等的属性可改变为如 下图所示(也可根据具体需要设置属性) 。向下滚动右侧的滚动条或调整 dialog 框的大小可看到所有的属性。示例(A) 将起始地址为 0x2

15、c28 的数组进行图形显示- 10 -3) 点击 OK,将出现所设的图形窗口。如:在滤波实验中,用以上方法设定的图形窗口,在运行滤波程序后,最终的显示结果如下图所示4) 可以在图形上单击右键,选择“Float In Main Table”,这时图形将浮现在主窗口中,以便观察。4. 实验准备:1. 将 DSP 仿真器与计算机连接好;2. 将 DSP 仿真器的 JTAG 插头与 SEED-DEC5502 单元的 J1 相连接;3. 启动计算机,当计算机启动后,打开 SEED-DTK5502 的电源。观察 SEED-DTK_MBoard 单元的5V,3.3V,15V,15V 的电源指示灯灯以及 SE

16、ED-DEC5502 的电源指示灯 D2、 D4 是否均亮;若有不亮的,请断开电源,检查电源。下面按照原文件、工程文件以及编译条件的设置来分别介绍一下 CCS 的使用。- 11 -5. 实验步骤:5.1 创建源文件1. 双击 图标进入 CCS 环境。2. 打开 CCS 选择 File New Source File 命令3. 编写源代码并保存4. 保存源程序名为 math.c,选择 File Save- 12 -5. 创建其他源程序(如.cmd)可重复上述步骤。5.2 创建工程文件1. 打开 CCS,点击 ProjectNew,创建一个新工程,其中工程名及路径可任意指定弹出如下对话框:2. 在

17、 Project 中填入工程名, Location 中输入工程路径;其余按照默认选项,点击完- 13 -成即可完成工程创建;3. 点击 Project 选择 add files to project,添加工程所需文件;4. 在弹出的对话框中的下拉菜单中分别选择.c 点击打开,即可添加源程序 math.c 添加到工程中;5. 同样的方法可以添加文件 math.cmd、rts.lib 到工程中;在下面窗口中可以看到math.c、math.cmd、rts.lib 文件已经加到工程文件中。- 14 -5.3 设置编译与连接选项1. 点击 Project 选择 Build Opitions;2. 在弹出

18、的对话框中设置相应的编译参数,一般情况下,按默认值就可以;3. 在弹出的对话框中选择连接的参数设置,设置输出文件名(可执行文件与空间分配文件) ,堆栈的大小以及初始化的方式。- 15 -5.4 工程编译与调试1. 点击 Project Build all,对工程进行编译,如正确则生成 out 文件;若是修改程序,可以使用 Project Build 命令,进行编译连接,它只对修改部分做编译连接工作。可节省编译与连接的时间。编译通过,生成.out 文件;2. 点击 File load program,在弹出的对话框中载入 debug 文件夹下的.out 可执行文件;3. 装载完毕;- 16 -4

19、. 点击 debug Go Main 回到 C 程序的入口;5. 打开 File Workspace Save Workspace 保存调试环境,以便下次调试时不需要重新进行设置。只要 File Workspace Load Workspace 即可恢复当前设置。6. 思考题1. DSP 软件开发与常规的软件开发(如:VC+等)有何区别?2. 仿真器在 DSP 软件开发中的作用是什么?- 17 -基础实验 2: 简单应用程序的调试1. 实验目的:1. 熟悉 CCS 集成开发环境,掌握工程的生成方法;2. 熟悉 SEED-DEC5502 实验环境;3. 掌握 CCS 集成开发环境的调试方法。2.

20、 实验内容: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_div(int x,int y): 定点除法运算;float_add(double x,double y): 浮点

21、加法运算;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 这是一个库文件,主要包含了有关 C 的运行环境与相应的函数的代码。4. 实验准备:首先将光盘下 03

22、. 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 是否均亮;若有不亮的,请断开电源,检查电源。- 18 -5. 实验步骤4. 双击 图标进入 CCS 环境。5. 点击 Proj

23、ect open 命令,在弹出的对话框中添加 math.pjt 文件;6. 按照下图所示的方法添加 GEL 文件, 即右键点击工程视窗中的 GEL files,在弹出的菜单中选择 laod gel 命令。7. 按照下图所示添加.out 文件,即使用 FileLoad Program 菜单命令。.out 文件一般存放在 math 文件下的 debug 文件夹中。- 19 -8. 使用 projiectBulid 命令编译当前程序。使用 projiectBulid all 命令编译整个工程程序。注意:在这个实验中,为了加深对 CCS 的了解,分别在编译与链接过程中设置了的错误行。这些错误行都是在程

24、序调试中经常遇到的。 源程序错误: 在函数 fixed_add()中的 z 的定义未加“ ;”号; 函数 float_add()的号缺右边而未完整 链接错误; DSP 的空间分配重叠;在进行此实验时,只有将上述的程序错误改正后才能正确的编译与链接。产生 MATH.out。链接错误修改方法如下:链接错误存在于 CMD 文件中: MMR: origin = 0000000h, length = 00000d0h修改为:MMR: origin = 0000000h, length = 00000c0h9. 点击 debug Go Main 回到 C 程序的入口 main( )函数处。- 20 -10

25、. 使用 F5 快捷键,运行程序,在 Stdout 观察窗中查看程序运行结果。6. 思考题1. 当编译或链接过程中出现了错误或告警时,如何利用编译窗口提示的信息来修改程序?- 21 -应用实验 1: DSP 数据存取实验1. 实验目的:1. 了解 TMS320VC5502 的内部存储器空间的分配及指令寻址方式;2. 学习用 Code Composer Studio 修改、填充 DSP 内存单元的方法;3. 学习操作 TMS320VC5502 内存空间的指令。2. 实验内容:1. 读写 DSP 内存单元数据;2. 复制内存单元的数据。3. 实验背景知识:TMS320VC55xx 系列 DSP 基

26、于增强的哈佛结构,可以通过三组并行总线访问多个存储空间。它们分别是:程序地址总线(PAB) 、数据读地址总线(DRAB)和数据写地址总线(DWAB) 。由于总线工作是独立的,所以可以同时访问程序和数据空间。4. 实验程序功能与结构说明:1. Memory.c:这是实验的主程序,包含了系统初始化,读写、复制 DSP 内存单元等;2. SEED_DEC5502.gel:系统初始化文件3. SEED_DEC5502.cmd: 声明了系统的存储器配置与程序各段的连接关系。5. 实验准备首先将光盘下 03. Examples of Program 04. SEED-DTK5502 实验程序目录下的 3.

27、2.1 DEC5502_Memory 的文件夹拷贝到 D:盘根目录下。1. 将 DSP 仿真器与计算机连接好;2. 将 DSP 仿真器的 JTAG 插头与 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.

28、装载程序 Memory.out,进行调试。4. 程序区的观察和修改运行到 main 函数入口:选择菜单 Debug-Go Main,当程序运行并停止在main 函数入口时,展开“Disassembly”反汇编窗口,发现 main 函数入口地址为028CH,也就是说从此地址开始存放主函数的程序代码。显示程序区:- 22 -修改程序区的存储单元:程序区单元的内容由 CCS 的下载功能填充,但也能用手动方式修改;双击“Code”窗口地址“0x028C :”后的第一个数,显示“Edit Memory”窗口,在“Data”中输入 0x20,单击 “Done”按钮,观察“Code”窗口中相应地址的数据被修

29、改,同时在反汇编窗口中的反汇编语句也发生了变化,当前语句被改成了“NOP”。将地址0x028C 上的数据改回 0x4e,程序又恢复成原样。5. 观察修改数据区显示片内数据存储区:同样打开窗口 Data1,起始地址在 0x4100。修改数据单元:数据单元可以单个进行修改,只需双击想要改变的数据单元即可,与修改程序区单元的操作相同。填充数据单元:选择 Edit-Memory-Fill- 23 -观察“Data”窗口中的变化。同样将 0x4100 开始的头 16 个单元的值用 0 填充。6. 运行程序观察结果在 Memory.c 程序的第 36 行”for ( i=0,pz=py;i16;i+,pz

30、+ )”,第 38行”for ( i=0;i16;i+,px+,py+ )”,第 42 行”处设置断点。运行程序,程序会停在断点处,此时可观察到 Data 窗口中前 16 个单元的值被写入 0000 至 000F。继续运行程序,程序会停在第二个断点处,此时可观察到 Data1 窗口中前 16个单元的值被均被写入 1234。继续运行程序,程序结束,此时 0x4080 前 16 个单元的值复制到 0x4100 的前 16 个单元。7. 思考题1. 查看指令与查看数据有何不同之处?2. 查看程序中的某个变量主要有哪些方法,试列举两种方法。- 24 -应用实验 2: GPIO 控制实验1. 实验目的:

31、1. 了解 GPIO 片上外设;2. 掌握延时程序应用;3. 用 GPIO 口实现 LED 指示灯控制。2. 实验内容:1. DSP 的初始化;2. 延时程序;3. GPIO 引脚的配置。3. 实验背景知识:通用目的输入输出(GPIO)片内外设提供了专用的通用目的引脚,可以配置位输入或输出。当配置为一个输出时,用户可以写一个内部寄存器以控制输出引脚上驱动的状态。当配置为输入引脚时,用户可以通过内部寄存器的状态检测到输入的状态。另外,GPIO片内外设可以用不同的中断/ 事件产生 CPU 中断和 EDMA 事件。一旦在 GPIO 使能寄存器( GPEN)被使能,GPIO 引脚可以用作通用目的输入/

32、输出。用户可以使用 GPIO 方向寄存器(GPDIR)独立配置每条 GPIO 引脚为输入或输出。当配置为输出(GPXDIR 位=1 ) ,GPIO 值寄存器(GPVAL)的 GPXVAL 位的值就被送到相应的 GPn 引脚。当配置为输入(GPXDIR 位=0 )时,输入状态可以从相应的 GPXVAL 读取TMS320VC5502 有 1-位通用输出引脚 XF 和 8-位通用 I/O 引脚 GPIO7:0,其中GPIO3、GPIO5 与 McBSP2 复用引脚。SEED-DEC5502 模板上这些引脚的使用情况如下:XF 用于点亮 LED 指示灯 D1。XF = 1,点亮;XF = 0,熄灭。G

33、PIO2:0: 经电平转换后连至外设扩展总线的备用引脚。GPIO3: 与 McBSP2 的 CLKX2 复用引脚,当配置为 GPIO3 时,用作 COM1 的。GPIO4: 经电平转换后连至外设扩展总线的备用引脚。GPIO5: 与 McBSP2 的 FSX2 复用引脚,当配置为 GPIO5 时,用作 COM1 的。GPIO6: 经电平转换后连至外设扩展总线的备用引脚。GPIO7: 用于点亮 LED 指示灯 D5。XF = 1,点亮; XF = 0,熄灭。通过本实验,要求掌握 GPIO 口的应用;熟悉延时程序的应用。4. 实验程序功能与结构说明:1. 5502_GPIO.c:这是实验的主程序,包

34、含系统初始化,GPIO 引脚点亮程序等;2. vectors.s55: 包含 5502 的中断向量表;3. SEED_DEC5502.cmd: 声明了系统的存储器配置与程序各段的连接关系。- 25 -5. 程序流程图CSL 初始化GPIO7 引脚使能GPIO 操作6. 实验准备首先将光盘下 03. Examples of Program 04. SEED-DTK5502 实验程序目录下的3.2.6 DEC5502_GPIOLED 的文件夹拷贝到 D:盘根目录下。1. 将 DSP 仿真器与计算机连接好;2. 将 DSP 仿真器的 JTAG 插头与 SEED-DEC5502 单元的 J1 相连接;

35、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();”处,第 72 行 “delay();”处,第 75 行“delay(

36、);”处,第 78 行“delay();” 处设置断点。5. 运行程序,程序会停在第一个断点处,关闭指示灯 D1;6. 继续运行程序,程序每次都会停在第二个断点处,点亮指示灯 D1; 7. 继续运行程序,程序每次都会停在第三个断点处,点亮指示灯 D5;8. 继续运行程序,程序每次都会停在第四个断点处,关闭指示灯 D5;9. 也可直接执行程序,观察指示灯 D1,D5 的闪烁情况。- 26 -8. 思考题1. GPIO 是什么,在实际工程中如何应用 GPIO?2. CHIP_FSET()函数的作用是什么,如何使用?3. 如何控制指示灯 D1 或 D5 的闪烁频率?- 27 -应用程序 3: 定时器

37、控制实验1. 实验目的:1. 了解 TMS320VC5502 的定时器;2. 熟悉定时器各寄存器的配置;3. 掌握 TMS320VC5502 的中断结构和对中断的处理流程;4. 学会 C 语言中断程序设计,以及运用中断程序控制程序流程2. 实验内容:1. 系统初始化;2. 定时器中断初始化;3. 实验背景知识:TMS320VC5502 有 3 个 64-位可编程的定时器,其中 2 个用作通用定时器(TIM0 和TIM1) ,第三个定时器可以配置为通用定时器或看门狗定时器,其功能取决于看门狗全局定时控制寄存器 1(WDTGCTL1)中的 TIMMODE 位以及看门狗定时器控制寄存器1(WDTWC

38、TL1)中的看门狗使能位( WDEN)的设置。在系统复位时,第 3 个定时器缺省配置为 64-位的通用定时器。 VC5502 的每一个定时器均有一个外部引脚,该引脚可配置为输入或输出。 VC5502 片上定时器的功能框图如下图所示:下面简单的介绍一下 TMS320VC5502 中定时器的寄存器:EMU 用来确定定时器竞争模式;CLK 确定内在时钟分割比率;- 28 -GPINT 确定定时器的中断模式;GPEN 确定在 GPIO 模式中定时器引脚的操作模式;GPDIR 确定在 GPIO 模式中定时器引脚的输入输出模式;GPDAT 确定在 GPIO 模式中涉及定时器引脚的信号标准。GCTL 描述定

39、时器的操作模式:其中 TDDR34 位段为定时器分配比率位,TIMMOD位段为定时器模式位。其中 CTL,PRD,CNT 寄存器如下表:缩写 寄存器名称 类别CT0 CTL 定时器控制寄存器 CT1PRD0PRD 定时器周期寄存器 PRD1CNT0CNT 定时器计数寄存器 CNT1CTL 中 TIEN 位段为定时器输入使能位; ENAMODE 使能模式位; INVINP 为 TINP反向控制位;CLKSRC 定时器输入时钟源位;CP 时钟/脉冲模式使能位; PWID 脉冲宽度位; INVOUT 位段为 TOUT 反向控制位。PRD 中共 32 位为将要计数的定时器输入时钟周期数。CNT 中共

40、32 位为主计数器的当前值。周期如何算:周期=周期寄存器/f(时钟源)具体的 Timer 操作参见 TMS320VC55015502 DSP Timers Reference Guide (Rev. A).pdf通过本实验,熟悉中断的结构及用中断程序控制程序流程,掌握定时器的应用。4. 实验程序功能与结构说明:1. 5502-LED.c:这是实验的主程序,包含了系统初始化,定时器中断初始化,定时器中断程序等;2. vectors.s55: 包含 5502 的中断向量表;3. SEED_DEC5502.cmd: 声明了系统的存储器配置与程序各段的连接关系。- 29 -5. 程序流程图;CSL 初

41、始化系统时钟设置定时器中断初始化定时器各寄存器配置使能定时器中断使能定时器 1For 循环等待进入定时器中断Main 程序流程图中断处理结束D1 指示灯开关wewei关闭 D1 灯D5 灯打开开关置 0开关置 1D5 灯关闭定时器中断程序NY中断程序流程图- 30 -6. 实验准备首先将光盘下 03. Examples of Program 04. SEED_DTK-EPD 实验程序目录下的 3.2.7 DEC5502_TIMERLED 的文件夹拷贝到 D:盘根目录下。1. 将 DSP 仿真器与计算机连接好;2. 将 DSP 仿真器的 JTAG 插头与 SEED-DEC5502 单元的 J1

42、相连接;3. 打开 SEED-DTK5502 的电源。观察 SEED-DTK_MBoard 单元的5V, 3.3V,15V,15V 的电源指示灯以及 SEED_DEC5502 的电源指示灯 D2、D4 是否均亮;若有不亮的,请断开电源,检查电源。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. 继续运行程序,程序会停在第三个断点处。观察指示灯 D1 灭。8. 思考题1. 定时器有哪些寄存器,各种寄存器的作用是什么,如何设置通用定时器的寄存器?2. 通过对定时器寄存器的修改,如何改变指示灯的闪烁频率。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报