EEPROM(Electrically Erasable Programmable readonly memory)是指带电可编程只读存储器。是一种掉电后数据不丢失的存储芯片。
中颖Flash型MCU都集成有EEPROM,EEPROM用来存放用户数据。EEROM大小可以通过option(代码选项)选择0~4K不等。EEPROM按照扇区进行划分,每个扇区的大小512字节(较早的产品,每个扇区大小256字节),最多支持8个扇区。
中颖的EEPROM编程/擦除次数:至少100000次
中颖的EEPROM数据保存年限:至少10年
中颖EEPROM的操作原则:
1、必须关闭所有中断
如果在操作EEPROM期间,不关闭中断,可能会导致程序跑飞或者其它异常情况;中颖MCU要求对于EEPROM的擦除和编程,需要按照规定关闭所有中断(EA=0),等到编程完成后再打开中断。
2、如何访问EEPROM
中颖芯片对于EEPROM的读、擦和写都是通过寄存器FLASHCON的FAC位置1来操作。当FAC=0时,MOVC指令或者SSP功能访问Main Block区域;当FAC=1时,MOVC指令或者SSP功能访问类EEPROM区域或信息存储区。
3、操作EEPROM前,清WDT
在对EEPROM的操作前,清WDT,保证操作期间不溢出
4、抗干扰
同时,为了抗干扰,防止误操作,EEPROM编程可以参考如下例程:
ucharssp_flag; voidEEPromSectorErase(UCHARnAddrH)//扇区擦除 { ssp_flag=0xA5; _push_(IEN0);//中断控制压栈 IEN0 =0x7F;//关总中断 FLASHCON=0x01;//访问EEPROM区 RSTSTAT=0;//清WDT XPAGE=nAddrH<<1?;????????????????????????? ???? ????IB_CON1???=?0xE6;??????????? ????IB_CON2???=?0x05;????????? ????IB_CON3???=?0x0A;????????? ????IB_CON4???=?0x09;?????????? ????if(ssp_flag!=0xA5)//增加flag判断,增强抗干扰??????????????????? ????????goto?Error;????????? ????IB_CON5???=?0x06;????????? ????_nop_();??????????????????????????????????????? ????_nop_();????????? ????_nop_();????????? ????_nop_();?? Error:????????? ???? ????ssp_flag=?0;????????? ????IB_CON1=?0x00;????????? ????IB_CON2=?0x00;????????? ????IB_CON3=?0x00;????????? ????IB_CON4=?0x00;????????? ????IB_CON5=?0x00;????????????????? ???? ????FLASHCON=?0x00;//切回FLASH区???? ????_pop_(IEN0);//恢复总中断 }? ???? voidEEPromByteProgram(UCHAR?nAddrH,UCHAR?nAddrL,?UCHAR?nData)?? //?扇区编程 {????????? ????ssp_flag=?0x5A;???? ????_push_(IEN0);?//中断控制压栈???? ????IEN0 =0x7F;//关总中断?????????????? ????FLASHCON=?0x01;?//访问EEPROM区????????? ????RSTSTAT?=?0;????//清WDT????????? ????XPAGE=?nAddrH;? ????IB_OFFSET=?nAddrL;????????? ????IB_DATA=?nData;??//?烧写内容??? ??????????? ????IB_CON1???=?0x6E;????????? ????IB_CON2???=?0x05;????????? ????IB_CON3???=?0x0A;????????? ????IB_CON4???=?0x09;?????????? ???? ????if(ssp_flag!=0x5A)?//增加flag判断,增强抗干扰??????? ????????goto?Error;????????? ????IB_CON5???=?0x06;????????? ????_nop_();?????????????????? ????_nop_();????????? ????_nop_();????????? ????_nop_(); Error:????????? ????ssp_flag=?0;????????? ????IB_CON1=?0x00;????????? ????IB_CON2=?0x00;????????? ????IB_CON3=?0x00;????????? ????IB_CON4=?0x00;????????? ????IB_CON5=?0x00;???????????? ????FLASHCON=?0x00;?//切回FLASH区???? ????_pop_(IEN0);?//恢复总中断
来源:中颖电子(作者:丁晓明)
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理
审核编辑 黄宇
-
mcu
+关注
关注
146文章
18028浏览量
369169 -
EEPROM
+关注
关注
9文章
1089浏览量
83941
发布评论请先 登录
IGBT器件的防静电注意事项
设计SO-8封装的详细步骤和注意事项

MCU开发流程中的注意事项
脉冲式充电器的使用注意事项
【GD32 MCU入门教程】GD32 MCU GPIO 结构与使用注意事项

评论