亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于海明編碼的EEPROM 數(shù)據(jù)存取功能的實現(xiàn)

        2015-08-26 06:36:30潘興明路勝杰尹文穎
        電子設(shè)計工程 2015年7期
        關(guān)鍵詞:單片機

        潘興明,石 倩,路勝杰,王 晨,尹文穎

        (北京石油機械廠 北京100083)

        EEPROM 是電可擦除可編程存儲器,具有占用引腳少、容量擴展配置靈活以及讀寫操作相對簡單的特點,在數(shù)據(jù)可保護存儲領(lǐng)域得到了廣泛的應(yīng)用[1-2]。 當(dāng)單片機片內(nèi)存儲空間不能滿足需求時,在單片機片外擴展EEPROM 存儲空間,可以擴展數(shù)據(jù)存儲空間,也可以實現(xiàn)數(shù)據(jù)的掉電保護。

        工業(yè)應(yīng)用現(xiàn)場環(huán)境惡劣,數(shù)據(jù)存儲傳輸量較大,在讀取EEPROM 數(shù)據(jù)時可能受到環(huán)境干擾等因素的影響降低數(shù)據(jù)傳輸?shù)臏蚀_性。 海明碼編譯碼簡單,不僅可以驗證數(shù)據(jù)是否有效,還能在數(shù)據(jù)出錯的情況下指明錯誤位置,使得它在數(shù)據(jù)通信、存儲系統(tǒng)和嵌入式系統(tǒng)中應(yīng)用非常廣泛[3]。 為了提高數(shù)據(jù)的可靠性,可以對需要發(fā)送的數(shù)據(jù)進行海明編碼,然后存儲到EEPROM 芯片中, 上位機讀取EEPROM 后來判斷出現(xiàn)錯誤的數(shù)據(jù)位,并及時進行校正。

        1 海明編碼簡介

        海明碼也稱漢明碼屬于線性分組編碼方式, 其編碼原理:在數(shù)據(jù)中間加入幾個校驗碼,碼距均勻拉大,將數(shù)據(jù)的每個二進制位分配在幾個奇偶校驗組里,當(dāng)某一位發(fā)生錯誤,會引起幾個校驗位的值發(fā)生變化,由此來進行某一位的糾錯。

        碼字(Code Word) 按如下方法構(gòu)建:

        1)把所有2 的冪次方的數(shù)據(jù)位標記為奇偶校驗位(編號為1, 2, 4, 8, 16, 32, 64 等的位置) ;

        2)其他數(shù)據(jù)位用于待編碼數(shù)據(jù)(編號為3, 5, 6, 7, 9, 10,11, 12, 13, 14, 15, 17 等的位置) ;

        3) 每個奇偶校驗位的值代表了代碼字中部分數(shù)據(jù)位的奇偶性,其所在位置決定了要校驗和跳過的比特位順序。

        位置1: 校驗位1, 跳過1 位, 校驗1 位, 跳過1 位(1,3,5,7,9,11,13,15,…)

        位置2: 校驗位2, 跳過2 位, 校驗2 位, 跳過2 位(2,3,6,7,10,11,14,15,…)

        位置4: 校驗位4, 跳過4 位, 校驗4 位, 跳過4 位(4,5,6,7,12,13,14,15,20,21,22,23,…)

        位置8:校驗位8,跳過8 位,校驗8 位,跳過8 位(8-15,24-31,40-47,…)

        如果全部校驗的位置中有奇數(shù)個1, 把該奇偶校驗位置為1;如果全部校驗的位置中有偶數(shù)個1,把該奇偶校驗位置為0。

        一般說來, 對所有校驗位進行檢查, 將所有出錯的校驗位置相加, 得到的就是錯誤信息所在的位置。

        2 EEPROM 存儲空間的硬件設(shè)計

        EEPROM 芯片選擇8 個IIC 總線通信協(xié)議的24LC512[4],見圖1。此芯片容量為512 kbit,工作電壓范圍1.8~5.5 V。此芯片1 次最多可寫入128 個字節(jié)數(shù)據(jù) (1 頁物理地址空間),1次最多讀取512 kbit,64K 字節(jié),即讀出整個芯片中數(shù)據(jù)。芯片的地址引腳可允許最多擴展8 個芯片, 使得尋找空間可達4 Mbit。 外部存儲電路的接口通過IIC 總線與單片機進行通信。端口A2,A1,A0 作為每個存儲芯片的片選信號,如圖1 所示,這3 個端口連接的邏 輯電平分別為000,001,010,011,100,101,110,111。 這樣設(shè)置后將EERPOM 外部存儲空間尋址范圍 達 到 0 ~0X7FFFF 字 節(jié)。 SCL 和SDA 連 接 單 片 機dsPIC33F3013 的IIC 模塊引腳,WP 引腳可以連接單片機的一個I/O 腳,在軟件設(shè)計過程中控制24LC512 芯片的寫保護端(WP 設(shè)置高電平則寫保護進行可以寫入數(shù)據(jù),低電平則寫保護功能使能,數(shù)據(jù)不能被寫入)。

        設(shè)計電路板的實物見圖2, 圖中右側(cè)為8 個24LC512 EEPROM 存儲芯片。

        圖1 EEPROM 硬件電路圖Fig. 1 EEPROM hardware circuit

        圖2 EEPROM 數(shù)據(jù)存取電路板Fig. 2 EEPROM data access PCB

        3 EEPROM 擴展空間的軟件編程思路

        3.1 IIC 總線通信原理簡介

        使用8 片EEPROM24LC512 芯片,在軟件設(shè)計時可以將A0用作尋址的第17位,A1用作尋址的第18位,A2用作尋址的第19 位。圖1中的8個芯片在接收或是發(fā)送數(shù)據(jù)時都作為從機工作,聽從于單片機IIC 模塊[5]的主機命令。

        芯片寫入數(shù)據(jù)有兩種方式:單個字節(jié)數(shù)據(jù)寫入和數(shù)據(jù)頁寫入。 單個字節(jié)的寫入見圖3,啟動IIC 后,需要向總線寫入控制字節(jié),然后地址高8 位,地址低8 位,需要寫入的字節(jié)數(shù)據(jù),24LC512 芯片產(chǎn)生ACK 確認信號后, 主機產(chǎn)生總線停止條件,一個字節(jié)的寫入操作全部完成。

        圖3 數(shù)據(jù)字節(jié)寫入序列圖Fig. 3 Data byte writing sequence

        實際存儲數(shù)據(jù)時,可能一次需要順序存儲大量數(shù)據(jù),如果每個字節(jié)都要按照圖3 中進行軟件編程, 勢必繁瑣,而24LC512 芯片具有頁寫入的功能,見圖4,方便用戶快捷將數(shù)據(jù)寫入芯片。 頁寫入操作和字節(jié)寫入不同處在于在控制字節(jié)數(shù)據(jù), 地址數(shù)據(jù)寫入后可以連續(xù)最多寫入128 個字節(jié)數(shù)據(jù),只要在最后寫入字節(jié)后檢測到24LC512 產(chǎn)生的ACK 確認信號,單片機IIC 模塊發(fā)送總線停止條件,本次頁寫入操作全部完成。 每個芯片從第1 個地址單元開始到第128 個單元為第1 頁,第129 個單元到256 個單元為第2 頁,以此類推。 當(dāng)一次寫入的數(shù)據(jù)地址范圍需要跨頁時,軟件要及時判斷且必須要分兩頁進行處理, 否則會導(dǎo)致數(shù)據(jù)在當(dāng)前一頁輪回操作,數(shù)據(jù)寫入完全混亂。

        24LC512 讀操作的方式包括三種:當(dāng)前地址單元數(shù)據(jù)讀取、隨機地址讀取和地址單元連續(xù)讀取。 24LC512 芯片內(nèi)部有一個地址計數(shù)器, 會將上次讀取操作的單元地址自動加1轉(zhuǎn)向當(dāng)前地址。 單次的當(dāng)前地址單元數(shù)據(jù)讀取相對于其他兩種方式較簡單,因為不需要在IIC 總線上進行地址操作,直接就可讀取,如圖5 所示。

        圖4 數(shù)據(jù)頁寫入序列圖Fig. 4 Data page writing sequence

        圖5 當(dāng)前地址單元數(shù)據(jù)讀取序列圖Fig. 5 Current address byte reading sequence

        隨機地址讀取允許主機可以隨機訪問地址空間中的任意位置。操作時首先在啟動IIC 總線后要寫入控制字節(jié),接著寫入具體的地址,然后再次啟動IIC 總線發(fā)送控制字節(jié)(讀操作),24LC512 從機確認后開始發(fā)送該地址中的1 個字節(jié)數(shù)據(jù), 主機接收數(shù)據(jù)后不會確認但是會產(chǎn)生一個停止IIC 總線的時序。 這樣一次隨機地址讀取操作完畢,如圖6 所示。

        地址單元連續(xù)讀取的方式和隨機地址單元數(shù)據(jù)讀取方式很相近,只是在主機接收到1 個數(shù)據(jù)字節(jié)之后不是產(chǎn)生停止IIC 總線的時序,而是產(chǎn)生一個ACK 確認信號。 這個確認信號可以讓從機繼續(xù)發(fā)送下一個地址單元中的數(shù)據(jù),如此實現(xiàn)連續(xù)讀取。 直到主機接收到最后一個字節(jié)數(shù)據(jù)后主機才產(chǎn)生停止IIC 總線的時序,如圖7 所示。

        圖6 隨機地址單元數(shù)據(jù)讀取序列圖Fig. 6 Random address byte reading sequence

        圖7 連續(xù)地址單元數(shù)據(jù)讀取序列圖Fig. 7 Sequence address byte reading sequence

        實際EEPROM 數(shù)據(jù)在讀取時,一次讀取數(shù)據(jù)量很大,所以采用連續(xù)地址單元數(shù)據(jù)讀取方式更加適合,但是需要特別注意的是由于24LC512 芯片每次最多只能讀取一整片的數(shù)據(jù)。

        編寫數(shù)據(jù)讀取程序時,由于每次發(fā)送或接收一個字節(jié)數(shù)據(jù)都需要判斷并給予IIC 總線一個狀態(tài),而dsPIC33F3013 單片機IIC 模塊具有檢測這些狀態(tài)的中斷功能可用, 所以讀取程序的主要操作放在IIC 中斷服務(wù)程序中進行。

        dsPIC33F3013 單 片 機IIC 模 塊 作 為 主 機,24LC512 數(shù) 據(jù)存儲的8 個芯片作為從機。 單片機IIC 模塊作為主機時,中斷在以下事件完成時產(chǎn)生[6]:啟動條件、停止條件、數(shù)據(jù)傳輸字節(jié)發(fā)送/接收、應(yīng)答發(fā)送、重復(fù)啟動、檢測到總線沖突事件。 這些條件完成時產(chǎn)生的中斷入口只有一個, 所以IIC 中斷服務(wù)程序只有一個,在中斷服務(wù)程序中對這些狀態(tài)完成集中處理。

        3.2 EEPROM 寫數(shù)據(jù)子程序設(shè)計

        單片機IIC 模塊向24LC512 寫數(shù)據(jù)子程序設(shè)計,考慮到可能遇到的跨頁寫入問題,設(shè)定一次連續(xù)寫入的字節(jié)個數(shù)不大于128,這樣每次寫操作最多進行一次跨頁操作。若實際寫地址的范圍跨度超出128 個字節(jié)范圍,可以將空間劃分為若干個128 字節(jié)段和最后一個不大于128 個字節(jié)段來分別調(diào)用24LC512 寫數(shù)據(jù)子程序即可解決跨頁寫入數(shù)據(jù)問題。

        具體設(shè)計寫數(shù)據(jù)子程序時,首先要判斷此次寫入的地址范圍(最大不超過128 個字節(jié))是否需要跨越地址頁。 如果不需跨越地址頁則在本頁執(zhí)行一次頁寫入操作即可完成,否則將會在寫入數(shù)據(jù)的首地址所處的本頁執(zhí)行頁操作至本頁最后一個地址單元,然后在連續(xù)的下一頁第一個地址單元開始寫入剩下的數(shù)據(jù)字節(jié)數(shù)量完成本次寫入操作。 由于向24LC512 寫入數(shù)據(jù)的正確序列是唯一且確定的,見圖4。第一次中斷在IIC 啟動條件完成時產(chǎn)生。 每次寫入一個字節(jié)的命令或地址或數(shù)據(jù),接收器件產(chǎn)生應(yīng)答信號,因而還會產(chǎn)生中斷,用戶要確定每次進入中斷時,寫數(shù)據(jù)序列所進行到的確切位置,這樣才能在中斷程序中做出正確的處理,并為下次中斷做以準備,最后一次中斷發(fā)生在IIC 停止條件完成時。

        3.3 EEPROM 讀數(shù)據(jù)子程序設(shè)計

        單片機IIC 模塊從24LC512 讀取數(shù)據(jù)子程序設(shè)計,考慮作。 從24LC512 讀出數(shù)據(jù)的正確序列是唯一且確定的,見圖7。 第一次中斷在IIC 啟動條件完成時產(chǎn)生。 每次在IIC 總線上寫入或讀取數(shù)據(jù),接收數(shù)據(jù)一方都會產(chǎn)生應(yīng)答信號,產(chǎn)生中斷, 用戶要確定每次進入中斷時讀取數(shù)據(jù)序列所處的位置,這樣才能在中斷服務(wù)程序中做出合理的處理,并為下次中斷做以準備。 最后一次中斷發(fā)生在IIC 停止條件完成時。

        4 IIC 中斷服務(wù)程序流程圖設(shè)計

        在設(shè)計中斷服務(wù)程序時同時考慮到寫入數(shù)據(jù)過程和讀取數(shù)據(jù)過程中所產(chǎn)生的中斷,為了便于編程,設(shè)置一個標志位來分辨寫入過程中斷和讀取過程中斷, 且每次進入中斷后, 根據(jù)程序在發(fā)送和讀取序列中所進行的具體位置的差異,給此標志位賦以不同的值,為下次中斷操作做好準備。

        中斷服務(wù)程序設(shè)計的基本框圖,如圖8 所示。

        圖8 IIC 中斷服務(wù)程序流程圖Fig. 8 Flow chart of IIC interrupt service program

        圖8 中,進入中斷服務(wù)程序后可以由標志位值的不同判斷是24LC512 寫數(shù)據(jù)操作還是讀取數(shù)據(jù)操作還是其他。從圖中可以看出,左邊部分為讀取數(shù)據(jù)基本流程圖,右邊為寫入數(shù)據(jù)基本流程圖。 每次進入中斷都需要根據(jù)標志位的值進行相應(yīng)處理,并且依據(jù)下次進入中斷服務(wù)程序的狀態(tài)對標志位進行賦值便于下次操作。 可見,借助標志位的設(shè)置和判斷,使得編程更加簡便。

        5 結(jié)論

        對單片機系統(tǒng)測量的數(shù)據(jù)進行于海明編碼,然后將大量數(shù)據(jù)存儲在以單片機IIC 模塊為核心擴展的8 片24LC512存儲芯片構(gòu)成的4Mbit 數(shù)據(jù)存儲空間內(nèi)。測試表明,經(jīng)過利用海明碼編碼的數(shù)據(jù)傳輸?shù)恼`碼率低于百萬分之一。 現(xiàn)場應(yīng)用證明,系統(tǒng)運行穩(wěn)定,數(shù)據(jù)存取可靠,滿足設(shè)計需求,具有很好的工程應(yīng)用價值。

        [1] 姚亞峰,陳建文,黃載祿. 嵌入式系統(tǒng)中EEPROM接口及控制電路設(shè)計[J].半導(dǎo)體技術(shù),2007(4):328-330.YAO Ya-feng, CHEN Jian-wen , HUANG Zai-lu. Design of Interface and Control Circuit of EEPROM in Embedded System[J].Design and Development of IC,2009(7):328-330.

        [2] 于宗光,許居衍,魏同立. EEPROM單元結(jié)構(gòu)的變革及發(fā)展方向[J].固體電子學(xué)研究與進展,1996(3):233-239.YU Zong-guang,XU Ju-yan,WEI Tong-li.Change and developing of the EEPROM cell structure[J].Research & Prgress of Solia State Electronic,1996(3):233-240.

        [3] 汪海山,康劍冰,馬騁. 漢明碼在大型傳感器網(wǎng)絡(luò)中的應(yīng)用研究[J].計算機應(yīng)用研究,2009(7):2656-2657.WANG Hai -shan, KANG Jian -bing , MA Cheng.Application and research of Haiming code in large scale sensor networks. Application Research of Computers, 2009(7):2656-2657.

        [4] 512K IIC CMOS Serial EEPROM[EB/OL].(2004).http://www.microchip.com.

        [5] I2C Serial EEPROM datasheet(pdf)[M].Microchip Technology Inc,2005.

        [6] DSPIC33F Reference Guide.[EB/OL].http://www microchip.com.

        猜你喜歡
        單片機
        基于單片機的SPWM控制逆變器的設(shè)計與實現(xiàn)
        電子制作(2019年13期)2020-01-14 03:15:28
        基于單片機的層次漸變暖燈的研究
        電子制作(2019年15期)2019-08-27 01:12:10
        基于單片機的多功能智能插排
        電子制作(2019年11期)2019-07-04 00:34:48
        基于單片機的便捷式LCF測量儀
        電子制作(2019年9期)2019-05-30 09:42:02
        小議PLC與單片機之間的串行通信及應(yīng)用
        電子制作(2018年12期)2018-08-01 00:48:04
        MSP430單片機在仿真中要注意的幾點問題
        電子制作(2017年9期)2017-04-17 03:00:53
        基于單片機的平衡控制系統(tǒng)設(shè)計
        電子制作(2017年19期)2017-02-02 07:08:27
        基于單片機的三維LED點陣設(shè)計
        電子制作(2016年21期)2016-05-17 03:52:51
        Microchip推出兩個全新PIC單片機系列
        基于Proteus的單片機控制系統(tǒng)的仿真設(shè)計
        欧美精品一区视频| 强d乱码中文字幕熟女免费| 国产精品永久久久久久久久久| 久久丫精品国产亚洲av不卡| 无码专区中文字幕DVD| av黄片免费在线观看| 91九色播放在线观看| 肉色欧美久久久久久久免费看| 色妞www精品视频| 白白色发布在线播放国产| 久久精品国产亚洲不卡| 国产小视频在线看不卡| 精品国产一区二区三区免费| 欧美日韩亚洲成色二本道三区 | 少妇高潮惨叫久久久久电影69| 东京无码熟妇人妻av在线网址| 人妻精品丝袜一区二区无码AV| 一区二区三区四区免费国产视频 | 一区二区亚洲熟女偷拍| 亚洲成av人片不卡无码| 国产乱子乱人伦电影在线观看| 精品少妇人妻成人一区二区| 一区二区三区日本视频| 日韩日韩日韩日韩日韩| 99re久久精品国产| 在线不卡av天堂| 中文字幕无线码| 国产精品一区二区久久蜜桃| 男女激情视频网站在线| 蜜臀性色av免费| 在教室伦流澡到高潮hnp视频| 亚洲国产精品国自产拍av在线| 精品国产一区二区三区av天堂| 亚洲av无码久久精品蜜桃| 麻豆五月婷婷| av中文字幕性女高清在线| 久久精品国产99久久无毒不卡| 色一乱一伦一图一区二区精品| 日本高清一区二区三区视频| 亚洲精品第一页在线观看| 最新高清无码专区|