微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 关于STC单片机EEPROM的应用总结

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

时间: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应用相关的寄存器

符号

描述

地址

位地址及符号

复位值

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个时钟

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top