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