一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀(guān)看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

延長(zhǎng)FLASH和EEPROM芯片寫(xiě)入次數(shù)的小方法

聚豐開(kāi)發(fā) ? 2018-10-29 11:01 ? 次閱讀

注:本文是作者以前發(fā)表在其個(gè)人博客,現(xiàn)在發(fā)布到“聚豐開(kāi)發(fā)”專(zhuān)欄


開(kāi)發(fā)電子產(chǎn)品時(shí),常常需要斷電后保存某些數(shù)據(jù),這就需要使用 FLASH或EEPROM芯片,這兩種芯片,可擦除的次數(shù)是有限制的,通常FLASH為10萬(wàn)次,EEPROM要多一點(diǎn),為100萬(wàn)甚至1000萬(wàn)次。 FLASH的擦除不能單個(gè)字節(jié)進(jìn)行,有一個(gè)最小單位,存儲(chǔ)容量相對(duì)比較大,適合大量數(shù)據(jù)的存儲(chǔ);EEPROM可以單個(gè)字節(jié)進(jìn)行擦除,存儲(chǔ)容量不大,只適合存儲(chǔ)少量的設(shè)置數(shù)據(jù)。


先以FLASH和EEPROM需要寫(xiě)入一個(gè)字節(jié)為例來(lái)說(shuō)明新數(shù)據(jù)是如何寫(xiě)入的。假定都是在首地址要寫(xiě)入新數(shù)據(jù)0x55。不管是FLASH還是EEPROM。 對(duì)于FLASH,寫(xiě)操作只能將數(shù)據(jù)位從1改寫(xiě)為0,如果想要將數(shù)據(jù)位從0改為1,就需要進(jìn)行擦除操作,而且這個(gè)擦除最小單位是page(可能是256字節(jié)或更多)。



現(xiàn)在要在首地址寫(xiě)入0x55,穩(wěn)妥的方法是先擦除這個(gè)地方,也就是要擦除第一個(gè)page,擦除操作會(huì)一并將首地址后面的另外255個(gè)字節(jié)也擦除掉,如果這255個(gè)字節(jié)保存有其它數(shù)據(jù),還需要把這些數(shù)據(jù)先進(jìn)行備份,擦除第一個(gè)page后再將0x55和備份的255個(gè)字節(jié)寫(xiě)進(jìn)去。也不是必須擦除第一個(gè)page,寫(xiě)操作可以完成數(shù)據(jù)位1到0的轉(zhuǎn)變,利用這一特性結(jié)合首地址原來(lái)的內(nèi)容,我們就有可能不用進(jìn)行擦除操作,比如原來(lái)內(nèi)容為0xFF,顯然可以直接寫(xiě)入0x55,原內(nèi)容為0xF5,同樣也可以寫(xiě)入0x55,但如果原內(nèi)容為0xAA,執(zhí)行寫(xiě)0x55則會(huì)得到完全錯(cuò)誤的結(jié)果,寫(xiě)完后內(nèi)容依然為 0x00,因?yàn)閷?duì)于0x55所有需要保持為1的位數(shù)據(jù)0xAA都是0,寫(xiě)0x55會(huì)把0xAA為1的位全清0,原來(lái)為0的位不會(huì)改變。


對(duì)于EEPROM,寫(xiě)操作既可以將數(shù)據(jù)位從1改寫(xiě)為0,也可以將數(shù)據(jù)位從0改寫(xiě)為1,不需要進(jìn)行單獨(dú)的擦除操作,要寫(xiě)0x55直接將0x55寫(xiě)到首地址,不管原來(lái)內(nèi)容為什么,完成寫(xiě)操作后內(nèi)容都是0x55。


一開(kāi)始我們說(shuō)了FLASH和EEPROM都有可擦除的最大次數(shù)(EEPROM實(shí)際上沒(méi)有擦除操作),雖然這個(gè)數(shù)字看著不小,但對(duì)于程序來(lái)說(shuō)并不大,比如EEPROM為10萬(wàn)次,如果我們以每秒一次的間隔依次寫(xiě)入0xFF和0x00,則只能維持 100000/3600=27.78小時(shí),也就是一天多就可以超出其最大壽命次數(shù),不能再可靠寫(xiě)入所需的內(nèi)容。


