新闻中心

EEPW首页>嵌入式系统>设计应用> 关于STC单片机EEPROM的应用总结

关于STC单片机EEPROM的应用总结

作者: 时间:2016-12-01 来源:网络 收藏
当在程序运行的过程中你希望修改某个变量并且此变量的值在掉电以后不丢失,那么你就可以采用将变量数据写入EEPROM的方式来实现。
什么是EEPROM,即Electrically Erasable ProgrammableRead_Only Memory首先它是一种存储器,并且可以通过高电压来进行反复擦写的存储器。具有掉电数据不丢失的特点。比如常用的24C系列,93C系列的器件。一般这种器件采用I2C的方式与单片机进行通讯,对于这种通讯方式及器件的应用另作总结。这里主要总结一下,STC12C5204AD芯片内部包含的EEPROM的应用方法。
STC12C5201AD系列单片机内部集成了EEPROM是与程序空间分开的,利用ISP/IAP技术可将内部dataflash当EEPROM,擦写10万次以上。
EEPROM可分为若干个扇区,每个扇区包含512字节。
使用时建议同一次修改的数据放在同一个扇区,不是同一次修改的数据放在不同的扇区,不一定要用满。数据存储器的擦除操作是按扇区进行的。
在程序中可对EEPROM进行字节读写/字节编程/扇区擦除操作。在工作电压Vcc偏低时,建议不要进行EEPROM/IAP操作。以免发生数据错误。
应用的步骤
1、声明与EEPROM相关的寄存器
2、编写EEPROM初始化函数
3、编写字节擦除函数
4、编写字节编程函数
5、编写字节读取函数
6、在需要读取EEPROM字节内容时直接调用字节读取函数即可
7、在需要进行写EEPROM字节时,先调用字节擦除函数,将字节内容擦除成FFH后,在调用字节编程函数,将数据写入到EEPROM的地址单元中。
与EEPROM应用相关的寄存器

本文引用地址://m.amcfsurvey.com/article/201612/324568.htm
符号
描述
地址
位地址及符号
复位值
IAP_DATA
ISP/IAP flash data register
C2H
1111 1111B
IAP_ADDRH
ISP/IAPflashaddress high
C3H
0000 0000B
IAP_ADDRL
ISP/IAP flash address low
C4H
IAP_CMD
ISP/IAP flash command register
C5H
MS1
MS0
IAP_TRIG
ISP/IAP flash command trigger
C6H
xxxxxxxxxB
IAP_CONTR
ISP/IAP control register
C7H
IAPEN
SWBS
SWRST
CMD_FAIL
WT2
WT1
WT0
0000X000B
PCON
Power control
87H
SOMD
SMOD0
LVDF
POF
GF1
GF0
PD
IDL
00110000B

1、IAP_DATA:ISP/IAP数据寄存器
ISP/IAP操作时的数据寄存器。
ISP/IAP从FlASH读出的数据存放此处,向flash写的数据也需要放在此处。
2、IAP_ADDRH和IAP_ADDRL :IAP/ISP地址寄存器
3、IAP_CMD:ISP/IAP命令寄存器

MS1
MS0
命令/操作模式选择
0
0
Standby 待机模式,无ISP操作
0
1
从用户程序区对“data flash /EEprom区”进行字节读
1
0
从用户的应用程序区对“data flash/eeprom区”进行字节编写
1
1
从用户的应用程序区对“dataflash/eeprom区”进行扇区擦除

4、IAP_TRIG:ISP/IAP命令触发寄存器
在IAPEN(IAP_CONTR.7)=1时,对IAP——trig先写入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 name
Address
Bit
B7
B6
B5
B4
B3
B2
B1
B0
IAP_CONTR
C7H
Name
IAPEN
SWBS
SWRST
CMD_FAIL
_
WT2
WT1
WT0

IAPEN:ISP/IAP功能允许位:0:禁止IAP读/写/擦除 data flash /eeprom
1:允许IAP读/写/擦除 dataflash/eeprom
SWBW:软件选择从用户应用程序区启动(送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工作时钟)
WT2
WT1
WT0
Read/读
(2个时钟)
Program/编程(=55us)
Sector erase
扇区擦除
=21us
Recommended system clock
跟等待参数对应的推荐系统时钟
1
1
1
2个时钟
55个时钟
21012个时钟
<=1MHz
1
1
0
2个时钟
110个时钟
42024个时钟
<=2MHz
1
0
1
2个时钟
165个时钟
63036个时钟
<=3MHz
1
0
0
2个时钟
330个时钟
126072个时钟
<=6MHz
0
1
1
2个时钟
660个时钟
252144个时钟
<=12MHz
0
1
0
2个时钟
1100个时钟
420240个时钟
<=20MHz
0
0
1
2个时钟
1320个时钟
504288个时钟
<=24MHz
0
0
0
2个时钟
1760个时钟
672348个时钟
<=30MHz

12c系列单片机内部EEPROM选型一览表

型号
字节数(eeprom)
扇区数
起始扇区首地址
结束扇区末尾地址
STC12C5201AD/PWM
2K
4
0000h
07ffh
STC12C5202AD/PWM
2k
4
0000h
07ffh
STC12C5203AD/PWM
2k
4
0000h
07ffh
STC12C5204AD/PWM
1k
2
0000h
03ffh
STC12C5205AD/PWM
1k
2
0000h
03ffh


上一页 1 2 3 下一页

关键词:STC单片机EEPRO

评论


技术专区

关闭