當(dāng)前位置:首頁 > 智能硬件 > 智能硬件
[導(dǎo)讀]EEPROM(Electrically Erasable Programmable Read一Only Memory)即電子擦除式只讀存儲器,它是一種非揮發(fā)性存儲器,與擦除式只讀存儲器(EPROM)類似,電源消失后,儲存的數(shù)據(jù)依然存在,要消除儲存在其中的內(nèi)容,不是用紫外線照射方式,而是以電子信號直接消除即可。

    EEPROM(Electrically Erasable Programmable Read一Only Memory)即電子擦除式只讀存儲器,它是一種非揮發(fā)性存儲器,與擦除式只讀存儲器(EPROM)類似,電源消失后,儲存的數(shù)據(jù)依然存在,要消除儲存在其中的內(nèi)容,不是用紫外線照射方式,而是以電子信號直接消除即可。
    正是由于EEPROM具有以上特點,該器件可廣泛應(yīng)用于對數(shù)據(jù)存儲安全性及可靠性要求高的應(yīng)用場合,如門禁考勤系統(tǒng),測量和醫(yī)療儀表,非接觸式智能卡,稅控收款機,預(yù)付費電度表或復(fù)費率電度表、水表、煤氣表以及家電遙控器等應(yīng)用場合。該類型存儲器在可靠數(shù)據(jù)存儲領(lǐng)域會獲得越來越廣泛的應(yīng)用。
    但是,EEPROM有固定的使用壽命,這是指某一位由1寫為O或由O寫為1的次數(shù)。不同廠家的產(chǎn)品,相同廠家不同型號、系列的產(chǎn)品,它們的壽命也不盡相同,100萬次為常見主流產(chǎn)品。假若某EEPROM壽命為100萬次,每秒擦寫一次,則其使用時間為1000000/(3600×24)=12天。這對于需要較長時間保存數(shù)據(jù)的應(yīng)用場合,顯然不滿足要求。


1 延長EEPROM壽命的方法
    一般應(yīng)用中,要存儲的數(shù)據(jù)比較單一,EEPROM空間與要存儲的數(shù)據(jù)相比要大得多。為此,可采用一種利用存儲器空間延長EEPROM工作壽命的方法。
    方法l:不固定數(shù)據(jù)存放的地址,而是用一個固定的基地址加上EEPROM內(nèi)的一個單元的內(nèi)容(即偏移地址)作為真正的地址;若發(fā)現(xiàn)存儲單元已壞(寫入和讀出的內(nèi)容不同),則偏移地址加1,重新寫入。如果采用100倍的存儲器空間冗余,可將EEPROM的實際壽命延長100倍。
    方法2:從第一個存儲單元開始存儲數(shù)據(jù)N次,然后轉(zhuǎn)到下一個單元再存N次,依次類推,當(dāng)最后一個單元存放N次之后,再轉(zhuǎn)到第一個單元重新開始。本文推薦采用該法,因為上一種方法存在一個致命缺陷:當(dāng)某一個EEPROM單元寫壞再用下一個單元時,原先存儲的數(shù)據(jù)就讀不出來了。本文后面的內(nèi)容也依此作根據(jù)進行闡釋。


2 EEPROM數(shù)據(jù)儲存地址的確認
    嵌入式系統(tǒng)中的EEPROM電源消失后,儲存的數(shù)據(jù)依然存在。確認數(shù)據(jù)所存地址是能夠正確將所存數(shù)據(jù)讀出的基本條件,但是掉電后再上電時如何確認數(shù)據(jù)的地址指針呢?可以采用以下的方法。
2.1 找最大數(shù)據(jù)法
    查找EEPROM中的最大數(shù)據(jù),就是掉電前最后一次存儲的數(shù)據(jù)。該法對于單片機來講,編程時程序量較大,可采用折半查找法或分塊查找法降低程序代碼量。
2.2用后還原法
    循環(huán)將當(dāng)前數(shù)據(jù)寫入EEPROM后,立即將前面的EEPROM空間都清0再上電,查找數(shù)據(jù)非0的EEPROM空間即可。有的單片機要求在寫入數(shù)據(jù)之前,必須將所有空間都恢復(fù)為OxFF,這樣查找非0xFF的數(shù)據(jù)空間即可。
