关于EEPROM的应用总结.doc_第1页
关于EEPROM的应用总结.doc_第2页
关于EEPROM的应用总结.doc_第3页
关于EEPROM的应用总结.doc_第4页
关于EEPROM的应用总结.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

关于EEPROM的应用总结关于EEPROM的应用总结当在程序运行的过程中你希望修改某个变量并且此变量的值在掉电以后不丢失,那么你就可以采用将变量数据写入EEPROM的方式来实现。什么是EEPROM,即Electrically Erasable ProgrammableRead_Only Memory首先它是一种存储器,并且可以通过高电压来进行反复擦写的存储器。具有掉电数据不丢失的特点。比如常用的24C系列,93C系列的器件。一般这种器件采用I2C的方式与单片机进行通讯,对于这种通讯方式及器件的应用另作总结。这里主要总结一下,STC12C5204AD芯片内部包含的EEPROM的应用方法。STC12C5201AD系列单片机内部集成了EEPROM是与程序空间分开的,利用ISP/IAP技术可将内部data flash当EEPROM,擦写10万次以上。EEPROM可分为若干个扇区,每个扇区包含512字节。使用时建议同一次修改的数据放在同一个扇区,不是同一次修改的数据放在不同的扇区,不一定要用满。数据存储器的擦除操作是按扇区进行的。在程序中可对EEPROM进行字节读写/字节编程/扇区擦除操作。在工作电压Vcc偏低时,建议不要进行EEPROM/IAP操作。以免发生数据错误。应用的步骤1、 声明与EEPROM相关的寄存器2、 编写EEPROM初始化函数3、 编写字节擦除函数4、 编写字节编程函数5、 编写字节读取函数6、 在需要读取EEPROM字节内容时直接调用字节读取函数即可7、 在需要进行写EEPROM字节时,先调用字节擦除函数,将字节内容擦除成FFH后,在调用字节编程函数,将数据写入到EEPROM的地址单元中。 与EEPROM应用相关的寄存器符号描述地址位地址及符号复位值IAP_DATAISP/IAP flash data registerC2H 1111 1111BIAP_ADDRHISP/IAP flash address highC3H 0000 0000BIAP_ADDRLISP/IAP flash address lowC4H IAP_CMDISP/IAP flash command registerC5H MS1MS0 IAP_TRIGISP/IAP flash command triggerC6H xxxxxxxxxBIAP_CONTRISP/IAP control registerC7HIAPENSWBSSWRSTCMD_FAIL WT2WT1WT00000X000BPCONPower control87HSOMDSMOD0LVDFPOFGF1GF0PDIDL00110000B1、IAP_DATA:ISP/IAP数据寄存器 ISP/IAP操作时的数据寄存器。ISP/IAP从FlASH读出的数据存放此处,向flash写的数据也需要放在此处。2、 IAP_ADDRH和IAP_ADDRL :IAP/ISP地址寄存器 3、 IAP_CMD:ISP/IAP命令寄存器 MS1MS0命令/操作 模式选择00Standby 待机模式,无ISP操作01从用户程序区对“data flash /EEprom区”进行字节读10从用户的应用程序区对“data flash/eeprom区”进行字节编写11从用户的应用程序区对“data flash/eeprom区”进行扇区擦除4、IAP_TRIG:ISP/IAP命令触发寄存器在IAPEN(IAP_CONTR.7)=1时,对IAPtrig先写入5AH,在写入A5H,ISPIAP命令才会生效ISPIAP操作完成后,IAP地址高8位寄存器IAP_ADDRH、IAP地址低8位寄存器IAP_ADDRL 和IAP命令寄存器IAP_CMD的内容不变。如果接下来要对下一个地址的数据进行IAP/ISP操作,需手动将该地址的高8位和低8位分别写入IAP_ADDRH和IAP_ADDRL寄存器。每次IAP操作时,都要对IAP_TRIG先写入5AH,再写入A5H,ISP/IAP命令才会生效。5、IAP_CONTR:ISPIAP控制寄存器SFR nameAddressBitB7B6B5B4B3B2B1B0IAP_CONTRC7HNameIAPENSWBSSWRSTCMD_FAIL_WT2WT1WT0IAPEN:ISP/IAP功能允许位:0:禁止IAP读/写/擦除 data flash /eeprom 1:允许IAP读/写/擦除 data flash /eepromSWBW:软件选择从用户应用程序区启动(送0),还是从系统ISP监控程序启动(送1)。 要与SWRST直接配合使用才可以实现SWRST:0:不操作;1:产生软件系统复位,硬件自动复位。CMD_FAIL:如果送了ISP/IAP命令,并对IAP_TRIG送5AH/A5H触发失败,则为1,需由软件清零。在用户应用程序区(AP区)软件复位并从用户应用程序区(AP区)开始执行程序。MOV IAP_CONTR,#00100000B;SWBS=0(选择AP区),SWRST=1(软复位)在用户应用程序区(AP区)软件复位并从系统ISP监控程序区开始执行程序MOV IAP_CONTR,#01100000B;SWBS=1(选择ISP区),SWRST=1(软复位)在系统ISP监控程序区软件复位并从用户应用程序区(AP区)开始执行程序MOV IAP_CONTR,#00100000B;SWBS=0(选择AP区)SWRST=1(软复位)在系统ISP监控程序区软件复位并从系统ISP监控程序区开始执行程序。MOV IAP_CONTR,#01100000B;SWBS=1(选择ISP区),SWRST=1(软复位)设置等待时间设置等待时间CPU等待时间(多少个CPU工作时钟)WT2WT1WT0Read/读(2个时钟)Program/编程(=55us)Sector erase扇区擦除=21usRecommended system clock跟等待参数对应的推荐系统时钟 1112个时钟55个时钟21012个时钟=1MHz 1102个时钟110个时钟42024个时钟=2MHz 1012个时钟165个时钟63036个时钟=3MHz 1002个时钟330个时钟126072个时钟=6MHz 0112个时钟660个时钟252144个时钟=12MHz 0102个时钟1100个时钟420240个时钟=20MHz 0012个时钟1320个时钟504288个时钟=24MHz 0002个时钟1760个时钟672348个时钟=30MHz 12c系列单片机内部EEPROM选型一览表型号字节数(eeprom)扇区数起始扇区首地址结束扇区末尾地址STC12C5201AD/PWM2K40000h07ffhSTC12C5202AD/PWM2k40000h07ffhSTC12C5203AD/PWM2k40000h07ffhSTC12C5204AD/PWM1k20000h03ffhSTC12C5205AD/PWM1k20000h03ffh 大建议:1、 同一次修改的数据放在同一个扇区中不是同一次修改的数据放在另外的扇区就不须读出保护。2、 如果一个扇区只用一个字节,那就是真正的EEPROM,STC单片机的Data flash 比外部EEPROM要快很多读一个字节/编程一个字节大概是2个时钟/55微秒。3、 如果在一个扇区中存放了大量的数据,某次只需要修改其中的一个字节或一部分字节时,则另外的不需要修改的数据须先读出放在STC单片机的RAM中,然后擦除整个扇区,再将需要保留的数据和需修改的数据按字节逐字节写回该扇区中(只有字节写命令,无连续字节写命令)。这时每个扇区使用的字节数是使用的越少越方便(不需要读出一大堆需保留数据)。常见问题:1、 IAP指令完成后,地址是否会自动” 加1”或“减1”?不会2、 送5A和A5触发之后下一次IAP命令是否还需要送5A和A5触发?是,一定要。STC12C5201AD/PWM单片机内部EEPROM地址表第一扇区第二扇区第三扇区第四扇区每个扇区512字节建议同一次修改的数据放在同一个扇区,不是同一次修改的数据放在不同的扇区,不必用满,当然也可以用满。起始地址结束地址起始地址结束地址起始地址结束地址起始地址结束地址0000h1FFH200H3FFH400H5FFH600H7FFH第五扇区第六扇区第七扇区第八扇区起始地址结束地址起始地址结束地址起始地址结束地址起始地址结束地址800H9FFHA00HBFFHC00HDFFHE00HFFFH第九扇区第十扇区第十一扇区第十二扇区起始地址结束地址起始地址结束地址起始地址结束地址起始地址结束地址1000H11FFH1200H13FFH1400H15FFH1600H17FFH 下面就举一个例子来说明一下EEPROM的应用 程序功能:三个按键分别是,开关、增大、减小。通过7段数码管将键值显示出来(1-9)。并将开关键关闭前的键值保存在EEPROM中,系统再次上电时显示上次关闭前的键值。 #include/头文件#include”intrins.h”/*宏定义*/#define uintunsigned int/用unsigned int 代替unsigned int#define ucharunsigned char/用uchar 替代unsigned char/*位定义*/sbit SW=P32;/开关sbit INC=P33;/增大按键sbit DEC=P34;/减小按键sbitDATA=P15;/595数据流sbitSHIFT=P16;/595移位寄存器sbitSTORAGE=P17;/595存储寄存器sbitBEEP=P14;/蜂鸣器/数码管显示代码uchar codenum=0x01,0xf3,0x89,0xa1,0xb2,0xa4,0x84,0xf1,0x80,0x20 ; /0-9代码 /变量声明bit kai=0,biaozhi=0;uchar MA,dat;/*定义与EEPROM相关的特殊功能寄存器*/sfrIAP_DATA=0XC2;/FLASH data registersfrIAP_ADDRH=0XC3;/FLASH address highsfrIAP_ADDRL=0XC4;/FLASH address lowsfrIAP_CMD=0XC5;/FLASH command registersfrIAP_TRIG=0XC6;/FLSH command triggersfrIAP_CONTR=0XC7;/flash control register/*定义IAP/ISP/EEPROM命令*/#define CMD_IDLE0/stand_by#define CMD_READ1/byte_read#defineCMD_PROGRAM 2/byte_program#defineCMD_ERASE 3/sector_erase/*定义与EEPROM相关的寄存器 */#defineENABLE_IAP 0X80 /if sysclk30MHz/#defineENABLE_IAP 0X81 /if sysclk24MHz/#defineENABLE_IAP 0X82 /if sysclk20MHz#defineENABLE_IAP 0X83 /if sysclk12MHz/定义控制寄存器/#defineENABLE_IAP 0X84 /if sysclk6MHz/#defineENABLE_IAP 0X85 /if sysclk3MHz/#define ENABLE_IAP 0X86 /if sysclk2MHz/#defineENABLE_IAP 0X87 /if sysclk8; IAP_TRIG=0X5A; IAP_TRIG=0XA5; _nop_(); dat=IAP_DATA; iapidle(); return dat; /*写一个字节的IAP/ISP/EEPROM空间 输入: 字节地址 要写入的数据Void iapprogrambyte(uint addr,uchar dat)IAP_CONTR=ENABLE_IAP;/打开IAP功能并设置等待时间IAP_CMD=CMD_PROGRAM;/设置写命令IAP_ADDRL=addr;/设置字节地址低8位IAP_ADDRH=addr8;/设置字节地址的高8位IAP_DATA=dat;/写内容IAP_TRIG=0X5A;/发送触发命令1IAP_TRIG=0XA5;/发送触发命令2_nop_();/等待直到写操作完成Iapidle();/*扇区擦除输入:地址Void iaperasesector(uint addr) IAP_CONTR=ENABLE_IAP;/开IAP功能并设置等待时间 IAP_CMD=CMD_ERASE;/设置擦除命令 IAP_ADDRL=addr; IAP_ADDRH=addr8; IAP_TRIG=0x5a; IAP_TRIG=0XA5;_nop_();Iapidle();/*写595函数*/void write_595(uchar x) uchar j; for(j=0;j8;j+) x=x1; SHIFT=0; _nop_(); _nop_(); _nop_(); DATA=CY; SHIFT=1; _nop_(); _nop_(); _nop_(); SHIFT=0; /*595输出函数函数*/void out_595(void) STORAGE=0; _nop_(); _nop_(); STORAGE=1; _nop_(); _nop_(); STORAGE=0; /*软件延时 */void delay(uchar t) uchar x;while(t-) for(x=0;x250;x+) _nop_(); _nop_(); _nop_(); _nop_(); /*按键检测函数*/void keycheck(void) if(SW=0)/判断开关按键是否按下 de

温馨提示

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

评论

0/150

提交评论