久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

avr EEPROM 數據丟失問題 原因與解決方案

作者:佚名   來源:本站原創   點擊數:  更新時間:2011年10月27日   【字體:

總結一下引起 AVR 內部 EEPROM 數據丟失的原因:

    1. 程序問題;
    2. 程序跑飛;
    3. EEPROM相關寄存器因強磁場、高壓靜電等外部干擾出錯所產生的寫入動作;
    4. 系統有很大的感性負載,在斷電的時候會產生一個反向高壓,EEPROM有可能會自擦除。
      ……(還有什么原因,歡迎大家繼續列舉,以便完善及想辦法解決)

    針對問題1,程序問題不再該文討論范圍內。

    針對問題2,程序跑飛,這個因該是引起 EEPROM 數據丟失的主要原因。但是引起程序跑飛的原因卻是多方面的。
    
    第一. 電壓不正常,工作不穩定,程序跑飛。針對這個問題,可以開啟內部BOD、或者外加復位芯片解決,在低功耗場合,外部復位是有必

要的,畢竟BOD功耗太高。

    第二,晶體振蕩受干擾,頻率不穩定,程序跑飛。針對這個問題,建議晶體使用全幅振蕩,并且走線的時候盡量短,并且使用地線隔離。

    第三系統受外界環境干擾,修改了PC等寄存器,程序跑飛。針對這個干擾問題,這個引起程序跑飛的可能性應該不大,如果環境實在惡劣

,那么就應該想到做電磁屏蔽,ESD保護等,如果還不行,那么只能建議換換別的單片機試試看了。

    針對問題3,我們只能優化電路設置,盡量避免,比如加屏蔽罩,加ESD保護,加TVS保護,電源加電容退耦等等。

    針對問題4, 如果系統真的具有很大的感性負載,那么請注意加續流二極管、濾波電容等做保護,不要讓這種反向高壓產生,無論如何,這

種因為感性負載突然斷電自激產生的高壓,不僅僅會對EEPROM有影響,而是對整個系統都存在威脅。

============================================================================================================== 

 

經過上面硬件上的一些處理,雖然EEPROM數據丟

失的可能已經很小了,但是我們仍然不能保證EEPROM數據就不會丟失了。這時 EEPROM 數據的可*性,那就得從軟件上去考慮了,接著我們從

軟件的方面繼續討論。

    我的做法是,數據分塊,分區,校驗,備份。當然這里講的處理方法,僅僅是提供一種想法,你可以做不同數據長度的分塊,不同大小的

分區,采用不同的地址映射方法,以及采用更多次的數據備份。下面以 Mega168 為例繼續討論。

 1. Mega168 EEPROM 512字節,把EEPROM分為兩個區,每個區256個字節,然后以8個字節為一個段,那么每個區就有32段。 
    數據區:0x000 - 0x0FF  
    0段:0x000 - 0x007 
    1段:0x008 - 0x00F 
       …… 
    31段:0x0F8 - 0x0FF 

    備份區:0x100-0x1FF

    每個段8個字節,其中前6個字節為有效數據,后2個字節為CRC16校驗,數據格式下圖所示:

 
 

 2. EEPROM讀寫操作
    EEPROM的操作以段為單位,
    段寫入函數:寫數據到數據區時,先計算數據CRC16校驗,然后同時把數據寫入到數據區和備份區;
    段讀取函數:讀取數據時,同時讀取數據區以及備份區,如果數據區校驗有誤,備份區數據校驗正確,就用備份區數據恢復數據區數據;  

  如果備份區數據有誤,數據區數據正確,那么數據寫入備份區重新備份;如果數據區備份區數據都有誤,那么返回讀取失敗。

3. 數據區與備份區的對應關系
    數據讀寫操作以段進行,內部的數據區與備份區怎么映射呢?為了防治數據與備份同時被意外修改,那么數據與備份地址空間相隔不能太

近,并且數據與備份的地址,應該盡量不同。假設數據地址為 Data_Addr,備份地址為 Bakup_Addr,我使用下面的函數映射地址:
                 Bakup_Addr = ( Data_Addr + 0x100 ) ^ 0x03F 
    加0x100是把地址定義到備份區, 與0x03F異或,是把低6bits取反,這樣處理,數據與備份的地址空間較遠,并且地址有7bits的不同。
    例如,第 3 段 的地址: 0x018 - 0x01F, 
          對應的備份區為:0x127 - 0x120 
          如下圖所示:  
 
 

 

4. 讀寫函數加入寫保護判斷,在讀寫EEPROM前關閉寫保護,讀寫完畢后,立即開啟寫保護,這樣可以有效防止程序跑飛造成的EEPROM意外修改



5. 第0塊建議禁止使用。

關閉窗口

相關文章

主站蜘蛛池模板: 拍真实国产伦偷精品 | 中文字幕日韩欧美 | 欧美一级毛片在线播放 | 欧美精品福利视频 | 福利久久 | chengrenzaixian | 一区二区免费在线视频 | 91视频日本 | 中文字幕视频在线观看 | 日韩中文在线视频 | 中文字幕视频在线观看 | 国产免费av网 | 一级片免费视频 | 波多野吉衣久久 | 看片wwwwwwwwwww | 四虎av电影 | 日韩国产精品一区二区三区 | 欧美日韩在线看 | 日一区二区 | 欧美日韩电影一区 | 欧美日韩综合 | 成人在线观看中文字幕 | 天天看天天干 | 欧美国产日韩在线 | 亚洲视频免费在线 | 亚洲 一区 | 久久99久久| 国产精品美女www爽爽爽视频 | 欧美一区二区三区在线看 | 亚洲精品一区二区三区在线 | 日韩在线精品 | 欧美爱爱视频网站 | 免费黄色片在线观看 | 91久久国产综合久久91精品网站 | 91新视频| 欧美国产精品 | 午夜三级在线观看 | 国精产品一品二品国精在线观看 | 亚洲一区久久久 | 亚洲综合在线视频 | 日韩一区二区三区视频在线观看 |