使用MCU內部flash模擬EEPROM的簡易算法-EFM32ZG平臺

       flash較之eeprom的一大缺點是擦除以頁或扇區爲單位。這樣帶來的問題是,即使用戶只需要修改一個字節的內容,必須先擦除該字節所在的整頁,然後還要將之前該頁已存在的內容重複寫入flash。如果主機每兩次寫之間不加延時,很大可能導致寫入失敗或其他問題

       大多數應用場景中,該缺點不會顯得那麼突出,因爲用戶通常只需要修改一次flash即可完成自己的需求。在某些特殊場景下,

用戶會對一塊已經有數據的flash區域進行內容修改,接口通過IIC,單字節操作。這樣若用戶兩次寫操作間隔很短,因爲每次寫flash需要先進行擦除,佔用比較長的時間,是無法實現此需求的。

      EFM32ZG平臺flash分爲main block(32K)+UD page(1K)。

    因此想到用UD做寫緩衝,每次上電判斷UD區是否有內容更新。若有,更新到對應用戶EEPROM。

     這樣即可實現,每次用戶寫操作,MCU不需要先進行擦除操作,因爲總有一塊區域是全FFh的,可以隨時以單字節寫入方式進行操作,省去擦除的時間。

    該簡易算法已經在我們的SFP+光模塊產品上實現。

       

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章