摘 要:一線總線器件以其硬件接口簡單在各個領域越來越廣泛地得到應用,其讀寫都必須按照嚴格的時序要求。本文給出了一線總線的標準軟件接口及其源代碼。該軟件接口已在實際工程項目中應用,數據讀取和寫入準確,可靠。
關鍵詞:一線總線 軟件接口
一線總線(1—Wire)是Dallas半導體公司推出的外圍串行擴展總線標準,采用單根數據線和地線構成半雙工通訊。一線總線只有一根數據輸入輸出線DQ,總線上所有的器件都掛在DQ上。這些測控器件由該公司提供,每個器件都有全球唯一的64位ROM序列號,確保掛在總線上能被唯一標識,實現對象的控制。將其應用于低速(約100kbps以下)的測控系統(tǒng)中,將大大簡化線路結構和減少硬件開銷。
1硬件配置
一線總線向所有的器件既提供通訊連接,又提供工作電源?偩電源經由一個連接于3V至55V電源端的4.7kΩ上拉電阻提供。特別注意的是,溫度傳感器件18B20在兩線應用時,應將IC的VCC與GND接在一起,焊接牢固。若VCC脫開未接,傳感器會只送+850℃的溫度值。
2軟件控制
一線總線上控制器與總線器件的通訊是通過操作時序完成總線上的數據傳輸。一線總線有嚴格的時序要求,具體的時序要求可以參考有關手冊或參考文獻[1]。為了精確控制一線總線的特殊時序要求,必須先建立幾個關鍵的函數。延時函數是必需的,它是所有讀和寫控制的組成部分。這個函數完全依賴與微處理器的速度。以下為C51的延時原型函數。

每個通訊周期起始于控制器發(fā)出的復位脈沖,其后緊跟器件的應答脈沖。因此復位函數也是必不可少的。以下為C51的復位函數,復位時隙為480us。時序圖如圖1a所示,產生復位脈沖后微處理器釋放總線,總線上的器件通過拉低總線來指示其是否在線。如果總線上有多個器件,則同時發(fā)出應答脈沖。


讀時隙起始于微處理器將總線拉低lus,接著釋放總線,這樣總線上的器件就能接管總線,輸出有效數據。時序圖如1b所示。

在讀取1字節(jié)數據時,所有讀時隙必須在60us至120us內完成,且在每個循環(huán)之間至少需要1us的恢復時間。


當主機將總線從邏輯高(空閑狀態(tài))拉為邏輯低時,即啟動一個寫時隙。在寫0時隙期間,微控制器在整個時隙中將總線拉低;在寫1時隙期間,微處理器將總線拉低,然后在時隙起始后15us之內釋放總線。時序如圖1c所示。

在寫一個字節(jié)數據時,所有的寫時隙必須在60us至120us內完成,且在每個循環(huán)之間于少需要1us的恢復時間。

3 典型應用
下圖為一個由一線總線的構成的分布式溫度監(jiān)控系統(tǒng)。該系統(tǒng)若干個一線總線數字溫度傳感器DS18s20一起掛在一線總線上,單片機通過I/O口,應用本文的軟件接口實現對各點溫度的讀取。在實際應用中,總線上應有上拉電阻。
