
在單片機設計當中,串行EEPROM的可靠性有目共睹。但是雖然有著高可靠性,但是串行EEPROM在使用過程中會出現數據出錯的情況,并且數據出錯的情況大多數發生在插拔電源的情況下。下面將羅列出幾種EEPROM的出錯情況,而后提供一些應對方法。
出錯情況
1.EEPROM讀寫的時序可能有小小的不對。
2.在掉電時,在電壓降低到一定程度后到完全沒電之間的一段時間內,在MCU與EEPROM的讀寫信號線上出現非控制的快速隨機電平,這些電平可能會組合出一些被EEPROM認為合法的寫命令,結果將EEPROM中的值修改掉;
3.在上電的復位期間,I/O腳上電平未定,也可能隨機組合出一些寫命令;
4.在讀EEPROM操作過程中,出現了復位(如充電復位)等,形成類似于(二)的情況;
5.在電壓降低后,可能會出現MCU跑飛了,結果運行到了寫EEPROM的底層驅動程序中,強將數據寫入了進去。
解決方法
1.按Datasheet上的時序,發現多數時候讀寫正確,但有時偶爾不對,這時可以降低讀寫的速度,多幾個NOP。
2.為防止讀EEPROM的過程中出現復位,可以在MCU復位后200ms內禁止讀寫EEPROM,因充電引起的復位抖動,一般在數十毫秒內,過了這段時間,再出現復位的可能性不大,
3.在寫EEPROM的底層驅動程序中,在執行寫動作時,判斷一下某些標志,有良名證的才能通過,否則,只好打回原籍(跳到復位地址)。
4.對于重要的數據(如通信密碼、參數設置等,這些部分信息量不大,要采用三次備份的手段。這些信息存放在三個不同的PAGE內,最好PAGE內的地址也不一樣。在寫這些數據時,要針對不同的地址寫三次,而讀時,對于三處讀來的數據,如果全相同,沒什么可說的了,如果有兩個相同,一個不同,則使用大數判決,使用相同的那個值,并將這個數值寫到不同的那個地址去。
也會有一種三種取值完全不同的情況,這種情況下只好隨便取一個(如第一個),再將其寫入另兩個地址中去。這種方法非常有效,因為一般誤擦除不會是全部數據,而只是某一處而已,可以允許EEPROM某單元被誤擦除,只要讀了一次就恢復了。
聲明:本內容為作者獨立觀點,不代表電源網。本網站原創內容,如需轉載,請注明出處;本網站轉載的內容(文章、圖片、視頻)等資料版權歸原作者所有。如我們采用了您不宜公開的文章或圖片,未能及時和您確認,避免給雙方造成不必要的經濟損失,請電郵聯系我們,以便迅速采取適當處理措施;歡迎投稿,郵箱∶editor@netbroad.com。
微信關注 | ||
![]() |
技術專題 | 更多>> | |
![]() |
技術專題之EMC |
![]() |
技術專題之PCB |