spmc75变频评估套件配套例子_第1页
spmc75变频评估套件配套例子_第2页
spmc75变频评估套件配套例子_第3页
spmc75变频评估套件配套例子_第4页
spmc75变频评估套件配套例子_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、V1.0 Apr 29, 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 Apr 29, 2006页概述4例子介绍4 硬件连接4 程序设计5 1.2.3.4. Sunplus Technology Co.,.PAGE 2V1.0 Apr 29, 2006目录修订 Sunplus Technology Co.,.PAGE 3V1.0 Apr 29, 2006版本日期作者修订内容V1.02006/4/29Peixing初始版本概述1.SPMC75 系列单片机内嵌 32K FLASH器。32K 的 FLASH 共分为 16 页,每页

3、2K 字,每页可再分为 8 块,每块 256 字。其中只有位于 0 xF0000XFF7F 区域内的页在运行模式下可设置为只读或可读可写,其他页不能设置为写模式。本例通过 C 语言和汇编语言两种方式让大家了解如何对 SPMC75 单片机的 FLASH 进行擦除、单字写入、多字写入等操作。例子介绍2.定义一个错误标志单元,并将错误标志单元初始化为 0 x0000。将 FLASH 位于0 xF0000XFF7F 区域内的 FLASH 中的一块(256 个字的空间)擦除(实现 FLASH 的擦除功能),然后对擦除的块进行校验,看是否有擦除错误的单元,若有擦除错误的单元,则错误标志单元第 0 位被置

4、1;然后利用单字写入方式向刚擦除完的 FLASH块里写入 10 个数(实现单字写入功能),而后写入的 10 个数据进行校验,若 10 个数据中有写入错误的,则错误标志单元第 1 位被置 1;然后通过多字写入模式向刚擦除完的 FLASH 块里写入 30 个数据(实现多字写入功能),而后对写入的 30 个数据进行校验,若 30 个数据中有写入错误的,则错误标志单元第 2 位被置 1。最后将错误标志单元数据送到主控板的 LED 显示,通过查看 LED 的点亮情况,就可以看出各功能的实现情况。 Sunplus Technology Co.,.PAGE 4V1.0 Apr 29, 2006FLASH 操

5、作硬件连接3.程序设计4.(1) 实现方法: 定义一个错误标志单元,并将错误标志单元初始化为 0 x0000。将 FLASH 位于 0 xF0000XFF7F 区域内的 FLASH 中的一块(256 个字的空间)擦除(实现 FLASH 的擦除功能),然后对擦除的块进行校验,看是否有擦除错误的单元,若有擦除错误的单元,则错误标志单元第 0 位被置 1;然后利用单字写入方式向刚擦除完的 FLASH 块里写入 10 个数(实现单字写入功能),而后写入的 10 个数据进行校验,若 10 个数据中有写入错误的,则错误标志单元第 1 位被置 1;然后通过多字写入模式向刚擦除完的 FLASH 块里写入 30

6、 个数据(实现多字写入功能),而后对写入的 30个数据进行校验,若 30 个数据中有写入错误的,则错误标志单元第 2 位被置 1。最后将 Sunplus Technology Co.,.PAGE 5V1.0 Apr 29, 2006IC1U1SER14 SERQA 15R2220 LED_A 11 ADIG1 12 1SRCLKQB 1R3220LED_B7 B2SRCLKQC 2R4220 LED_C 4 CDIG2 9 10 SRCLRQD 3R5220 LED_D 2 DRCLKQE 4R7220LED_E1 EDIG3 83RCLKQF 5R8220 LED_F 10 F 13 GQG

7、 6R9220 LED_G 5 GDIG4 64QH 7R10 220 LED_H 3 DP+5VQH 9S_DA DPY -7SEGX474HC595R14 4.7KR15 4.7K+5V+5VR16 4.7K1R17 4.7K1LED_CS1Q1LED_CS2Q2PNPPNP3132R18 4.7KR19 4.7K+5V+5VR20 4.7K1R21 4.7K1LED_CS3Q3LED_CS4Q4PNPPNP3334D2D3D4ARUNErr12LED_A12LED_C12LED_E2LED_FIC4R24 4.7KS_DA14 SERQA 15 LED_CS1+5V1 LED_CS2SR

8、CLK11QB 2 LED_CS3 10 SRCLKQC 3 LED_CS4R25 4.7K1SRCLRQD 4LED_CS5Q5RCLK12QE 5PNP 13 RCLKQF 65GQG 7VCC3+5VQHQH974HC595+5VDisplay25D5Hz12LED_BD6 SET12LED_DD7 V12222错误标志单元数据送到主控板的 LED 显示,通过查看 LED 的点亮情况,就可以看出各功能的实现情况。(2)程序流程图:开始系统初始化 ui_Err = 0 xff无擦除校验-有错?有无单字写入校验-有错?有无多字写入校验-有错?有while(1); Sunplus Techno

