DS18B20_ROM編碼的搜索算法_第1頁
DS18B20_ROM編碼的搜索算法_第2頁
DS18B20_ROM編碼的搜索算法_第3頁
DS18B20_ROM編碼的搜索算法_第4頁
DS18B20_ROM編碼的搜索算法_第5頁
已閱讀5頁,還剩2頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、DS18B20 ROM編碼的搜索算法當溫度傳感器均掛與單線總線上時,對單線總線上的 DS18B20 正確尋址是其 正常地測量溫度先決條件,而識別 ROM編碼是對單線總線上的 DS18B20 正確尋 址唯一方法。所以對單線總線上的 DS18B20 ROM 編碼搜索與識別是必須的。1) 單線總線”通信協議單線總線”是一種在一條總線(這條總線只有一條口線)具有單主機多從機 的總線系統,在單線總線”可掛多個從機系統。為了不引起邏輯上的沖突,所有 從機系統 單線總線”接口都是漏極開路的,多個從機系統輸出信號在總線上實現 線與。因此在使用時必須對總線外加上拉電阻。為保證數據的完整性,所有的單線總線器件都要

2、遵循嚴格的通信協議。單線總線”通信協議定義了復位脈沖、應答脈沖、寫時序和讀時序等幾種信號類型(具體的時序參考 3.1節,這里不再做具體介紹)。所有的單總線命令序列(如初 始化,ROM 命令,RAM 命令)都是由這些基本的信號類型組成的。 在這些信號中, 除了應答脈沖外, 其它均由主機發出, 并且發送的所有命令和數據都是字節的低 位在前。2) DS18B20 ROM 搜索命令當單線總線上掛有多個 DS18B20 時,系統對總線上器件的數量和每個器件 的ROM的識別與搜索是通過 DS18B20 ROM搜索命令與算法配合來實現的。 下 面具體介紹 ROM 搜索命令的工作過程。對 64 位 ROM 編

3、碼識別從最低位開始, ROM 編碼的每一位搜索過程可總結為 兩讀一寫”:讀一位,讀該位補碼,寫一 位。總線主機在 ROM 編碼每一位上完成這三步就可以獲得一個器件的 ROM 編 碼。1兩讀”總線主機發布 ROM 搜索命令后執行一次讀, 總線上所有器件就把它們各自 ROM編碼的第一位放到總線來做做出響應。這次讀獲得的數據是所有器件放在 總線上數據的 與”。再執行一次讀,因為 ROM 搜索命令正在執行所以總線上所 有器件把各自ROM 編碼的第一位的補碼放在總線上,第二次讀獲得的數據也是 所有器件放在總線上數據的 寫”。對第一位的 兩讀”就此完成。之后主機再次進 行的兩讀”則是針對ROM編碼的第二位

4、,以此類推。從 兩讀”獲得的數據有以 下解釋,見表 3-1表 3-1兩讀”獲得的數據解釋兩讀”數據兩讀”數據解釋00有器件在總線上,總線上所有器件在此數據位上發生沖突01有器件在總線上,總線上所有器件在此數據位均為010有器件在總線上,總線上所有器件在此數據位均為111沒有有器件在總線上4寫”對 ROM 編碼的某一位兩讀”之后對該位進行寫”操作。寫”操作寫的 數據則要根據 兩讀”獲得的數據來確定,如果 兩讀”數據為 00 則表示總線上器 件在該位上數據發生沖突, 寫”寫的數據此種情況下具有 排除”的作用,如果 器件 ROM編碼在該位上的數據與乙寫”寫的數據相同則繼續保持與總線的聯 系。如果不相

5、同則此器件從總線上 排除”,不再響應主機發布的命令,直到主機 進行下一次復位。如果兩讀”數據為 01 則表示總線上所有器件在該位上均位 0, 為保持器件與總線的聯系乙寫”操作主機應寫 0。同理為兩讀”數據為 10主機 則應寫 1。3)DS18B20 ROM編碼的搜索算法在一條 單線總線”上的掛有多片 DS18B20 情況下,對 ROM 編碼的搜索與 識別主要是通過 兩讀”數據為 00 時 寫”操作的 排除”作用來實現的。多次 排 除”作用后就可以使總線上只剩下唯一的一個器件仍與總線保持聯系。如何排除”這需要算法的配合。下面具體介紹 DS18B20 ROM 編碼的搜索算法。先確立幾個定義:對 兩

