• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      1-Wire在微處理器中的搜索算法的研究

      2010-05-10 11:04:18羅正生
      制造業(yè)自動化 2010年7期
      關(guān)鍵詞:數(shù)據(jù)位搜索算法字節(jié)

      羅正生

      (四川攀枝花學(xué)院,攀枝花 617000)

      0 引言

      隨著微處理的高速發(fā)展,微處理系統(tǒng)外圍接口從原來的并行方式為主被串行方式代替。通常的串行擴展接口和串行擴展總線有:UART的移位寄存器方式,MOTOROLA公司的SPI,NS公司的Microwire,和Dallas公司的1-Wire總線等。而1-Wire總線是一種最簡單的總線形式,它通過單條連接線完成了全部的控制、通信和供電,節(jié)省了I/O口,降低了系統(tǒng)成本并簡化了設(shè)計。1-Wire 器件不僅解決了主機/配件之間的所有互聯(lián)問題,而且僅僅需要一個專用接點即可達到這一目的[1]。

      1 搜索算法

      1-Wire器件與微控制器的硬件配置比較簡單。作為主機的微控制器通過1根I/O口與1-Wire器件的數(shù)據(jù)線相連,外接一個4.7kΩ的上拉電阻;微控制器的地線與1-Wire器件的地線相連。在標(biāo)準(zhǔn)速率下,1-Wire總線的最大速率為16.3kbps.在高速模式下,速率可達142kbps[2]。

      1-Wire器件的應(yīng)用關(guān)鍵在于軟件算法的實現(xiàn)。每片1-Wire器件都有唯一的64位序列碼,它存儲在只讀存儲器(ROM)中。在1-Wire網(wǎng)絡(luò)中,序列碼用于主機對從機器件進行逐一尋址。我們采用的搜索算法是二叉樹型結(jié)構(gòu),搜索過程沿各分節(jié)點進行,直到找到的ROM碼,即葉子為止。后續(xù)的搜索操作沿著節(jié)點上的其他路經(jīng)進行,按照同樣的方式直到找到總線上的所有器件代碼。搜索算法首先通過復(fù)位(Reset)和在線應(yīng)答脈沖(Presence Pulse)時隙將1-Wire總線上的所有器件復(fù)位;成功地執(zhí)行該操作后,發(fā)送1個字節(jié)的搜索命令;搜索命令使1-Wire器件準(zhǔn)備就緒、開始進行搜索操作。

      搜索命令分為兩類:標(biāo)準(zhǔn)搜索命令(0FH)用來搜索連接到網(wǎng)絡(luò)中的所有器件;報警或有條件搜索命令(ECH)只用來收縮那些處于報警狀態(tài)下的期間,這種方式縮小了搜索范圍,可以快速查找到所需注意的器件。搜索命令發(fā)出之后,開始搜索。首先總線上的所有從機器件同時發(fā)送ROM碼(也叫注冊碼)中的第一位(最低有效位)。與所有的1-Wire通信一樣,無論是讀取數(shù)據(jù)還是向從機器件寫數(shù)據(jù),都由1-Wire主機啟動每一位操作。按照1-Wire的特點,當(dāng)所有從機器件同時應(yīng)答主機時,結(jié)果相當(dāng)于全發(fā)送數(shù)據(jù)位的邏輯AND;從機發(fā)送其ROM碼的第一位后,主機啟動下一位操作、接著從機發(fā)送第一位數(shù)據(jù)的補碼;從兩次讀到的數(shù)據(jù)位可以對ROM碼的第一位做出表2的判斷。

      按照搜索算法的要求,1-Wire主機必須向總線上的從機發(fā)回一個指定位;如果從機器件中ROM碼的當(dāng)前位的值與該數(shù)據(jù)位匹配,則繼續(xù)參與搜索過程;若從機器件的當(dāng)前位與之不匹配,則該器件轉(zhuǎn)換到等待狀態(tài),并保持等待狀態(tài)直到下一個1-Wire復(fù)位信號到來。其余63位ROM碼的搜索依然按照這種“讀兩位”、“寫一位”的模式進行重復(fù)操作。表1為主機和從機的搜索過程。

      表 1 1-Wire主機和從機的搜索過程

      可以看出,如果所有總線上的器件在當(dāng)前位具有相同值,那么只有一條分支路徑可選??偩€上沒有器件相應(yīng)的情況是一種異常狀態(tài),可能是要查找的器件在搜索過程中與1-Wire總線脫離。如果當(dāng)前位既有0也有1,這種情況稱為位值差異,它對在后續(xù)搜索過程中查找器件起關(guān)鍵作用。搜索伏安法制定在第一輪查找中若出現(xiàn)差異(數(shù)據(jù)位/補碼 = 0/0),則選用“0”路徑。記錄最后一次值差異的位置提供下一次搜索使用,搜索算法計算還對最初8位過程中出現(xiàn)的最后一次位差異保持跟蹤;64位注冊碼的前8位是家族碼,在器件的搜索過程中可以按照其家族碼進行分類。記錄家族碼的最后一次差異可以用于有選擇性地跳過1-Wire器件的整個分組。如需進行選擇性地搜索,可參考關(guān)于高級變量搜索的詳細解釋。64位ROM碼中包括8位循環(huán)冗余校驗(CRC);CRC值用于校驗是否搜索到正確的ROM碼。

      2 搜索命令

      圖1 搜索算法流程圖

      “FIRST”操作是搜索1-Wire縱向上的第一個從機器件。該操作是通過將LastDiscrepancy、LastFamilyDiscrepancy和LastDeviceFlag置零,然后進行搜索完成的。最后ROM碼從ROM_NO寄存器中讀出。若1-Wire總線上沒有器件,復(fù)位序列就檢測不到應(yīng)答脈沖,搜索過程中止。高級變量搜索有3種利用同一組狀態(tài)變量LastDescrepancy、LastFamilyDiscrepancy、LastDeviceFlag、ROM_NO實現(xiàn)的高級變化搜索可以得到三種高級變量搜索算法,這幾種高級搜索算法允許來指定作為搜索目標(biāo)的器件的類型(家族碼)或者是制定需要跳過或驗證某類型的器件是否在線。

      “TARGET SETUP”操作就是用預(yù)置搜索狀態(tài)的方式首先查找一個特殊的家族類型,每個1-Wire都有一個字節(jié)的家族碼內(nèi)嵌在ROM碼中,逐級可以通過家族碼來識別器件按所具有的特性和功能。如1-Wire總線上有多片器件是,通常是將搜索目標(biāo)首先定位在需注意的器件類型上。為了將一個特殊的家族作為搜索目標(biāo),需要將所希望的家族碼字節(jié)方到ROM_NO寄存器的第一個字節(jié)中,并且將ROM_NO寄存器的復(fù)位狀態(tài)置零[3]。

      3 搜索算法的應(yīng)用

      有了上面的搜索算法以及高級變量搜索,利用1-Wire的通訊協(xié)議就可以很容易辨別在單總線上的多節(jié)點1-Wire器件。用搜索算法可以很容易找出在總線上某一家族碼的所有1-Wire器件,通過微機的串口可以向總線上具有某一特定的家族碼的1-Wire器件中寫入希望的內(nèi)容,圖1列出了對一個器件進行搜索的流程圖[4]。

      圖中com_id_bit是id_bit的補碼,是搜索過程中所有應(yīng)答期間的id_bit_number位的補碼的邏輯AND;id_bit是在位搜索中第一次讀取的值,是搜索過程中所有應(yīng)答期間的id_bit_number位的邏輯AND;id_bit_number是記錄當(dāng)前搜索1到64位ROM中的哪一位的量;LastDeviceFlag是指明前一次搜索歸的已經(jīng)是最后一個器件的標(biāo)志位;LastDiscrepancy是位指針,指明下次搜索從哪一個差異值開始;last_zero是上次被寫入0的值差異位的位置;ROM_NO是記錄當(dāng)前正在查找的ROM注冊碼的8字節(jié)緩沖器;search_direction是位變量,其值用來指明方向,具有此數(shù)據(jù)位規(guī)定值的所在器件繼續(xù)響應(yīng)操作,其他器件轉(zhuǎn)入等待狀態(tài)直到下一次1-wire復(fù)位[4]。

      4 結(jié)束語

      由于1-Wire器件有節(jié)省線資源、結(jié)構(gòu)簡單等諸多優(yōu)點,所以其應(yīng)用也越來越廣泛,文章只介紹了1-Wire用于多節(jié)點操作系統(tǒng)的搜索算法和一個1-Wire器件燒寫器的簡單應(yīng)用,以拋磚引玉。

      [1] 譚浩強.C 程序設(shè)計[M] .北京:清華大學(xué)出版社,1997.

      [2] 胡漢才.單片機原理及其接口技術(shù)[M].北京:清華大學(xué)出版社,2001.

      [3] DS2432 1kb Protected 1-Wire EEPROM with SHA-1.Engine.www.maximic.com.

      [4] 謝洪波.嵌入式網(wǎng)絡(luò)數(shù)字監(jiān)控系統(tǒng)接口與網(wǎng)絡(luò)帶寬測量[D].成都.電子科技大學(xué),2005.

      猜你喜歡
      數(shù)據(jù)位搜索算法字節(jié)
      A320飛機大氣數(shù)據(jù)的采集和計算在排故中的應(yīng)用
      No.8 字節(jié)跳動將推出獨立出口電商APP
      改進的和聲搜索算法求解凸二次規(guī)劃及線性規(guī)劃
      No.10 “字節(jié)跳動手機”要來了?
      簡談MC7字節(jié)碼
      一種適用于FPGA系統(tǒng)中的變速箱電路設(shè)計
      減少調(diào)度自動化設(shè)備通訊串口丟包率的措施
      電子測試(2016年3期)2016-03-12 04:46:52
      基于汽車接力的潮流轉(zhuǎn)移快速搜索算法
      基于逐維改進的自適應(yīng)步長布谷鳥搜索算法
      基于跳點搜索算法的網(wǎng)格地圖尋路
      平阴县| 奉节县| 醴陵市| 隆安县| 威宁| 横山县| 集贤县| 洪泽县| 建德市| 遂川县| 钟山县| 金沙县| 屏东市| 曲沃县| 蒲城县| 华池县| 安岳县| 黄冈市| 萍乡市| 滁州市| 仪征市| 盐津县| 新昌县| 崇仁县| 大庆市| 科尔| 康定县| 宜宾市| 义马市| 鄂托克旗| 兴城市| 宿松县| 特克斯县| 衡阳市| 班戈县| 石城县| 内乡县| 台北市| 乐都县| 静安区| 上栗县|