日本a√视频在线,久久青青亚洲国产,亚洲一区欧美二区,免费g片在线观看网站

        <style id="k3y6c"><u id="k3y6c"></u></style>
        <s id="k3y6c"></s>
        <mark id="k3y6c"></mark>
          
          

          <mark id="k3y6c"></mark>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應用 > AVR內(nèi)部EEPROM數(shù)據(jù)丟失問題的原因與解決方案

          AVR內(nèi)部EEPROM數(shù)據(jù)丟失問題的原因與解決方案

          作者: 時間:2012-08-16 來源:網(wǎng)絡 收藏


          1.Mega168512字節(jié),把分為兩個區(qū),每個區(qū)256個字節(jié),然后以8個字節(jié)為一個段,那么每個區(qū)就有32段。
          數(shù)據(jù)區(qū):0x000-0x0FF
          0段:0x000-0x007
          1段:0x008-0x00F
          ……
          31段:0x0F8-0x0FF

          備份區(qū):0x100-0x1FF

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

          點擊瀏覽下一頁

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

          如果備份區(qū)數(shù)據(jù)有誤,數(shù)據(jù)區(qū)數(shù)據(jù)正確,那么數(shù)據(jù)寫入備份區(qū)重新備份;如果數(shù)據(jù)區(qū)備份區(qū)數(shù)據(jù)都有誤,那么返回讀取失敗。

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

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

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

          。

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


          上一頁 1 2 下一頁

          關(guān)鍵詞: AVR EEPROM 數(shù)據(jù)丟失

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