這種可寫(xiě)入的最大次數(shù)是芯片的特性決定的,我們無(wú)法改變,所以在使用這些芯片時(shí),我們應(yīng)充分考慮最大寫(xiě)入次數(shù)這一參數(shù),要確保產(chǎn)品在實(shí)際工作中不超過(guò)這一參數(shù)。實(shí)際上許多時(shí)候只要程序做出針對(duì)性處理,有可能讓產(chǎn)品的最大寫(xiě)入次數(shù)超過(guò)芯片的壽命,還是以EEPROM來(lái)做說(shuō)明。


假定現(xiàn)在有一個(gè)產(chǎn)品,需要保存一些參數(shù),參數(shù)的個(gè)數(shù)并不多,總共為10個(gè)字節(jié),用EEPROM來(lái)保存就可以滿(mǎn)足需求,我們選用了容量為256字節(jié)的 EEPROM,如果我們不做過(guò)多考慮,很有可能就是直接將這10個(gè)字節(jié)從EEPROM的首地址開(kāi)始保存,每次改寫(xiě)也是直接修改這部分內(nèi)容,這樣我們最多可以保存參數(shù)10萬(wàn)次。只要我們做一點(diǎn)簡(jiǎn)單處理,就可以將保存參數(shù)的次數(shù)成倍增加,來(lái)看看我們應(yīng)該如何實(shí)現(xiàn)。




直接保存的最簡(jiǎn)方法:

地址 0x00 0x01 0x02 ... 0x09

內(nèi)容 data1 data2 data3 ... data10



改進(jìn)的保存方法:


處理方法是將256字節(jié)按16字節(jié)大小分成16等份,按后面格式存儲(chǔ)參數(shù)


地址 0x10*n +0x00 +0x01 +0x02 ... +0x09 +0x0A +0x0B +0x0C +0x0D +0x0E +0x0F

內(nèi)容 flag data1 data2 ... data9 data10 保留1 保留2 保留3 保留4 check_sum

check_sum=(flag+data1+data2+...+data10+保留1+...+保留4 )&0xFF

flag為0xA5表示當(dāng)前16個(gè)字節(jié)為正在使用的記錄,為其它值表示當(dāng)前16字節(jié)已經(jīng)丟棄。


讀取參數(shù)的時(shí)候先從地址0x10*n+0x00讀flag,如果為0xA5表明當(dāng)前記錄為正在使用中,讀出全部?jī)?nèi)容,并按前面公式進(jìn)行校驗(yàn),如果校驗(yàn)出錯(cuò),則當(dāng)前參數(shù)不可靠,直接使用默認(rèn)參數(shù),并將當(dāng)前區(qū)域的flag改寫(xiě)為0,同時(shí)在地址0x10*(n+1)位置開(kāi)始將默認(rèn)參數(shù)寫(xiě)入,地址0x10* (n+1)寫(xiě)入內(nèi)容為0xA5。如果所有區(qū)域都沒(méi)有發(fā)現(xiàn)有效記錄,在地址0寫(xiě)入默認(rèn)參數(shù)。


每次需要更改參數(shù)設(shè)定時(shí),先將當(dāng)前記錄位置的flag改為0,然后再下一條記錄位置寫(xiě)入新的參數(shù),這個(gè)順序可以做出適當(dāng)改進(jìn),比如對(duì)寫(xiě)入時(shí)斷電等意外情況做出考慮,從而得到更可靠的寫(xiě)入結(jié)果,不過(guò)就按此方法也都可以滿(mǎn)足應(yīng)用需求。


