EEPROM(Electrically Erasable Programmable readonly memory)是指帶電可編程只讀存儲器。是一種掉電后數(shù)據(jù)不丟失的存儲芯片。
中穎Flash型MCU都集成有EEPROM,EEPROM用來存放用戶數(shù)據(jù)。EEROM大小可以通過option(代碼選項(xiàng))選擇0~4K不等。EEPROM按照扇區(qū)進(jìn)行劃分,每個扇區(qū)的大小512字節(jié)(較早的產(chǎn)品,每個扇區(qū)大小256字節(jié)),最多支持8個扇區(qū)。
中穎的EEPROM編程/擦除次數(shù):至少100000次
中穎的EEPROM數(shù)據(jù)保存年限:至少10年
中穎EEPROM的操作原則:
1 必須關(guān)閉所有中斷
如果在操作EEPROM期間,不關(guān)閉中斷,可能會導(dǎo)致程序跑飛或者其它異常情況;中穎MCU要求對于EEPROM的擦除和編程,需要按照規(guī)定關(guān)閉所有中斷(EA=0),等到編程完成后再打開中斷。
2 如何訪問EEPROM
中穎芯片對于EEPROM的讀、擦和寫都是通過寄存器FLASHCON的FAC位置1來操作。當(dāng)FAC=0時,MOVC指令或者SSP功能訪問Main Block區(qū)域;當(dāng)FAC=1時,MOVC指令或者SSP功能訪問類EEPROM區(qū)域或信息存儲區(qū)。
A7H,Bank0 |
第7位 |
第6位 |
第5位 |
第4位 |
第3位 |
第2位 |
第1位 |
第0位 |
FLASHCON |
- |
- |
- |
- |
- |
- |
FAC |
|
讀/寫 |
- |
- |
- |
- |
- |
- |
讀/寫 |
讀/寫 |
復(fù)位值 (POR/WDT/LVR/PIN) |
- |
- |
- |
- |
- |
- |
0 |
0 |
位編號 |
位符號 |
說明 |
7-1 |
- |
保留位 |
0 |
FAC |
訪問控制 0:MOVC指令或者SSP功能訪問Main Block區(qū)域 1:MOVC指令或者SSP功能訪問類EEPROM區(qū)域或信息存儲區(qū) |
3 操作EEPROM前,清WDT
在對EEPROM的操作前,清WDT,保證操作期間不溢出
4 抗干擾
同時,為了抗干擾,防止誤操作,EEPROM編程可以參考如下例程:
uchar ssp_flag;
voidEEPromSectorErase(UCHAR nAddrH)// 扇區(qū)擦除
{
ssp_flag= 0xA5;
_push_(IEN0);//中斷控制壓棧
IEN0&=0x7F;//關(guān)總中斷
FLASHCON = 0x01; //訪問EEPROM區(qū)
RSTSTAT = 0; //清WDT
XPAGE= nAddrH<<1 ;???????????????????????? ?????????????????????????
IB_CON1 = 0xE6;
IB_CON2 = 0x05;
IB_CON3 = 0x0A;
IB_CON4 = 0x09;
if(ssp_flag!=0xA5)//增加flag判斷,增強(qiáng)抗干擾
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區(qū)
_pop_(IEN0);//恢復(fù)總中斷
}
voidEEPromByteProgram(UCHAR nAddrH,UCHAR nAddrL, UCHAR nData) // 扇區(qū)編程
{
ssp_flag= 0x5A;
_push_(IEN0); //中斷控制壓棧
IEN0&=0x7F;//關(guān)總中斷
FLASHCON= 0x01; //訪問EEPROM區(qū)
RSTSTAT = 0; //清WDT
XPAGE= nAddrH;
IB_OFFSET= nAddrL;
IB_DATA= nData; // 燒寫內(nèi)容
IB_CON1 = 0x6E;
IB_CON2 = 0x05;
IB_CON3 = 0x0A;
IB_CON4 = 0x09;
if(ssp_flag!=0x5A) //增加flag判斷,增強(qiáng)抗干擾
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區(qū)
_pop_(IEN0); //恢復(fù)總中斷
原文標(biāo)題:中穎8位MCU EEPROM使用注意事項(xiàng)
文章出處:【微信公眾號:中穎電子】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
審核編輯:湯梓紅
-
mcu
+關(guān)注
關(guān)注
146文章
16664瀏覽量
347726 -
編程
+關(guān)注
關(guān)注
88文章
3520瀏覽量
93262 -
EEPROM
+關(guān)注
關(guān)注
9文章
1002瀏覽量
81053 -
中穎電子
+關(guān)注
關(guān)注
4文章
171瀏覽量
7372
原文標(biāo)題:中穎8位MCU EEPROM使用注意事項(xiàng)
文章出處:【微信號:SINO_25181447,微信公眾號:中穎電子】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論