91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

延長FLASH和EEPROM芯片寫入次數(shù)的小方法

聚豐開發(fā) ? 2018-10-29 11:01 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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


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


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



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


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


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


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


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




直接保存的最簡方法:

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

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



改進的保存方法:


處理方法是將256字節(jié)按16字節(jié)大小分成16等份,按后面格式存儲參數(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個字節(jié)為正在使用的記錄,為其它值表示當(dāng)前16字節(jié)已經(jīng)丟棄。


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


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


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


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

    關(guān)注

    463

    文章

    54000

    瀏覽量

    465770
  • FlaSh
    +關(guān)注

    關(guān)注

    10

    文章

    1747

    瀏覽量

    155482
  • EEPROM
    +關(guān)注

    關(guān)注

    9

    文章

    1137

    瀏覽量

    86014
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    SPI NOR Flash和SPI NAND Flash存儲芯片的區(qū)別

    和高存儲密度,成為數(shù)據(jù)存儲的首選。英尚微電子提供高性價比的Flash芯片解決方案,我們擁有豐富型號的Flash芯片,能夠滿足不同場景的特定需求,覆蓋各類應(yīng)用場景。
    的頭像 發(fā)表于 01-29 16:58 ?444次閱讀
    SPI NOR <b class='flag-5'>Flash</b>和SPI NAND <b class='flag-5'>Flash</b>存儲<b class='flag-5'>芯片</b>的區(qū)別

    請問CW24C系列的EEPROM的擦寫次數(shù)是多少次?

    CW24C系列的EEPROM的擦寫次數(shù)是多少次?
    發(fā)表于 01-15 07:32

    EEPROM的相關(guān)問題

    1.Q:CW24C系列的EEPROM的擦寫次數(shù)是多少次? A:CW24C系列的EEPROM采用Double-cell架構(gòu),極大的提高了EEPROM的可靠性和擦寫壽命,其擦寫為500萬次
    發(fā)表于 12-15 07:56

    【瑞薩RA6E2地奇星開發(fā)板試用】內(nèi)部Code flash和Data flash寫入數(shù)據(jù)并通過OLED顯示

    Flash 擦除、寫入、讀取及數(shù)據(jù)驗證的全流程可行性,為后續(xù)嵌入式項目存儲方案提供參考依據(jù)。 1.2 硬件與軟件環(huán)境 類別 參數(shù)/配置 開發(fā)板 瑞薩RA6E2地奇星開發(fā)板 主控芯片 RA6E2(ARM
    發(fā)表于 12-12 20:15

    針對CW32芯片內(nèi)部flash能存用戶數(shù)據(jù)嗎?

    針對CW32芯片,內(nèi)部flash能存用戶數(shù)據(jù)嗎?就是如果不想加外部的flash,內(nèi)部多余的flash能給外部使用嗎?有相關(guān)的示例么?寫入也需
    發(fā)表于 12-09 08:13

    把CW32L010用FLASH模擬EEPROM

    CW32L010橫空出世,定時器和ADC變化很大,FLASH基本和以前型號一樣,但有一點改動,BUSY位從CR1寄存器改到ISR寄存器了。 把F003的程序改改就能用,太棒了,拿走不謝。 只有一個
    發(fā)表于 11-24 07:40

    芯源小容量存儲芯片EEPROM產(chǎn)品優(yōu)勢

    擦寫壽命長:如CW24C系列的EEPROM,采用Double-cell架構(gòu),極大地提高了EEPROM的可靠性和擦寫壽命,其擦寫次數(shù)可達500萬次,其中512K EE做到業(yè)界最高的擦寫次數(shù)
    發(fā)表于 11-14 06:23

    FLASH模擬EEPROM入門指南

    0xFF,而EEPROM支持直接覆蓋寫入。 壽命考量:FLASH擦寫次數(shù)有限(約10萬次),需通過策略降低磨損;EEPROM則達百萬次以上。
    發(fā)表于 08-14 06:13

    FLASH模擬EEPROM

    FLASH 模擬 EEPROM 的思路是: ― 新數(shù)據(jù)存儲不影響舊數(shù)據(jù); ― 盡量減少 FLASH 擦除次數(shù),延長
    發(fā)表于 07-16 15:13

    STVD使用STM8S005K6T6C內(nèi)部data eeprom進行數(shù)據(jù)寫入操作問題求解

    1.STVD使用STM8S005K6T6C內(nèi)部data eeprom進行數(shù)據(jù)寫入操作,使用st-link V2(B2013 21)進行仿真調(diào)試,發(fā)現(xiàn)寄存器FLASH_CR2寫入1是值仍
    發(fā)表于 06-23 06:29

    光纖大方轉(zhuǎn)小方指的是什么

    光纖“大方轉(zhuǎn)小方”通常指的是將光纖接口從大方頭(如SC型接口)轉(zhuǎn)換為小方頭(如LC型接口)的適配器或跳線,這在光纖網(wǎng)絡(luò)部署中是常見的需求,以下是對其的詳細解析: 一、接口類型與特點 大方頭接口(SC
    的頭像 發(fā)表于 06-05 09:53 ?1828次閱讀

    如何從CYUSB3014-BZXCT讀取/寫入EEPROM固件?

    我有一個 CYUSB3014-BZXCT 芯片,其中保存了 EEPROM 數(shù)據(jù)。 我還有第二個空的 CYUSB3014,我想將第一個芯片EEPROM 數(shù)據(jù)
    發(fā)表于 05-07 06:46

    存儲技術(shù)探秘 NAND Flash vs NOR Flash:藏在芯片里的&quot;門道之爭&quot;

    門電路玄機 NOR Flash:Intel 1988 年革命性突破,終結(jié) EPROM/EEPROM 壟斷時代 NAND Flash:東芝 1989 年發(fā)布,開創(chuàng) "低成本比特" 存儲新紀(jì)元 共性特征
    的頭像 發(fā)表于 03-18 12:06 ?1441次閱讀

    關(guān)于將Flash寫入FRDM-MCXN947的問題求解

    這次我想問一個關(guān)于使用 MCXN947 將 Flash 寫入另一個板的問題。 我嘗試使用 FRDM-MCXN947 的寫入方法作為參考寫入
    發(fā)表于 03-17 06:29

    STM32F407 Flash寫入數(shù)據(jù)失敗的原因?怎么解決?

    STM32F407VGT6 標(biāo)準(zhǔn)庫 往Flash寫入數(shù)據(jù),寫入完成后再次讀取,發(fā)現(xiàn)沒有寫入成功。printf 打印擦除和寫入的步驟發(fā)現(xiàn),
    發(fā)表于 03-11 06:08