• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 關 閉

    新聞中心

    EEPW首頁 > 工控自動化 > 設計應用 > DSl8820 ROM編碼的一種搜索算法

    DSl8820 ROM編碼的一種搜索算法

    作者: 時間:2009-09-21 來源:網絡 收藏

    1.2
    每片含有一個唯一的64位。頭8位是產品系列碼,接著的 48位是產品序列號,最后8位是CRC(循環冗余校驗)碼。主機可以對總線上多片DS18820唯一尋址,因此多片DS18820能夠連在同一條數據線上而不會造成混亂,這為溫度的多點測量帶來了極大的方便。64位的注冊碼如下:

    本文引用地址:http://www.czjhyjcfj.com/article/163566.htm

    1.3 DS18820 ROM命令
    當單線總線上掛有多個DS18B20時,系統對總線上器件的數量和每個器件的ROM的識別與是通過DS18820 ROM命令與配合來實現的。下面具體介紹ROM搜索命令的工作過程。對64位ROM識別從最低位開始,ROM編碼的每一位搜索過程可總結為 “兩讀一寫”:讀一位,讀該位補碼;寫一位??偩€主機在ROM編碼每一位上完成這三步就可以獲得一個器件的ROM編碼。
    (1)兩 讀
    總線主機發布ROM搜索命令后執行一次讀,總線上所有器件就把它們各自ROM編碼的第一位放到總線來作出響應。這次讀獲得的數據是所有器件放在總線上數據的“與”。再執行一次讀,因為ROM搜索命令正在執行所以總線上所有器件把各自ROM編碼的第一位的補碼放在總線上,第二次讀獲得的數據也是所有器件放在總線上數據的“與”。對第一位的“兩讀”就此完成。之后主機再次進行的“兩讀”則是針對ROM編碼的第二位,以此類推。從“兩讀”獲得的數據有以下解釋,如表1所列。

    (2)- 寫
    對ROM編碼的某一位“兩讀”之后,對該位進行“-寫”操作?!?寫”操作寫的數據要根據“兩讀”獲得的數據來確定。如果“兩讀”數據為00,則表示總線上器件在該位上數據發生沖突,“-寫”寫的數據此種情況下具有“排除”的作用,如果器件ROM編碼在該位上的數據與“-寫”寫的數據相同,則繼續保持與總線的聯系。如果不相同則此器件從總線上“排除”,不再響應主機發布的命令,直到主機進行下一次復位。如果“兩讀”數據為01,則表示總線上所有器件在該位上均位0,為保持器件與總線的聯系,“-寫”操作主機應寫0。同理,如“兩讀”數據為10,主機則應寫1。

    2 DS18820 ROM編碼的搜索
    在一條“單線總線”上掛有多片。DS18820的情況下,對ROM編碼的搜索與識別主要是通過“兩讀”數據為00時“-寫”操作的“排除”作用來實現的。多次“排除”作用后,就可以使總線上只剩下唯一的一個器件仍與總線保持聯系。如何“排除”,這需要的配合。下面具體介紹DS18820 ROM編碼的搜索算法。



    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 海南省| 常熟市| 从江县| 安新县| 新津县| 松原市| 禹州市| 白河县| 南安市| 突泉县| 福清市| 德惠市| 达州市| 象山县| 元江| 南江县| 西乡县| 昭觉县| 博乐市| 舞阳县| 六枝特区| 平谷区| 松阳县| 定安县| 岗巴县| 陈巴尔虎旗| 汶川县| 都昌县| 南木林县| 太康县| 深泽县| 昭平县| 延津县| 民丰县| 会东县| 静安区| 揭阳市| 潜江市| 蓝山县| 台北县| 华池县|