9、logy Co.,.PAGE 6V1.0 Apr 29, 2006显示错误状态ui_Err第2位置1FLASH写功能多字写入方式写入30个数据ui_Err第1位置1单字字写入方式写入写入10个数据ui_Err第0位置1将FLASH第14页第一块擦除FLASH写使能(3)程序代码:C 语言格式 Sunplus Technology Co.,.PAGE 7V1.0 Apr 29, 2006/=/工程名称: Exa09_Flash_C/编者:/功能描述: Flash 模式设置、擦除操作、写单字操作/以及写多字操作的子程序段/组成文件: main.c/Spmc75_regs.h, unspmacro.

10、h/硬件连接: 新版评估套件/完成日期: 2006-4-29/=#include Spmc75_regs.h #include unspmacro.h/=/语法格式: void Flash_RW_Disable(void)/功能描述: FLASH区写/返回值:无/=void Flash_RW_Disable(void)P_Flash_RW-W = 0 x5a5a;/第一次写入控制命令 P_Flash_RW-W = 0 x4000;/第二次写入设置字,只读/=/语法格式: void Flash_RW_Enable(void)/功能描述: FLASH区写使能/返回值:无/=void Flash_R

11、W_Enable(void)P_Flash_RW-W = 0 x5a5a;/第一次写入控制命令P_Flash_RW-W = 0 x0000;/第二次写入设置字,读写/=/void FlashErase(unsigned*sectorAddress)语法格式:/擦除一块 flash功能描述:/参数:sectorAddress-要擦除的块中的任意一个地址/返回值:无/注意:每擦除一次要延时 20ms 以上,才能再次对该块进行操作/本函数不包括延时,延时程序需另行编写/=void FlashErase(unsigned*sectorAddress)P_Flash_CMD-W = 0 xAAAA;/写

12、入控制命令P_Flash_CMD-W = 0 x5511;/写入擦除命令*sectorAddress = 0;/向要擦除块中的 sectorAddress 地址写入 0/=/语法格式:void FlashWrite(unsigned*sectorAddress,word)/功能描述:向指定地址写入指定的数/参数:sectorAddress-要写入数据的块地址,word-要写入的数据/返回值:无/注意:写入前保证对应地址已擦除/=void FlashWriteWord(unsigned*sectorAddress,word) Sunplus Technology Co.,.PAGE 8V1.0

13、Apr 29, 2006P_Flash_CMD-W = 0 xAAAA;/写入控制命令P_Flash_CMD-W = 0 x5533;/写入单字编程命令*sectorAddress = word;/向 sectorAddress 地址写入数据 word/=/语法格式:void FlashWrite(unsigned*sectorAddress,*Pword,unsigned char n)/功能描述:向指定地址写入多个数据/sectorAddress-要写入数据的块地址,Pword-要写入的数据的首地址参数:/n-要写入数据的个数/返回值:无/注意:写入前保证对应地址已擦除/=void Fla

