下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、V1.0 Mar 27, 200619, InnovationRoad Science Park Hsin-Chu 300 R.O.C.: 886-3-578-6005 Fax: 886-3-578-4418 Web:SPMC75 基础例程FLASH 操作保留对此文件修改之权利且不另行通知。可靠之信息,但并不保证本文件中绝无错误。请于向所提供之信息相信为正确且提出订单前,自行确定所使用之相关技术文件及规格为之版本。若因贵公司使用本公司之文件或产品,而涉及第三人之专利或著作权等智能权之应用及配合时,则应由贵公司负责取得同意及,本公司仅单纯贩售产品,上述关于同意及,非属本公司应为保证之责任。又系统
2、及飞航等相关设备。之正式,本公司之所有产品不得使用于医疗器材,维持生命 Sunplus Technology Co.,.PAGE 1V1.0 Mar 27, 2006页概述4例子介绍4 硬件连接5 程序设计5 1.2.3.4. Sunplus Technology Co.,.PAGE 2V1.0 Mar 27, 2006目录修订 Sunplus Technology Co.,.PAGE 3V1.0 Mar 27, 2006版本日期作者修订内容V1.02006/3/27Peixing初始版本概述1.SPMC75 系列单片机内嵌 32K FLASH器。32K 的 FLASH 共分为 16 页,每页
3、2K 字,每页可再分为 8 块,每块 256 字。其中只有位于 0 xF0000XFF7F 区域内的页在运行模式下可设置为只读或可读可写,其他页不能设置为写模式。本例通过 C 语言和汇编语言两种方式让大家了解如何对 SPMC75 单片机的 FLASH 进行擦除、单字写入、多字写入等操作。例子介绍2.定义一个错误标志单元,并将错误标志单元初始化为 0 x00ff。将 FLASH 位于0 xF0000XFF7F 区域内的 FLASH 中的一块(256 个字的空间)擦除(实现 FLASH 的擦除功能),然后对擦除的块进行校验,看是否有擦除错误的单元,若有擦除错误的单元,则错误标志单元第 0 位被清
4、0;然后利用单字写入方式向刚擦除完的 FLASH块里写入 10 个数(实现单字写入功能),而后写入的 10 个数据进行校验,若 10 个数据中有写入错误的,则错误标志单元第 1 位被清 0;然后通过多字写入模式向刚擦除完的 FLASH 块里写入 30 个数据(实现多字写入功能),而后对写入的 30 个数据进行校验,若 30 个数据中有写入错误的,则错误标志单元第 2 位被清 0。最后将错误标志单元送到 IOD 口,通过 IOD07口的 LED 显示出来,通过查看 LED 的点亮情况,就可以看出各功能的实现情况。 Sunplus Technology Co.,.PAGE 4V1.0 Mar 27
5、, 2006FLASH 操作硬件连接3.如图 1,将 JP8 短接。图 1:LED 显示原理图程序设计4.(1)实现方法:IOD 初始化为非反向输出,设一个型数组 i_str_W40,将其初始化。定义一个错误标志单元 ui_Err 并将其初始化为 0 x00ff 。将 FLASH 位于0 xF0000XFF7F 区域内的 FLASH 中的第一块(256 个字的空间)擦除(实现 FLASH的擦除功能),然后对擦除的块进行校验,看是否有擦除错误的单元,若有擦除错误的单元,则错误标志单元第 0 位被清 0(将错误标志单元 ui_Err 与 0 x e 相与);然后利用单字写入方式向刚擦除完的 FLA
6、SH 块里写入 10 个数据(i_str_W09,实现单字写入功能),而后写入的 10 个数据进行校验,若 10 个数据中有写入错误的,则错误标志单元第 1 位被清 0(将错误标志单元 ui_Err 与 0 x d 相与);然后通过多字写入模式向刚擦除完的 FLASH 块里写入 30 个数据(i_str_W1039,实现多字写入功能),而后对写入的 30 个数据进行校验,若 30 个数据中有写入错误的,则错误标志单元第 2位被清 0(将错误标志单元 ui_Err 与 0 x b 相与)。最后将错误标志单元 ui_Err 送到 IOD口,通过 IOD07口的 LED 显示出来,通过查看 LED
7、的点亮情况,就可以看出各功能的实现情况。 Sunplus Technology Co.,.PAGE 5V1.0 Mar 27, 2006R38470D7 LEDR39470D8 LEDIOD012IOD412R40470D9 LEDR41470D10 LEDIOD112IOD512R45470D11 LEDR46470D12 LEDIOD212IOD612R47330D13 LEDR48470D14 LEDIOD312IOD712JP82LED1LED(2)程序流程图:开始系统初始化 ui_Err = 0 xff无擦除校验-有错?有无单字写入校验-有错?有无多字写入校验-有错?有while(1
8、); Sunplus Technology Co.,.PAGE 6V1.0 Mar 27, 2006P_IOD_Buffer-W= ui_Errui_Err第20FLASH写功能多字写入方式写入30个数据ui_Err第10单字字写入方式写入写入10个数据ui_Err第00将FLASH第14页第一块擦除FLASH写使能(3)程序代码:C 语言格式 Sunplus Technology Co.,.PAGE 7V1.0 Mar 27, 2006/=/工程名称: Exa09_Flash_C/编者:/功能描述: Flash 模式设置、擦除操作、写单字操作/以及写多字操作的子程序段/组成文件: main.
9、c/spmc75f2313a.h, unspmacro.h/硬件连接: 新版评估套件/完成日期: 2006-4-12/=#include spmc75f2313a.h #include unspmacro.h#defi R P_IOB_Buffer-B.bit8 #define SRCLK P_IOB_Buffer-B.bit9 #define RCLK P_IOB_Buffer-B.bit10/=/语法格式: void Flash_RW_Disable(void)/ 功能描述: FLASH 区写/参数:无/返回值:无/=void Flash_RW_Disable(void)P_Flash_R
10、W-W = 0 x5a5a;/第一次写入控制命令 P_Flash_RW-W = 0 x4000;/第二次写入设置字,只读/= Sunplus Technology Co.,.PAGE 8V1.0 Mar 27, 2006/语法格式: void Flash_RW_Enable(void)/功能描述: FLASH区写使能/参数:无/返回值:无/=void Flash_RW_Enable(void)P_Flash_RW-W = 0 x5a5a;/第一次写入控制命令 P_Flash_RW-W = 0 x0000;/第二次写入设置字,读写/=/语法格式: void FlashErase(unsigned
11、*sectorAddress)/功能描述: 擦除一块 flash/参数:sectorAddress-要擦除的块中的任意一个地址/返回值:无/注意:每擦除一次硬件会进行延时 20ms 以上/=void FlashErase(unsigned*sectorAddress)P_Flash_Cmd-W = 0 xAAAA; /写入控制命令 P_Flash_Cmd-W = 0 x5511;/写入擦除命令*sectorAddress = 0;/向要擦除块中的 sectorAddress 地址写入 0/=/语法格式: void FlashWrite(unsigned*sectorAddress,word)/
12、功能描述: 向指定地址写入指定的数/参数:sectorAddress-要写入数据的块地址,word-要写入的数据/返回值:无/注意:写入前保证对应地址已擦除/=void FlashWriteWord(unsigned*sectorAddress,word)P_Flash_Cmd-W = 0 xAAAA;/写入控制命令P_Flash_Cmd-W = 0 x5533;/写入单字编程命令*sectorAddress = word;/向 sectorAddress 地址写入数据 word/=/语法格式:void FlashWrite(unsigned*sectorAddress,*Pword,unsi
13、gned char n)/功能描述:向指定地址写入多个数据/参数:sectorAddress-要写入数据的块地址,Pword-要写入的数据的首地址/n-要写入数据的个数/返回值:无/注意:写入前保证对应地址已擦除/=void FlashWritePage(unsigned*sectorAddress,*Pword,unsigned char n)nt i;P_Flash_Cmd-W = 0 xAAAA;/写入控制命令for(i=0;iW = 0 x5544;/写入多字编程命令*(sectorAddress + i) = *(Pword + i); /将数据写入目标地址P_Flash_Cmd-W
14、 = 0 xF;/结束连续字写入操作/=/语法格式: void LED_Display(unsignedcode) Sunplus Technology Co.,.PAGE 9V1.0 Mar 27, 2006 Sunplus Technology Co.,.PAGE 10V1.0 Mar 27, 2006/功能描述: 驱动一位数码管显示一个数据/参数:code 高 4 位显为示位码,code 低 8 位为显示段码/返回值:无/=void LED_Display(unsignedcode)unsignedi; unsigned k;k = 0 x1000;/初始化要显示的位的标志 for(i=
15、0;i= 1;/标志位右移一位RCLK = 1;/将数据显示 RCLK = 0;/=/主函数/=nt main(void)i_str_W40, *ui_Addr;unsignedi,ui_Err;ui_Err = 0 x0000;ui_Addr = (unsigned*)0 xf000;/地址指针初始化,指向写入数据的首地址P_IOB_Dir-W |= 0 x0700;/IOB810设置为输出P_IOB_Attrib-W |= 0 x0700;/IOB810设置为非反向P_IOB_Buffer-W &= 0 xf8ff;/IOB810输出为低for(i=0;i=39;i+)i_str_Wi =
16、 i;/要写入 FLASH 的数组初始化,256 个数据Flash_RW_Enable();/FLASH 写使能FlashErase(ui_Addr);/将 FLASH 第 14 页第一块擦除/校验是否块中所有数据都被正确擦除for(i=0;i=255;i+)if(*(ui_Addr+i)!=0 x f)ui_Err |= 0 x0001;/如果有错,则 ui_Err 第 00/单字写入 10 个数据for(i=0;i=9;i+)FlashWriteWord(ui_Addr+i),i_str_Wi);/单字写入 Sunplus Technology Co.,.PAGE 11V1.0 Mar 2
17、7, 2006汇编语言格式 Sunplus Technology Co.,.PAGE 12V1.0 Mar 27, 2006/=/工程名称: Exa09_Flash_ASM/编者:/功能描述: Flash 模式设置、擦除操作、写单字操作/校验单字写入的 10 个数据for(i=0;i=9;i+)if(*(ui_Addr+i)!= i_str_Wi)ui_Err |= 0 x0002;/如果有错,则 ui_Err 第 10/向擦除的块剩余空间写入 246 个数据FlashWritePage(ui_Addr+i),&i_str_W10,30);Flash_RW_Disable();/FLASH 写
18、功能/校验多字写入方式写入的 246 个数据for(i=10;i=39;i+)if( *(ui_Addr+i)!= i_str_Wi)ui_Err |= 0 x0004;/如果有错,则 ui_Err 第 20ui_Err |= 0 x0fc0;/显示看是否有错 LED_Display(ui_Err);/调用 LED 显示子程序 while(1);/以及写多字操作的子程序段/main.asm组成文件:/spmc75f2413a.inc/SPMC75F2413A 的新版 EVM 板硬件连接:/完成日期:2006-3-17/=/=.INCLUDE spmc75f2413a.inc.RAM.VAR _
19、ERR.CODE/=/主函数/=.PUBLIC _main_main:r1 = 0 x00ffP_IOD_Dir = r1/IOD07设置为输出r1 = 0 x00ffP_IOD_Attrib = r1/IOD07设置为非反向r1 = 0 x0000P_IOD_Buffer = r1/IOD07输出为 0r5 = 0 x00ff/出错标志位初始化call _Flash_RW_Enable/FLASH 写使能设置r1 = 0 xf000/擦除块的首地址call _FlashErase/擦除第 14 页第一块 Sunplus Technology Co.,.PAGE 13V1.0 Mar 27,
20、2006r1 = 0 xf000/擦除块的首地址r3 = 256/读出的数据个数寄存器?_VerifyErase:/擦除块中数据读出校验r4 = r1/读数据cmp r4,0 xf/判断是否擦除jz ?_ReadErase/对了则跳转r5 &= 0 x e/错了则错误标志位第 00?_ReadErase:/没有写错r1 += 1/地址加 1r3 -= 1/读出数据计数器减 1jnz ?_VerifyErase/256 个数据没读完则跳转r1 = 0 xf000/要写入数据的 Flash 首地址r2 = 0/要写入的数据r3 = 10/写入数据个数计数器?_WriteWord:/单字写入call
21、 _FlashWriteWord/将 r2 里面的数据写入 r1 地址中r1 += 1/地址加 1r2 += 1/数据加 1r3 -= 1/写入数据个数计数器减 1jnz ?_WriteWord/写完 10 个数据了吗r1 = 0 xf000/写入数据的块的首地址r2 = 0/校验数据初始化r3 = 10/读出的数据个数寄存器?_VerifyWord:/单字写入的数据读出校验r4 = r1/读数据 Sunplus Technology Co.,.PAGE 14V1.0 Mar 27, 2006cmp r4,r2/判断是否写错jz ?_ReadWord/写对了则跳转r5 &= 0 x d/写错了
22、则错误标志第 10?_ReadWord:/没有写错r1 += 1/地址加 1r2 += 1/数据加 1r3 -= 1/读出数据计数器减 1jnz ?_VerifyWord/单字写入的 10 个数据没读完r1 = 0 xf00a/多字写入的首地址r2 = 10/写入数据初始化r3 = 30/要写入的数据个数寄存器call _FlashWritePage/多字写入call _Flash_RW_Disable/Flash 些功能r1 = 0 xf00a/多字写入的数据读出校验r2 = 10r3 = 30?_VerifyPage:r4 = r1cmp r4,r2jz ?_Reager5 &= 0 x
23、b/错误则错误标志第 20?_Reage:r1 += 1r2 += 1r3 -= 1jnz ?_VerifyPage Sunplus Technology Co.,.PAGE 15V1.0 Mar 27, 2006P_IOD_Buffer = r5/显示错误状态,没有错误则 LED?_Loop:nopjmp ?_Loop/=/汇编格式:_Flash_RW_Disable/实现功能:FLASH 卸功能/参数:无/出口参数:无/破坏寄存器:无/=.PUBLIC _Flash_RW_Disable_Flash_RW_Disable:push r1 to spr1 = 0 x5a5aP_Flash_R
24、W = r1/第一次写入控制命令r1 = 0 x4000P_Flash_RW = r1/第二次写入设置字,只读pop r1 from spretf/=/汇编格式:_Flash_RW_Disable/实现功能:FLASH 卸功能使能/参数:无 Sunplus Technology Co.,.PAGE 16V1.0 Mar 27, 2006/ 出口参数: 无/ 破坏寄存器:无/=.PUBLIC _Flash_RW_Enable_Flash_RW_Enable:push r1 to spr1 = 0 x5a5aP_Flash_RW = r1/第一次写入控制命令r1 = 0 x0000P_Flash_RW = r1/第二次写入设置字,读写pop r1 from sp retf/=/_FlashErase语法格式:/功能描述:擦除一块 flash/r1-要擦除的块中的任意一个地址参数:/返回值:无/出口参数:无/破坏寄存器:无/=.PUBLIC _FlashErase_FlashErase:push r2 to spr2 = 0 xAAAAP_Flash_Cmd = r2/写入控制命令r2 = 0 x5511 Sunplus Technology Co.,.PAGE 17V1.0 Mar 27, 2006P_Flash_Cmd = r2/写入擦除命令r1 = r1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025南平市消防救援支队招聘消防文员2人考试备考题库及答案解析
- 职场拔河比赛活动方案
- 2026年恢复林业生产条件方案范文
- 南昌市劳动保障事务代理中心招聘6名项目外包服务人员备考考试试题及答案解析
- 深度解析(2026)《GBT 25898-2010深度解析(2026)《仪器化纳米压入试验方法 薄膜的压入硬度和弹性模量》》
- 2025青海物产爆破技术服务有限公司招聘31人备考笔试题库及答案解析
- 深度解析(2026)《GBT 25799-2010纺织染整助剂名词术语》(2026年)深度解析
- 2025重庆科技大学招聘14人备考考试试题及答案解析
- 深度解析(2026)GBT 25690-2010土方机械 升运式铲运机 容量标定
- 深度解析(2026)《GBT 25654-2010手持电子产品嵌入式软件API》
- 手卫生执行率PDCA案例实施分析
- 病理学考试练习题库及答案
- 2025年新高考1卷(新课标Ⅰ卷)语文试卷
- 2025-2030中国女鞋行业市场现状供需分析及投资评估规划分析研究报告
- 2025至2030中国物理气相沉积(PVD)设备行业行情监测与发展动向追踪报告
- 2025年中国EP级蓖麻油行业市场前景预测及投资价值评估分析报告
- 散酒采购合同协议
- 工控网管理制度
- 大学英语四级考试2024年12月真题(第一套)Part II Listening Comprehension
- 测量年终工作总结
- 第1课“北京双奥”荣耀中华 课件 2024-2025学年人教版(2024)初中体育与健康七年级全一册
评论
0/150
提交评论