2.3地址指針法
    為每一個數(shù)據(jù)在EEPROM中設(shè)一個地址指針EE—ADR[i],這樣只要確認EEADR[i]數(shù)值即可找到相應(yīng)數(shù)據(jù)。對于地址指針法有下述一些技巧。
    ①一個地址指針對應(yīng)一個數(shù)據(jù)。該方法思路簡單,假設(shè)EEPROM空間可以存放50組數(shù)據(jù)和50個地址ADR[i],一組數(shù)據(jù)占用4個字節(jié),一個地址占用1個字節(jié),共250字節(jié),在儲存數(shù)據(jù)時,使50個地址指向50組數(shù)據(jù)的首地址,且使小于變量i的ADR[i]都清零,或重新賦值為0xFF。查找數(shù)據(jù)時,找到非O或非0xFF的ADR[i],然后根據(jù)ADR[i]的值來確定數(shù)據(jù)的儲存地址即可。
    ②用兩個變量來記錄數(shù)據(jù)儲存的地址,ADDR一0LD和ADDILNEW分別標志當(dāng)前數(shù)據(jù)讀出時的地址和新采集來的數(shù)據(jù)下一次要存儲的地址。 

    ③用一個字節(jié)的EEPROM空間作為地址指針。此時,地址指針的數(shù)值總是和數(shù)據(jù)儲存的地址值相等,此種情況最具有技巧性,因為此時可以使用最少的地址指針,因而可以最大量的節(jié)省。EEPROM空間,從而延長EEP—ROM壽命。此方法的思路是:假設(shè)第O字節(jié)作為地址指針,當(dāng)該指針值為1時,數(shù)據(jù)從第一個地址開始儲存;為2時,數(shù)據(jù)從第二個地址開始儲存,依此類推。

3 應(yīng)用實例
    本人在設(shè)計智能流量儀表時,使用美國Microchip公司的PIC16F877單片機。該單片機本身自帶有256字節(jié)的EEPROM,其擦寫次數(shù)典型值為100萬次,主要用其儲存累計流量和儀表系數(shù)。其中,第201~255字節(jié)用于存儲儀表系數(shù),因其不需要經(jīng)常操作,所以對這些數(shù)據(jù)不再采用變地址動態(tài)存儲。第0字節(jié)儲存數(shù)據(jù)的地址指針,第1~200字節(jié)用來儲存累計量。
    對于累計量,可以采用浮點數(shù)儲存,只占用3~4個字節(jié),目的在于用固定的字節(jié)長度可以保證相同的相對精度。
    智能流量儀表常年不停地工作,短時間內(nèi)的流量相對總的流量而言,可以忽略不計。因此,為了使單片機的EEPROM壽命更長,過一個時間片段(例如10s)儲存一次累計量也可以滿足精度要求。假若出現(xiàn)停電事故,累計量只有10s的流量誤差,相對總量可以滿足精度要求。該策略可使EEPROM延長10倍壽命。
    因本例采用O字節(jié)來記錄數(shù)據(jù)的存儲地址,若數(shù)據(jù)每存儲一次就換一個地址,則200字節(jié)可以存200/4=50個位置,相當(dāng)于儲存數(shù)據(jù)的EEPROM空間擦寫一次,第O字節(jié)就擦寫50次,因此,第O字節(jié)的壽命是其他的1/50,這顯然不可行。故可以采用如下方式:在第一個地址儲存50次以后再換下一個地址儲存,到最后一個地址也儲存50次再轉(zhuǎn)到第一個地址儲存時,這樣所有的EEPROM空間使用次數(shù)都相等。
    儲存累計量流程圖如圖1所示。

    pass:數(shù)據(jù)存儲之前程序循環(huán)的次數(shù),它表征多長時間儲存一次數(shù)據(jù)。
    save_adr:數(shù)據(jù)在EEPROM中的存儲地址。
    save_time:某數(shù)據(jù)在同一地址存儲的次數(shù)。
    eeprom_write(eeadr,value):EEPROM寫函數(shù)。
    下面是該流程對應(yīng)的程序(采用澳大利亞HI—TECH公司的PICC demo編譯器)。
    
    if(save_time>50)//存50次后移一位EEPROM地址

{save_time=0;clrwdt();

save_adr+=4;//累計量用4個字節(jié)儲存

if(save_adr>197)//只用1~200字節(jié)存儲累計量{save_adr=1;}

eeprom_write(0,save-adr);//save-adr為所存累計量地址首字節(jié)
}
    eeprom_write(savcl_adr,x[O]);
    eeprom_write(save_adr+1,x[1]);
    eeprom_write(save_adr+2,x[2]);
    eeprom_write(save_adr+3,x[3]); 
  }
}


4 讀出EEPROM中存儲的數(shù)據(jù)
    系統(tǒng)中的EEPROM掉電后,再上電時從EEPROM讀出數(shù)據(jù)的程序比較簡單。
    void Read_Sum_Q(){ //讀出掉電前的累計量
    y[O]=eeprom_read(save_adr);
    y[1]=eeprom_read(1+save_adr);
    y[2]_eeprom_read(2+save_adr);
    y[3]=eeprom_read(3+save_adr);

    p2=(float  *)y;

    Q=*p2;

}

結(jié)語

    采用實例所示的方法,10s存一次可使EEPROM壽命延長10倍,采用50倍的EEPROM空間冗余,又使其奉命延長50倍,這樣具有1000000次壽命的EEPROM可以不間斷工作時間為10×50×1000000/(3600×24×365)=15.85年,基本可以滿足各種嵌入式系統(tǒng)的工作要求,大大提高了EEPROM的使用效率。因此,本文介紹的方法在相關(guān)領(lǐng)域具有廣泛的借鑒意義和實用價值。

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