14、shWritePage(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 = 0 xF;/结束连续字写入操作/=/主函数/=nt main(void)i_str_W255; Sunplus Technology Co.,.PAGE 9V1.0 Apr 29, 2006汇编语言格式 Sunplus Tech

15、nology Co.,.PAGE 10V1.0 Apr 29, 2006/=/工程名称: Exa09_Flash_ASM/编者:/功能描述: Flash 模式设置、擦除操作、写单字操作/以及写多字操作的子程序段/组成文件: main.asm/spmc75f2313a.inc/硬件连接: 新版评估套件/完成日期: 2006-4-29/=/=.INCLUDE spmc75f2313a.inc.CODE/=/主函数unsignedi,ui_delay;for(i=0;i=254;i+)i_str_Wi = i;/要写入 FLASH 的数组初始化,255 个数据Flash_RW_Enable();/F

16、LASH 写使能FlashErase(0 xf000);/将 FLASH 第 14 页第一块擦除 for(ui_delay=0;ui_delay=5000;ui_delay+); /延时 FlashWritePage(0 xf000,i_str_W,255); /将擦除的块写入 255 个数据FlashWriteWord(0 xf0ff,255);/ 向擦 除的块的最后一个单元写 入255(0 x00ff)Flash_RW_Disable();/FLASH 写功能while(1); Sunplus Technology Co.,.PAGE 11V1.0 Apr 29, 2006/=.PUBLI

17、C _main_main:r1 = 0 x0700P_IOB_Dir = r1/IOB 口设置为输出 P_IOB_Attrib = r1 /IOB 口设置为非反向 r1 = 0 x0000P_IOB_Buffer = r1/IOB 口输出为低r5 = 0 x0000/出错标志位初始化 call _Flash_RW_Enable /FLASH 写使能设置r1 = 0 xf000/擦除块的首地址call _FlashErase/擦除第 14 页第一块r1 = 0 xf000/擦除块的首地址r3 = 256/读出的数据个数寄存器?_VerifyErase:/擦除块中数据读出校验 r4 = r1/读数

18、据cmp r4,0 x f/判断是否擦除jz ?_ReadErase/对了则跳转r5 |= 0 x0001/错了则错误标志位第 00?_ReadErase: /没有写错 r1 += 1/地址加 1r3 -= 1/读出数据计数器减 1jnz ?_VerifyErase/256 个数据没读完则跳转r1 = 0 xf000/要写入数据的 Flash 首地址r2 = 0/要写入的数据r3 = 10/写入数据个数计数器?_WriteWord:/单字写入call _FlashWriteWord/将 r2 里面的数据写入 r1 地址中r1 += 1/地址加 1r2 += 1/数据加 1r3 -= 1/写入数

19、据个数计数器减 1jnz ?_WriteWord/写完 10 个数据了吗r1 = 0 xf000/写入数据的块的首地址r2 = 0/校验数据初始化r3 = 10/读出的数据个数寄存器?_VerifyWord:/单字写入的数据读出校验r4 = r1/读数据cmp r4,r2/判断是否写错jz ?_ReadWord/写对了则跳转r5 |= 0 x0002/写错了则错误标志第 10?_ReadWord:/没有写错r1 += 1/地址加 1r2 += 1/数据加 1r3 -= 1/读出数据计数器减 1jnz ?_VerifyWord/单字写入的 10 个数据没读完r1 = 0 xf00a/多字写入的首

20、地址r2 = 10/写入数据初始化r3 = 30/要写入的数据个数寄存器call _FlashWritePage/多字写入 Sunplus Technology Co.,.PAGE 12V1.0 Apr 29, 2006 Sunplus Technology Co.,.PAGE 13V1.0 Apr 29, 2006call _Flash_RW_Disable/Flash 些功能r1 = 0 xf00a/多字写入的数据读出校验 r2 = 10r3 = 30?_VerifyPage:r4 = r1cmp r4,r2jz ?_Reager5 |= 0 x0004/错误则错误标志第 20?_Reag

21、e: r1 += 1r2 += 1r3 -= 1jnz ?_VerifyPager1 = r5r1 |= 0 x0fc0call _LED_Display/显示错误状态,没有错误则 LED?_Loop:nopjmp ?_Loop/=/ 汇编格式: _Flash_RW_Disable/ 实现功能: FLASH 卸功能/参数: 无/ 出口参数: 无/ 破坏寄存器:无/=.PUBLIC _Flash_RW_Disable_Flash_RW_Disable:push r1 to spr1 = 0 x5a5aP_Flash_RW = r1/第一次写入控制命令r1 = 0 x4000P_Flash_RW

22、= r1/第二次写入设置字,只读pop r1 from spretf/=/汇编格式:_Flash_RW_Disable/实现功能:FLASH 卸功能使能/参数:无/出口参数:无/破坏寄存器:无/=.PUBLIC _Flash_RW_Enable_Flash_RW_Enable:push r1 to spr1 = 0 x5a5aP_Flash_RW = r1/第一次写入控制命令r1 = 0 x0000 Sunplus Technology Co.,.PAGE 14V1.0 Apr 29, 2006P_Flash_RW = r1/第二次写入设置字,读写pop r1 from spretf/=/语法

23、格式:_FlashErase/擦除一块 flash功能描述:/参数:r1-要擦除的块中的任意一个地址/返回值:无/出口参数:无/破坏寄存器:无/=.PUBLIC _FlashErase_FlashErase:push r2 to spr2 = 0 xAAAAP_Flash_Cmd = r2/写入控制命令r2 = 0 x5511P_Flash_Cmd = r2/写入擦除命令r2 = 0 x fr1 = r1/向要擦除块中任一地址地址写入 0pop r2 from spretf/=/_FlashWrite语法格式:/功能描述:向指定地址写入指定的数/参数:r1-要写入数据的地址,r2-要写入的数据

24、/返回值:无 Sunplus Technology Co.,.PAGE 15V1.0 Apr 29, 2006/破坏寄存器:无/注意:写入前保证对应地址已擦除/=.PUBLIC _FlashWriteWord_FlashWriteWord:push r4 to spr4 = 0 xAAAAP_Flash_Cmd = r4/写入控制命令r4 = 0 x5533P_Flash_Cmd = r4/写入单字编程命令r1 = r2/向 sectorAddress 地址写入数据 wordpop r4 from spretf/=/语法格式:_FlashWrite/功能描述:向指定地址写入多个数据/r1-要写入的数据块的首地址,参数:/r2-要连续写入数据的初值/r3-要写入数据的个数/返回值:无/破坏寄存器:无/注意:写入前保证对应地址已擦除/=.PUBLIC _FlashWritePage_FlashWritePage: push r4 to sp Sunplus Technology Co.,.PAGE 16V1.0 Apr 29, 2006r4

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论