再來(lái)對(duì)比一下兩種方法,最簡(jiǎn)方法只能保存10萬(wàn)次,改進(jìn)的方法理論上增加了16倍,達(dá)到160萬(wàn)次,如果預(yù)估最簡(jiǎn)方法產(chǎn)品是3年內(nèi)絕對(duì)不會(huì)出錯(cuò),現(xiàn)在就增加到了48年,一個(gè)電子產(chǎn)品使用超過(guò)3年還是有可能,但用48年的可能性就非常之小,可以視同為0。對(duì)于FLASH芯片也是同樣道理,這里就不重復(fù)舉例說(shuō)明,在應(yīng)用中也應(yīng)該做出同樣的處理。


聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀(guān)點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 芯片
    +關(guān)注

    關(guān)注

    459

    文章

    51927

    瀏覽量

    433683
  • FlaSh
    +關(guān)注

    關(guān)注

    10

    文章

    1656

    瀏覽量

    150610
  • EEPROM
    +關(guān)注

    關(guān)注

    9

    文章

    1061

    瀏覽量

    83007
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    DLP3010如何將edid寫(xiě)入eeprom中?

    參考DLPDLCR3010EVM_G2的設(shè)計(jì),經(jīng)過(guò)測(cè)試發(fā)現(xiàn)無(wú)法將edid寫(xiě)入空白的eeprom中,請(qǐng)問(wèn)這個(gè)是自動(dòng)寫(xiě)入edid到eepron中,還是需要預(yù)先寫(xiě)入edid至
    發(fā)表于 02-19 08:01

    EEPROM存儲(chǔ)器的工作原理 EEPROMFLASH存儲(chǔ)器的比較

    EEPROM存儲(chǔ)器的工作原理 基本結(jié)構(gòu) : EEPROM由浮柵晶體管構(gòu)成,每個(gè)浮柵晶體管可以存儲(chǔ)一個(gè)比特的數(shù)據(jù)。浮柵是一個(gè)隔離的導(dǎo)電區(qū)域,可以捕獲和保持電子,從而改變晶體管的閾值電壓。 寫(xiě)入操作
    的頭像 發(fā)表于 12-16 16:35 ?1615次閱讀

    FLASH數(shù)據(jù)丟失的解決方法

    由于FLASH寫(xiě)入的特性是先擦后寫(xiě),寫(xiě)入不會(huì)在原來(lái)位置重新寫(xiě)數(shù)據(jù),一般都是把原位置的數(shù)據(jù)標(biāo)記為無(wú)效,再在新位置寫(xiě)入數(shù)據(jù)。如果在擦除中掉電或者寫(xiě)入
    的頭像 發(fā)表于 11-21 16:21 ?1124次閱讀

    LMP92066 EEPROM正常的寫(xiě)次數(shù)是多少?

    LMP92066的datasheet里邊說(shuō)明 EEPROM 經(jīng) 100 次寫(xiě)入操作驗(yàn)證,但是LMP92066 EVM GUI的“EEPROM Content“頁(yè)面又顯示寫(xiě)操作只能限制10次。請(qǐng)問(wèn)
    發(fā)表于 11-18 07:46

    eeprom芯片用在什么上

    電信號(hào)擦除和重寫(xiě)數(shù)據(jù)。EEPROM具有讀寫(xiě)速度快、擦寫(xiě)次數(shù)多、功耗低等優(yōu)點(diǎn),因此在許多應(yīng)用領(lǐng)域中都有廣泛的應(yīng)用。 EEPROM芯片的應(yīng)用領(lǐng)域 在現(xiàn)代電子技術(shù)中,存儲(chǔ)器是不可或缺的組成部
    的頭像 發(fā)表于 10-17 10:36 ?1954次閱讀

    eeprom芯片型號(hào)怎么確定

    EEPROM(Electrically Erasable Programmable Read-Only Memory,電可擦除可編程只讀存儲(chǔ)器)是一種非易失性存儲(chǔ)器,可以在不移除芯片的情況下,通過(guò)
    的頭像 發(fā)表于 10-17 10:33 ?1576次閱讀

    EEPROM故障的原因和影響

    EEPROM(Electrically Erasable Programmable Read-Only Memory),即電可擦除可編程只讀存儲(chǔ)器,是一種非易失性存儲(chǔ)器芯片,能夠在不通電的情況下保持
    的頭像 發(fā)表于 09-05 10:56 ?6566次閱讀

    如何向EEPROM寫(xiě)入數(shù)字

    EEPROM(Electrically Erasable Programmable Read-Only Memory,電可擦可編程只讀存儲(chǔ)器)寫(xiě)入數(shù)字是一個(gè)相對(duì)直接的過(guò)程,但涉及到多個(gè)步驟和細(xì)節(jié)。以下是一個(gè)詳細(xì)的步驟說(shuō)明,旨在幫助您理解并成功向
    的頭像 發(fā)表于 09-05 10:56 ?1697次閱讀

    NAND Flash的擦寫(xiě)次數(shù)介紹

    NAND Flash作為非易失性存儲(chǔ)技術(shù)的重要一員,其擦寫(xiě)次數(shù)是評(píng)估其性能和壽命的關(guān)鍵因素之一。以下將詳細(xì)介紹NAND Flash的擦寫(xiě)次數(shù),包括其定義、不同類(lèi)型NAND
    的頭像 發(fā)表于 07-29 17:18 ?4862次閱讀

    科普EEPROM 科普 EVASH Ultra EEPROM?科普存儲(chǔ)芯片

    科普EEPROM 科普 EVASH Ultra EEPROM?科普存儲(chǔ)芯片
    的頭像 發(fā)表于 06-25 17:14 ?865次閱讀

    EEPROMFlash存儲(chǔ)器的區(qū)別

    可編程只讀存儲(chǔ)器)和Flash存儲(chǔ)器是兩種常見(jiàn)的非易失性存儲(chǔ)器,它們具有各自的特點(diǎn)和應(yīng)用場(chǎng)景。本文將深入分析和比較EEPROMFlash存儲(chǔ)器的原理、結(jié)構(gòu)、性能以及應(yīng)用,以期為讀者提供全面而深入的理解。
    的頭像 發(fā)表于 05-23 16:35 ?8279次閱讀

    STM8S003F3P6操作EEPROM會(huì)影響FLASH嗎?

    各位前輩好,想請(qǐng)教一下,STM8S003F3P6操作EEPROM會(huì)影響FLASH嗎(具體的讀寫(xiě)程序已經(jīng)寫(xiě)完,只是擔(dān)心會(huì)影響FLASH,因?yàn)?b class='flag-5'>FLASH的擦寫(xiě)
    發(fā)表于 05-21 06:36

    向stm8s105內(nèi)部eeprom寫(xiě)入數(shù)據(jù)后,重新下載別的程序,這時(shí)候內(nèi)部eeprom里的數(shù)據(jù)會(huì)被擦除掉嗎?

    在向stm8s105內(nèi)部eeprom寫(xiě)入數(shù)據(jù)后,重新下載別的程序,這時(shí)候內(nèi)部eeprom里的數(shù)據(jù)會(huì)被擦除掉嗎?有什么方法將數(shù)據(jù)保存下來(lái)么?
    發(fā)表于 05-16 06:33

    STM32寫(xiě)入Flash不正常的原因?

    我參考原子的戰(zhàn)艦開(kāi)發(fā)板 使用實(shí)驗(yàn)34 FLASH模擬EEPROM實(shí)驗(yàn)的Flash寫(xiě)操作函數(shù) STMFLASH_Write(u32 WriteAddr,u16 *pBuffer,u16
    發(fā)表于 05-14 08:22

    STM8s 003 EEPROM斷電后不保存,eeprom數(shù)據(jù)被清零的原因?

    內(nèi)部的EEPROM第一個(gè)單元 // 對(duì)數(shù)據(jù)EEPROM進(jìn)行解鎖 do { FLASH_DUKR = 0xae;// 寫(xiě)入第一個(gè)密鑰 F
    發(fā)表于 05-13 06:01