第十二章 EEPROM
刘杨
EEPROM简介
EEPROM(Electrically Erasable Programmable Read-Only Memory),电可擦可编程只读存储器是一种掉电后数据不会丢失的存储芯片。DRAM(动态随机存取存储器)断电后存在其中的数据会丢失,而EEPROM断电后其中数据不会丢失。相比EPROM,EEPROM不需要紫外线照射,也不需要取下,就可以用特定的电压,来擦除芯片上的信息,以便写入新的数据。
其有四种工作模式:读取模式、写入模式、擦除模式、校验模式。低电压(+5V)供电;编程写入时通过Vpp(+25V)获得编程电压,通过PGM编程脉冲写入数据;擦除时只需使用Vpp高电压,不需要紫外线,便可擦除指定地址的内容;为保证编程写入正确,在每写入一块数据后,都要进行类似于读取的校验步骤,若错误就重新写入。
STC89C52RC内部EEPROM
传统的单片机系统中,运行时的数据都存在RAM中,掉电后数据无法保存,需要在片外扩展存储器,单片机与存储器之间通过IIC或SPI等接口来进行数据通信。在STC单片机中内置了EEPROM(采用ISP/IAP技术读写内置FLASH来实现EEPROM),节省片外资源,使用起来比较方便。
STC89型号单片机内置EEPROM容量
产品编号
EEPROM
STC89C51RC
2KB
STC89C52RC
2KB
STC89C53RC
0KB
STC89C54RD+
16KB
STC89C55RD+
16KB
STC89C58RD+
16KB
STC89型号单片机(除了STC89C53RC)内置的EEPROM的容量最小有2KB,最大有16KB,基本上很好地满足项目的需要,更方便之处就是节省了周边的EEPROM器件,达到节省成本的目的,而且内部EEPROM的速度比外部的EEPROM的速度快很多。
STC89型号单片机内置的EEPROM是以512字节为一个扇区,EEPROM的起始地址=FLASH容量值+1,那么STC89C52RC的起始地址为0x2000,第一扇区的起始地址和结束地址0x2000—0x21FF,第二扇区的起始地址和结束地址0x2200—0x23FF,其他扇区如此类推。
STC89C52RC与EEPROM实现相关的寄存器有6个,分别是ISP_DATA、ISP_ADDRH、ISP_ADDRL、ISP_TRIG、ISP_CMD、ISP_CONTR。
①.ISP_DATA寄存器
ISP/IAP操作时的数据寄存器。
ISP/IAP从Flash读的数据在此处,向Flash写的数据也须放在此处。
一:EEPROM读单个字节
UINT8 EEPROMRead(UINT16 addr)
{
……
return ISP_DATA;
}
二:EEPROM写单个字节
Void EEPROMWrite(UINT8 byte)
{
……
ISP_DATA=byte;
}
②.ISP_ADDRH、ISP_ADDRL寄存器
ISP_ADDRH:ISP/IAP操作时的地址寄存器高八位
ISP_ADDRL:ISP/IAP操作时的地址寄存器低八位
三:EEPROM设置地址
Void EEPROMSetAddress(UINT16 Addr)
{
……
ISP_ADDRH=(UINT8)(Addr>8);
ISP_ADDRL=(UINT8) Addr;
}
③.ISP_CMD寄存器
ISP/IAP操作时的命令模式寄存器,需要通过ISP_TRIG命令触发寄存器才能生效。
ISP_CMD命令模式寄存器
B7
B6
B5
B4
B3
B2
B1
B0
模式选择
保留
命令
_
_
_
_
_
0
0
0
无ISP操作
_
_
_
_
_
0
0
1
字节读
_
_
_
_
_
0
1
0
字节写
_
_
_
_
_
0
1
1
扇区擦除
④ISP_TRIG寄存器
ISP/IAP命令要生效即ISP_CMD设置的命令要生效,必须通过ISP_TRIG命令触发寄存器进行触发。触发过程很特别,只需要连续两次对ISP_TRIG寄存器赋值就可以的了,对ISP_TRIG寄存器先写入0x46,再写入0xB9就完成命令触发的过程。
四:命令触发
Void EEPROMCmdTrig(void)
{
……
ISP_TRIG=0x46;
ISP_TRIG=0xB9;
}
⑤.ISP_CONTR寄存器
ISP/IAP控制寄存器
ISPEN:
EEPROM 来自淘豆网m.daumloan.com转载请标明出处.