6、讀”數據為 00 的 ROM編碼位,之后寫”操作主 機要寫的數據定義為“0內位”;所有 00 寫位的集合定義為“0由位組”。那么搜 索算法所要解決的問題就是:確立一個 00 寫位組,確保搜索命令能夠搜索到一 個唯一的 ROM編碼,并在完成一次搜索后對 00 寫位組做出更新以確保下次的 搜索命令能夠搜索到一個唯一的 ROM 編碼并且不會搜索到已經搜索到的 ROM 編碼,直到完成總線上所有的器件的 ROM編碼搜索。在給出搜索算法規則前再確立幾個定義:00 寫位組中最高 ROM 編碼位對應 的00 寫位定義為 最高 00 寫位”;00 寫位組中鄰近最高 00寫位的 00寫位定義 位 次高00 寫位”

7、;如果更新后的 00 寫位組不足以搜索到一個唯一的 ROM 編碼, 則添加新的 00 寫位,這個新的 00 寫位定義位 新 00 寫位”。DS18B20 ROM編碼的搜索算法規則:1第一次搜索確立一個 00 寫位組,其中所有 00寫位全部為 0。2每次搜索后更新 00 寫位組并從最高 00 寫位開始更新。300寫位組更新規則:如果最高 00 寫位為 0 則改最高 00 寫位為 1,更新 完成。如果最高 00 寫位為 1,則棄去最高 00 寫位并把次高 00 寫位作為 新的最高 00寫位。4如果出現新 00 寫位,新 00寫位一律為 0 并作為新的最高 00寫位。5如果 0 寫位組全為 1則搜索

8、所有器件的 ROM編碼,搜索結束。4)單線總線上 DS18B20 ROM 編碼的搜索與識別功能函數對一條 單線總線”上多片 DS18B20 ROM 編碼搜索與識別具體由 C51 編寫的 函數 uchar SearchRomID(uchar RomIDn8)來實現。函數的返回值是總線上查找 到的器件個數,總線上所有器件的ROM 編碼存入二維數組 RomIDn8。其中n 為總線上允許掛器件的最大值。文中取16。先對程序中的幾個重要變量做一寫說明:_00wbit: 一維數組,用來存儲 00 寫位組全部內容。它的長度由總線上允許 掛器件的最大值決定。每寫一個00寫位都可以排除”至少一個總線上的器件,當

9、總線上器件數為 n 是,_00wbit 數組的長度應為 n-1。當然這是最壞情況下的 取值,很多情況下_00wbit數組的長度小于這個值,這時不用的_00wbit 數組位用 2來填充。Rom64: 一維數組,臨時存儲 64 位 ROM 編碼。b:搜索結束標志位。R1,R2:兩讀”數據位。程序代碼如下:uchar SearchRomID(uchar RomID168)uchar xdata Rom64;uchar i,j,R1,R2,a,b,c,d;uchar _00wbit15=2; 初始化 00 寫位組全部為填充位 2for(i=0 ,c=0;i16;i+)Reset(); /復位所有從機w

10、ritechar(0 xf0); 主機發布搜索命令for(j=0;j64;j+)R1=readbit(); 讀一位_nop_();R2=readbit(); 讀該位補碼_nop_();if(R1=0&R2=1)未出現數據沖突,主機寫 0Romj=0;writebit(0);else if(R1=1&R2=0)未出現數據沖突,主機寫 1(Romj=1;writebit(1);else(if(_00wbitc=2) / 出現新 00 寫位(writebit(0);Romj=0;_00wbitc=0; /新 00 寫位賦值為 0c+=1;else if(_00wbitc=1)/00寫

11、位組中 00 寫位為 1,主機寫 1(writebit(1);Romj=1;c+=1;else if(_00wbitc=0) /00 寫位組中 00 寫位為 0,主機寫 0(writebit(0);Romj=0;c+=1;for(j=0;j64;j+=8) 將 64 位 ROM 編碼整理成 8字節存入 RomIDn8中(for(d=0;d=1;RomIDij/8|=0 x80;else RomIDij/8=1;for(a=0,c=7;c=0;c-) 更新 00 寫位數組(if(_00wbitc=2) /跳過 00 寫位組中的填充位continue;if(_00wbitc=0&a=0)/

12、更改最高 00 寫位并跳出(_00wbitc=1;break;else if(_00wbitc=1)/ 最高 00 寫位為 1(if(c!=0) /為 1 的 00寫位不為 00 寫位組的最低位(a+=1;/記錄不為 00 寫位組的最低位且為 1 的連續 00寫位個數continue;else(b=1; /00寫位組全部為 1,搜索結束置標志位break;else if(_00wbitc=0&a!=0)/連續為 1 的 00 寫位后第一個為 0的 00寫位(_00wbitc=1;/賦次高 00 寫位為 1for(;a0;a-)/連續棄去為 1 的最高 00 寫位(c+=1;_00wbitc=2;break;if(b=1) break; /搜索結束標志位為 1跳出return(i+1);/返回總線上器件個數單線總線上 DS18B20 ROM編碼的搜索與識別功能函數流程圖如圖 3-7所示。開始=F夏位并發布搜索命令讀一,謝卜碼R2gl =

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論