EEPROM(Electrically Erasable Programmable readonly memory)是指帶電可編程只讀存儲(chǔ)器。是一種掉電后數(shù)據(jù)不丟失的存儲(chǔ)芯片。
中穎Flash型MCU都集成有EEPROM,EEPROM用來(lái)存放用戶數(shù)據(jù)。EEROM大小可以通過(guò)option(代碼選項(xiàng))選擇0~4K不等。EEPROM按照扇區(qū)進(jìn)行劃分,每個(gè)扇區(qū)的大小512字節(jié)(較早的產(chǎn)品,每個(gè)扇區(qū)大小256字節(jié)),最多支持8個(gè)扇區(qū)。
中穎的EEPROM編程/擦除次數(shù):至少100000次
中穎的EEPROM數(shù)據(jù)保存年限:至少10年
中穎EEPROM的操作原則:
1、必須關(guān)閉所有中斷
如果在操作EEPROM期間,不關(guān)閉中斷,可能會(huì)導(dǎo)致程序跑飛或者其它異常情況;中穎MCU要求對(duì)于EEPROM的擦除和編程,需要按照規(guī)定關(guān)閉所有中斷(EA=0),等到編程完成后再打開(kāi)中斷。
2、如何訪問(wèn)EEPROM
中穎芯片對(duì)于EEPROM的讀、擦和寫(xiě)都是通過(guò)寄存器FLASHCON的FAC位置1來(lái)操作。當(dāng)FAC=0時(shí),MOVC指令或者SSP功能訪問(wèn)Main Block區(qū)域;當(dāng)FAC=1時(shí),MOVC指令或者SSP功能訪問(wèn)類(lèi)EEPROM區(qū)域或信息存儲(chǔ)區(qū)。


3、操作EEPROM前,清WDT
在對(duì)EEPROM的操作前,清WDT,保證操作期間不溢出
4、抗干擾
同時(shí),為了抗干擾,防止誤操作,EEPROM編程可以參考如下例程:
ucharssp_flag; voidEEPromSectorErase(UCHARnAddrH)//扇區(qū)擦除 { ssp_flag=0xA5; _push_(IEN0);//中斷控制壓棧 IEN0 =0x7F;//關(guān)總中斷 FLASHCON=0x01;//訪問(wèn)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;?//訪問(wèn)EEPROM區(qū)????????? ????RSTSTAT?=?0;????//清WDT????????? ????XPAGE=?nAddrH;? ????IB_OFFSET=?nAddrL;????????? ????IB_DATA=?nData;??//?燒寫(xiě)內(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ù)總中斷
來(lái)源:中穎電子(作者:丁曉明)
免責(zé)聲明:本文為轉(zhuǎn)載文章,轉(zhuǎn)載此文目的在于傳遞更多信息,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問(wèn)題,請(qǐng)聯(lián)系小編進(jìn)行處理
審核編輯 黃宇
-
mcu
+關(guān)注
關(guān)注
147文章
18924瀏覽量
398064 -
EEPROM
+關(guān)注
關(guān)注
9文章
1137瀏覽量
86029
發(fā)布評(píng)論請(qǐng)先 登錄
BNC轉(zhuǎn)接頭接線注意事項(xiàng)
CW32時(shí)鐘運(yùn)行中失效檢測(cè)的流程是什么?CW32時(shí)鐘運(yùn)行中失效檢測(cè)注意事項(xiàng)有哪些呢?
驅(qū)動(dòng)板PCB布線的注意事項(xiàng)
芯源的MCU使用電池過(guò)程中有哪些注意事項(xiàng)?
CW32R031射頻板LAYOUT注意事項(xiàng)有哪些?
極海APM32E030 MCU中高速時(shí)鐘的配置和相關(guān)注意事項(xiàng)
emWin AppWizard 開(kāi)發(fā)注意事項(xiàng)有哪些?
別讓這些細(xì)節(jié)毀了PCBA!焊接注意事項(xiàng)清單
智多晶PLL使用注意事項(xiàng)
美國(guó)Odyssey奧德賽電池充電注意事項(xiàng)全解析
中8位MCU EEPROM使用注意事項(xiàng)
評(píng)論