关于STC单片机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个时钟 |
STC单片机EEPRO 相关文章:
- STC单片机 EEPROM/IAP 功能测试程序演示(12-01)
- STC单片机EEPROM的应用和程序(11-24)
- STC单片机EEPROM功能模块(11-23)
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)