在項目開發中經常使用到EEPROM,現在把自己開發中曾經遇到的陷阱和自己的解決方法列出。(1)現象:加密型遙控器的ID自動丟失和改變。 原因:在更新EEPROM過程中,斷開電源。 解決方法: a.更改設計避免在寫入EEPROM過程中斷開電源; b.增加100uF的電容,斷電后瞬間維持EEPROM供電正常至EEPROM寫入完成。 (2)現象:保存在EEPROM里的配置信息自動被改變。 原因:在EEPROM讀寫過程中進入了中斷服務程序,而中斷服務程序也調用了EEPROM讀寫函數。 解決方法: a.保證EEPROM讀寫函數的第一句是cli(),最后一句是sei(); b.中斷服務程序不直接調用EEPROM讀寫函數,如果SRAM足夠大使用讀寫緩沖區代替直接讀寫EEPROM,中斷返回后在主循環粒更新EEPROM; c.如果檢測到EEPROM已被占用,則進入阻塞狀態,等待EEPROM釋放后繼續執行; d.如果EEPROM里的數據長度大于EEPROM最小存儲單元,必須保證該數據的讀寫不被打斷。 (3)現象:突然斷電時,EEPROM數據偶爾會丟失。 原因:在斷電時剛好在進行EEPROM寫操作。 解決方法:加大電源濾波電容的容量,增加電壓檢測功能,當電壓偏低時禁止EEPROM寫入操作。 (4)現象:當大功率交流或直流電機啟動或后,EEPROM里的數據自動丟失或改變。 原因:在大功率電機啟動或斷開瞬間EMI干擾大。 解決方法: a.避開這些時候讀寫EEPROM。 b.如果無法避開這些時候,啟動EEPROM寫保護功能,并且每個數據都保存多個副本。 c.使EEPROM和EEPROM的DAT,CLK等信號線遠離可能產生干擾的元件,并且避免形成大的環路。 d.使用EMI抑制電路降低干擾幅度。 |