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的讀、擦和寫都是通過(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)類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;??//?燒寫內(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)注
146文章
17893瀏覽量
361858 -
EEPROM
+關(guān)注
關(guān)注
9文章
1084瀏覽量
83431
發(fā)布評(píng)論請(qǐng)先 登錄
IGBT器件的防靜電注意事項(xiàng)
設(shè)計(jì)SO-8封裝的詳細(xì)步驟和注意事項(xiàng)

直流電動(dòng)汽車充電應(yīng)用中電流檢測(cè)的設(shè)計(jì)注意事項(xiàng)
PLC應(yīng)用中的AM335x可靠性注意事項(xiàng)

脈沖式充電器的使用注意事項(xiàng)
繞線電感定制的注意事項(xiàng)
【GD32 MCU入門教程】GD32 MCU GPIO 結(jié)構(gòu)與使用注意事項(xiàng)

關(guān)于降壓轉(zhuǎn)換器中啟動(dòng)電阻器的設(shè)計(jì)注意事項(xiàng)

共模電感定制的注意事項(xiàng)
LiFePO4設(shè)計(jì)注意事項(xiàng)

評(píng)論