EEPROM(Electrically Erasable Programmable readonly memory)是指帶電可編程只讀存儲器。是一種掉電后數(shù)據(jù)不丟失的存儲芯片。
中穎Flash型MCU都集成有EEPROM,EEPROM用來存放用戶數(shù)據(jù)。EEROM大小可以通過option(代碼選項)選擇0~4K不等。EEPROM按照扇區(qū)進行劃分,每個扇區(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來操作。當FAC=0時,MOVC指令或者SSP功能訪問Main Block區(qū)域;當FAC=1時,MOVC指令或者SSP功能訪問類EEPROM區(qū)域或信息存儲區(qū)。
3、操作EEPROM前,清WDT
在對EEPROM的操作前,清WDT,保證操作期間不溢出
4、抗干擾
同時,為了抗干擾,防止誤操作,EEPROM編程可以參考如下例程:
ucharssp_flag; voidEEPromSectorErase(UCHARnAddrH)//扇區(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判斷,增強抗干擾??????????????????? ????????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判斷,增強抗干擾??????? ????????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ù)總中斷
來源:中穎電子(作者:丁曉明)
免責聲明:本文為轉(zhuǎn)載文章,轉(zhuǎn)載此文目的在于傳遞更多信息,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問題,請聯(lián)系小編進行處理
審核編輯 黃宇
-
mcu
+關(guān)注
關(guān)注
146文章
17123瀏覽量
350975 -
EEPROM
+關(guān)注
關(guān)注
9文章
1019瀏覽量
81558
發(fā)布評論請先 登錄
相關(guān)推薦
評論