DSP实验指导.doc
《DSP实验指导.doc》由会员分享,可在线阅读,更多相关《DSP实验指导.doc(13页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流DSP实验指导.精品文档.实验一:扩展RAM及FLASH读写实验一、实验目的1. 理解F28335在硬件上如何扩展RAM内存。2. 理解F28335在扩展RAM存储器上的编程。二、实验设备1装有CCS5.2的计算机一台。2ZQ28335开发板、XDS100V2 USB仿真器、USB接口线及5V电源。三、实验原理F28335的片上存储器和片外存储器采用统一编址方式。当片内RAM存储器不够用时,可外接芯片扩展。扩展存储器只能在0x00 40000x00 5000的XINF 区域0、0x10 00000x20 0000的XINF 区域6和0x20
2、00000x70 0000的XINF 区域7,如图1所示。1外扩RAM电路选用的RAM型号为IS61LV25616AL,256K16bit大小。这里使用A17A0,共18根地址线,最大为256K;数据线为D15D0。片选信号CE接F28335的XZCS7引脚,写WE由XWE提供,RD(OE,Output Enable)信号均XRD提供。有硬件电路可知,外扩的RAM地址范围为0x20 00000x23 FFFF。由于没有使用A19A18地址线,在仿真时,凡低18位地址相同的单元,读出的内容都是同一个单元内容,如0x2400000x27FFFF,0x2800000x2BFFFF和0x2C00000
3、x2FFFFF上读出的内容与0x2000000x23FFF的内容相同。2外扩FLASH电路FLASH存储器掉电后数据不会丢失,用于存放程序和需要保存的数据。本实验板选用的FLASH型号为SST39VF800,512K16bit大小。这里使用A18A0,共19根地址线,最大为512K;数据线为D15D0。片选信号CE接F28335的XZCS6引脚,写WE由XWE提供,RD(OE,Output Enable)信号均XRD提供。有硬件电路可知,外扩的FLASH地址范围为0x10 00000x17 FFFF。读FLASH的方法与普通的存储器没有区别,但写数据到FLASH及擦除等操作,则需要特定的命令,
4、如表1所示。图1 F28335内存映射图2 F28335在区域7外接RAM芯片(仅使用A17A0,256K)表1 SST39VF800型FLASH存储器命令表图3 F28335在区域6外接FLASH芯片(仅使用A18A0,512K)例如:一个字到FLASH(Word Program),需要4个周期。如将地址为DSPRamStart的随机存储器单元内容复制到FLASH的FlashStart单元,编程如下:*(FlashStart + 0x5555)= 0xAA;*(FlashStart + 0x2AAA)= 0x55;*(FlashStart + 0x5555) = 0xA0;*(FlashSt
5、art) = *(DSPRamStart);3实验功能分析在main_EXRAM.C中,读写外部RAM与读写普通的存储器方法相同。在main_NOR_FLASH.C中读FLASH与普通存储器没有区别,但写FLASH等操作需要发送相应的命名。为叙述方便,将RAML7前半部分存储器简称为A,后半部分简称为B,FLASH存储器简称为C,外部RAM存储器简称为D。主函数的主要功能为(1)初始化外部接口为16位的总线接口(InitXintf());(2)A初始化为00x3FF(InitRam(0));(3)擦除C(ChipErase();execute_150ms);(4)将A数据复制到C(写FLASH
6、)(FlashWrite(0,0,0x400));(5)将B清零(EraseRam(0x0));(6)将C数据复制到B(读FLASH)(FlashRead(0,0,0x400));图4 EXRAM及FLASH存储器分布简图四、源程序分析1延迟函数原型:void delay_loop(Uint32 x) 2擦除整个FLASH数据函数原型:Uint16 ChipErase(void)/ FLASH芯片地址接在ZONE6段,地址从0x100000开始/ FlashStart=0x100000/ 擦除整个FLASH,擦除后,每个单元均为0xFFFF/ 函数返回0:擦除完成(EraseOK=0)/ 函数
7、返回1:擦除超时退出(TimeOutErr=1)/ 函数返回3:擦除错误(EraseErr=3)3将RAML7的数据写到FLASH函数原型:Uint16FlashWrite(Uint32RamStart, Uint32 RomStart, Uint16Length)/ FlashStart=0x100000/ DSPRamStart =0x00F000/ RAML7起始偏移地址:RamStart/ FLASH起始偏移地址:RomStart/ 复制数据个数:Length/ 函数返回0:全部写到FLASH完成(WriteOK=0)/ 函数返回1:擦除超时退出(TimeOutErr=1)/ 函数返回
8、2:写数据错误(VerifyErr=2)4读FLASH的数据,复制到RAML7后半部分函数原型:voidFlashRead(Uint32RamStart, Uint32 RomStart,Uint16Length)/ FlashStart=0x100000/ DSPRamStart2 =0x00F800/ FLASH起始偏移地址:RomStart/ RAML7起始偏移地址:RamStart/ 复制数据个数:Length5初始化RAML7前半部分寄存器函数原型:voidInitRam(Uint16Start)/ DSPRamStart =0x00F000/ 从RAML7前半部分的偏地址:star
9、t,单元数为0x400/ 初始化值为00x3FF,单元个数为0x400。6擦除RAML7的后半部分数据函数原型:voidEraseRam(Uint16Start)/ DSPRamStart2 =0x00F800/ 从RAML7后半部分的偏地址:start,单元数为0x400/ 初始化值:全0,单元个数为0x400。7擦除RAML7的后半部分数据函数原型:voidRamRead(Uint16Start)/ 将RAML7的前半部分数据复制到RAML7的后半部分函数/ DSPRamStart =0x00F000/ DSPRamStart2 =0x00F800 (RAML7的后半部分)/ 将RAML7
10、的前半部分偏移地址为start,/ 复制单元数为0x4008main_NOR_FLASH.C中的主函数void main(void) InitSysCtrl(); DINT; InitPieCtrl(); IER = 0x0000; IFR = 0x0000; InitPieVectTable(); InitXintf(); / 初始化16位数据的外设总线 InitRam(0); ChipErase(); execute_150ms; FlashWrite(0,0,0x400); EraseRam(0x0); / RAML7后半部分从0xF800开始 FlashRead(0,0,0x400);
11、 / RAML7后半部分从0xF800开始五、实验预习完成预习报告。六、实验过程(一)新建实验项目1点击CCS软件的Project菜单下的New CCS Project选项,如图5所示,新建一个名为“ZQ28335_ExRAMand_NOR_FLASH”的空项目,有关参数设置如图6所示。点击Empty Project和Finish完成项目的新建。图5 新建一个项目图6 项目参数设置2. 将参考项目文件夹中的00ic_EXRAM.c文件重命名为“main_EXRAM.c”后,复制到这个项目文件夹中。00ic_NOR_FLASH.c文件重命名为“main_ NOR_FLASH.c”后,也复制到这个
12、项目文件夹中。并删除“main.c”文件。将参考项目文件夹“DSP2833x_common”和“DSP2833x_headers”也复制到这个项目文件夹中,并禁用一些不需要的文件。注: DSP2833x_common中已删去CMD文件夹。DSP2833x_headers已删去CMD文件夹中的“DSP2833x_Headers_BIOS.cmd”。4右击项目名称,选择Properties(属性),如图7所示,点击Include Options选项,添加DSP2833x_common和DSP2833x_headers中的头文件和源文件途径。如图4所示。图7添加文件途径(二)扩展RAM实验1禁用“m
13、ain_ NOR_FLASH.c”文件,方法是:在“main_ NOR_FLASH.c”文件上右击选择下的选项。如图8所示。在随后出现的界面上,点击和按钮即可。这时“main_ NOR_FLASH.c”文件不参与编译。图8禁用文件选项2点击,编译、下载程序,当程序运行到下图OK地方停止表示外部SRAM读写数据正常,否则停止在error处。图9执行main_EXRAM停止位置3此时点击View-Memory,打开内存观察窗口,输入外扩RAM起始地址0x20 0000,按回车键,即可看到从0x0000依次递增的数据。图10执行main_EXRAM结果数据(三)扩展FLASH实验1禁用“main_E
14、XRAM.c”文件,方法是同禁用“main_ NOR_FLASH.c”文件相同。2激活“main_ NOR_FLASH.c”。方法是:在“main_ NOR_FLASH.c”文件上右击选择下的选项。在随后出现的界面上,去掉和左侧的两个小沟,点击OK即可。3点击,编译、下载程序,在InitRam(0)这一行设置一个断点,点击运行程序到此。点击(单步执行),执行下面一行代码:InitRam(0);打开内存观察窗口,输入RAML7起始地址0xF000,按回车键,看数据是否从0x0000依次递增。图11执行InitRam(0)结果数据4点击,执行下面两行代码:ChipErase(); execute_
15、150ms;打开内存观察窗口,输入FLASH起始地址0x10 0000,按回车键,看FLASH擦除后的数据是否都是0xFFFF。图12执行ChipErase()结果数据5点击,执行下面一行代码:FlashWrite(0,0,0x400);打开内存观察窗口,输入FLASH起始地址0x10 0000,按回车键,看写到FLASH的数据是否从0x0000依次递增。若是则说明写FLASH数据完成。图13执行FlashWrite(0,0,0x400)结果数据6点击,执行下面一行代码:EraseRam(0x0); / RAML7后半部分从0xF800开始打开内存观察窗口,输入RAML7后半部分起始地址0xF
16、800,按回车键,看其数据是否都是0。若是则说明写清除RAML7后半部分数据完成。图14执行EraseRam(0x0)结果数据7点击,执行下面一行代码:FlashRead(0,0,0x400);打开内存观察窗口,输入RAML7后半部分起始地址0xF800,按回车键,看其数据是否从0x0000依次递增,若是则说明读FLASH数据正常,若否,说明函数有问题。图15执行FlashRead(0,0,0x400)结果数据七、课堂编程作业先备份程序,然后修改代码。依次完成以下操作:1、将数值0x1234写入到存储器区间0xF0000xF3FF中;2、将存储器区间0xF0000xF3FF中的值对应地复制到存
17、储器区间0x1000000x1003FF中;3、将存储器区间0x1000000x1003FF中的值对应地复制到存储器区间0x2000000x2003FF中;4、将存储器区间0x2000000x2003FF中的值对应地复制到存储器区间0xF0000xF3FF中;查看存储器区间0xF0000xF3FF的数值情况。八、完成实验报告实验二:键盘操作实验一、实验目的1. 理解3*3矩阵键盘的工作原理和扫描确认方式。2. 掌握F28335中GPIO相关寄存器的功能配置。二、实验设备1装有CCS5.2的计算机一台。2ZQ28335开发板、XDS100V2 USB仿真器、USB接口线及5V电源。三、实验原理1
18、3*3矩阵键盘的工作原理和扫描确认方式当键盘中按键数量较多时,为了减少对I/O口的占用,通常将按键排列成矩阵形式,也称为行列键盘。矩阵式键盘接口如图1所示,它由行线和列线组成,按键位于行、列的交叉点上。当按键按下时,其交点的行线和列线接通,相应的行线或列线的电平发生变化,DSP通过检测行或列线上的电平变化可以确定哪个按键被按下。图1 F28335键盘接口图在矩阵键盘的软件接口程序中,经常使用的按键识别方法有行列扫描法和线反转法,本项目采用列扫描法对矩阵键盘进行判别。图1中GPIO53、GPIO52、GPIO51为3根行线,作为键盘的输入口(工作于输入方式);GPIO50、GPIO49、 GPI
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DSP 实验 指导
限制150内