实验1:CCS环境下的程序设计一.实验目的1.掌握CodeComposerStudio3.3的配置过程;2.掌握DSP开发系统及计算机与目标系统的连接方法;3.了解CodeComposerStudio3.3软件的操作环境和基本功能,了解TMS320F2812软件开发过程;4.学习用标准C语言编制程序,了解常用的C语言程序设计方法和组成部分;5.熟悉使用软件仿真方式调试程序。二.实验设备1.PC机一台,操作系统为WindowsXP;2.SEED-DEC2812开发板、XDS510PLUS仿真器。三.实验内容应用CCS集成开发环境在软件仿真方式下,建立、配置、编译、下载和运行一个简单工程:应用C语言编写程序,完成z=x+y功能,并且通过“Memory”窗口观察x、y、z值的变化。四.实验原理1.开发TMS320C28xx应用系统一般需要以下几个调试工具来完成:软件集成开发环境(CodeComposerStudio3.3):完成系统的软件开发,进行软件和硬件仿真调试。它也是硬件调试的辅助手段。仿真器(XDS510PLUS等):实现硬件仿真调试时与硬件系统的通信,控制和读取硬件系统的状态和数据。开发板(DEC-F2812等):提供软件运行和调试的平台和用户系统开发的参照。2.CodeComposerStudio3.3主要完成系统的软件开发和调试。它提供一整套的程序编制、维护、编译、调试环境,能将汇编语言和C语言程序编译连接生成COFF(公共目标文件)格式的可执行文件,并能将程序下载到目标DSP上运行调试。3.用户系统的软件部分可以由CCS建立的工程文件进行管理,工程一般包含以下几种文件:源程序文件:C语言或汇编语言文件(*.ASM或*.C)头文件(*.H)命令文件(*.CMD)库文件(*.LIB)五.实验步骤1.实验准备:由于本实验采用软仿真模式,可以不用连接仿真器及开发板。2.设置CodeComposerStudio3.3在软仿真(Simulator)方式下运行。3.启动CodeComposerStudio3.3。4.创建工程。5.在工程文件中添加程序文件。6.编译连接工程。7.装载程序。8.调试。9.使用观察窗口观察x、y、z值的变化。六.实验结果通过实验可以发现,cmd文件可以安排程序和数据在DSP内存资源中的分配和位置。C语言编制的程序经过编译器编译后,在主函数中的无限循环中持续运行。七.问题与思考1.一个完整的工程需要那些必备的文件?实验2:F2812数据存取实验一.实验目的1.了解TMS320F2812的内部存储器空间的分配及指令寻址方式。2.学习用CodeComposerStudio3.3修改、填充DSP内存单元的方法。3.学习操作TMS320F2812内存空间的指令。二.实验设备1.PC机一台,操作系统为WindowsXP;2.SEED-DEC2812开发板、XDS510PLUS仿真器。三.实验内容在内部SARAM的0x600~0x60f单元置数0~0xf,将该单元块存储的数据复制到0x610~0x61f处,最后通过“Memory”查看窗口观察各存储区中的数据。四.实验原理TMS320F2812DSP内部存储器资源介绍:TMS320F2812系列DSP基于增强的哈佛结构,可以通过3组并行总线访问多个存储空间。它们分别是:程序地址总线(PAB)、数据读地址总线(DRAB)和数据写地址总线(DWAB)。由于总线工作是独立的,所以可以同时访问程序和数据空间。TMS320F2812系列DSP的地址映象请参考教材第3章存储器映射。五.实验步骤1.实验准备:由于本实验采用软仿真模式,可以不用连接仿真器及开发板。2.设置CodeComposerStudio3.3在软仿真(Simulator)方式下运行。3.启动CodeComposerStudio3.3。4.打开工程。工程文件为:C:\DSP281x_examples\memory\memory.pjt。5.编译、下载程序。如图2-1所示。图2-1手动下载程序6.调试程序。①点击File②选择LoadProgram…③选择Debug文件夹④双击Memory.out(1)运行到main函数入口选择菜单DebugGoMain,当程序运行并停止在main函数入口时,展开“Disassembly”反汇编窗口,发现main函数入口地址为0x3F8285H,也就是说从此地址开始存放主函数的程序代码。(2)显示存储器图2-2存储器(3)观察修改数据区数据区单元的内容可以用手动方式修改。①显示数据存储区:输入起始地址0x600。②修改数据单元:数据单元可以单个进行修改,只需双击想要改变的数据单元即可,(4)运行程序观察结果①打开Memory.c,在有注释的行上加软件断点。②按“F5”键运行到各断点,注意观察存储器窗口中数据的变化。六.实验结果实验程序运行之后,位于数据区地址0x600开始的16个单元的数值被复制到了数据区0x610开始的16个单元中。七.问题与思考修改数据单元内容和修改程序单元内容的操作方式是否一样?①选择菜单项实验3:CPU定时器实验一.实验目的1.通过实验熟悉F2812A的定时器;2.掌握F2812A定时器的控制方法;3.掌握F2812A的中断结构和对中断的处理流程;4.学会C语言中断程序设计,以及运用中断程序控制程序流程。二.实验设备1.PC机一台,操作系统为WindowsXP;2.SEED-DEC2812开发板、XDS510PLUS仿真器。三.实验内容应用CCS集成开发环境在硬件仿真方式下,以定时器中断方式实现定时功能,并观察LED灯的状态变化。四.实验原理1.TMS320F2812片内定时器TMS320F2812片内有3个32位时钟。其中定时器1、2预留给适时操作系统使用(例如DSPBIOS),只有CPU定时器0用户可以在应用程序中使用。定时器功能框图如下所示:3个定时器的中断信号(0TINT,1TINT,2TINT)在处理器内部连接不尽相同,如下图所示:定时器在工作过程中,首先用32位计数寄存器(TIMH:TIM)装载周期寄存器(PRDH:PRD)内部的值。计数寄存器根据SYSCLKOUT时钟递减计数。当计数寄存器等于0时,定时器中断输出产生一个中断脉冲。定时器计数器(TIMH:TIM):TIM寄存器保存当前32位定时器计数值的低16位,TIMH寄存器保存高16位。每隔(TDDRH:TDDR+1)个时钟周期TIMH:TIM减1,当TIMH:TIM递减到0时,TIMH:TIM寄存器重新装载PRDH:PRD寄存器保存的周期值,并产生定时器中断TINT信号。定时器周期寄存器(PRDH:PRD):PRD寄存器保存32位周期值的低16位,PRDH保存高16位。当TIMH:TIM递减到零时,在下次定时周期开始之前TIMH:TIM寄存器重新装载PRDH:PRD寄存器保存的周期值;当用户将定时器控制寄存器(TCR)的定时器重新装载位(TRB)置位时,TIMH:TIM也会重新装载PRDH:PRD寄存器保存的周期值。定时器控制寄存器TCR:主要有TIF位:定时器中断标志,当定时器计数器递减到0时,该位置1。可以通过软件向TIF写1将TIF位清零,但只有计数器递减到0时才会将该位置位;TIE位:CPU定时器中断使能;如果定时器计数器递减到零,TIE置位,定时器将会向CPU产生中断;TRB位:定时器重新装载控制位,当向TCR的TRB位写1时,TIMH:TIM会重新装载PRDH:PRD寄存器保存的周期值,并且预定标计数器(PSCH:PSC)装载定时器分频寄存器(TDDRH:TDDR)中的值;定时器停止状态位TSS,要停止定时器TSS位置1。2.中断响应过程(1)接受中断请求。必须由软件中断(从程序代码)或硬件中断(从一个引脚或一个基于芯片的设备)提出请求去暂停当前主程序的执行。(2)响应中断。必须能够响应中断请求。如果中断是可屏蔽的,则必须满足一定的条件,按照一定的顺序去执行。而对于非可屏蔽中断和软件中断,会立即作出响应。(3)准备执行中断服务程序并保存寄存器的值。(4)执行中断服务子程序。调用相应得中断服务程序ISR,进入预先规定的向量地址,并且执行已写好的ISR。3.中断类别可屏蔽中断:这些中断可以用软件加以屏蔽或解除屏蔽。不可屏蔽中断:这些中断不能够被屏蔽,将立即响应该类中断并转入相应的子程序去执行。所有软件调用的中断都属于该类中断。4.中断的优先级如果多个中断被同时激发,将按照他们的中断优先级来提供服务。中断优先级是芯片内部已定义好的,不可修改。5.实验程序流程主程序及中断服务程序流程如下图所示:开始初始化DSP时钟初始化中断向量等待中断产生初始化定时器改变指示灯状态中断服务开始中断服务结束五.实验步骤1.实验准备:由于本实验采用硬件仿真模式,需要利用XDS510Plus仿真器,并连接开发板。2.设置CodeComposerStudio3.3在硬件仿真(Emulator)方式下运行。3.启动CodeComposerStudio3.3。4.打开工程。工程文件为:C:\DSP281x_examples\CpuTimer\CpuTimer.pjt。5.编译、下载程序。6.运行程序,程序停在第一个断点处,表明已进入定时器中断。观察指示灯D1、D3。7.继续运行程序,程序会停在第二个断点处。观察指示灯D1、D3。8.若取消断点,连续运行程序会看到SEED_DEC2812板卡上D1和D3交替闪烁。9.实验者可根据自己的需要改变周期寄存器的值,从而控制每次进中断的时间。六.实验结果1.指示灯在定时器的定时中断中按照设计定时闪烁。2.使用定时器和中断服务程序可以完成许多需要定时完成的任务,比如DSP定时启动A/D转换,日常生活中的计时器计数、空调的定时启动和关闭等。3.在调试程序时,有时需要指示程序工作的状态,可以利用指示灯的闪烁来达到,指示灯灵活的闪烁方式可表达多种状态信息。七.问题与思考如果要改变LED灯的闪烁频率,应该怎么实现?实验4:片内外设SCI应用实验一.实验目的1.了解SEED-DEC2812开发板标准RS-232串行通信接口的原理和方法。2.学会对串行通信芯片的配置编程。3.学习设计异步通信程序。二.实验设备1.PC机一台,操作系统为WindowsXP;2.SEED-DEC2812开发板、XDS510PLUS仿真器。三.实验内容应用TMS320F2812A芯片自带的标准RS-232串行通信接口(SCI)模块,实现与PC机串口的通讯。四.实验原理1.SEED-DEC2812开发板串行接口在SEED-DEC2812模板上配置有二个通用异步串口,采用MAX3160多协议收发器,接口标准可配置为RS232、RS422、RS485,用它可以与计算机及其它设备进行串行通信。在RS232接口标准时,采用4线制(RXD、TXD、RTS、CTS),而在RS422/RS485接口标准时,采用2线制(RXD、TXD)。在RS232接口标准时,RTS和CTS由UART控制/状态寄存器实现。MAX3160上的引脚RS485/RS232用于选择工作在RS422/RS485还是RS232接口标准;引脚HDPLX则用于选择是RS422还是RS485;引脚FAST用于控制信号转换率;引脚DE485用于控制RS422/RS485方式时,发送器是否使能,DE485和RS232方式时的RTS信号复用。SEED-DEC2812上设计了一个UART工作模式控制寄存器(UART_MODE)用来产生这些信号,所以UART工作模式的控制可通过F2812编程设置。UART_MODE寄存器映射到’F2812的Zone1的0x004010存储单元,其定义如下:①RS485/RS232B:异步串口通道B接口标准选择,复位值为00:选择RS232标准1:选择RS422/RS485标准②RS485/RS232A:异步串口通道A接口标准选择,复位值为00:选择RS232标准1:选择RS422/RS485标准③FASTB