(1)總線初始化,主控器先復位脈沖,然后從器件發(fā)應答脈沖。
(2)ROM指令,主控器通過ROM指令來讀取各從器件的ROM識別碼,以選擇1-Wire總線上的某一器件,其余器件忽略主控器的后續(xù)指令。
(3)RAM指令,通過對從器件RAM的讀寫操作,讓外圍器件實現(xiàn)某一功能。
所有1-Wire器件與主控器之間的通信都符合上述規(guī)程,但不同類型的1-Wire器件的結構和功能不同,8比特的ROM指令和RAM指令會略有不同,系統(tǒng)設計時查器件數(shù)據(jù)手冊即可。
3 接口時序及軟件模擬
在所設計的溫度測控系統(tǒng)中,選用了達拉斯公司性能優(yōu)良的1-Wire溫度傳感器DS1822,以一片常用的AT89C51作為系統(tǒng)主控器。89C51與1-Wire器件互連時,需要根據(jù)1-Wire總線協(xié)議,用軟件模擬1-Wire總線接口,89C51的P1和P3口都具有與1-Wire器件相同的集電極開路接上拉電阻的端口結構,根據(jù)管腳分配情況,選用P1.0模擬1-Wire總線接口。
如圖4所示,1-Wire總線上的數(shù)據(jù)傳輸是通過1-Wire總線協(xié)議最底層的操作時隙完成的。每個通信周期起始于主控器發(fā)出復位脈沖,然后,1-Wire器件以應答脈沖做出響應。當主控器將總線從空閑狀態(tài)的邏輯高拉為邏輯低時,即啟動了一個讀寫時隙。在寫“0”時隙中,主控器在整個時隙期間將總線拉低;而后在15us之內釋放總線為高。在讀時隙中,主控器將總線拉低1us,接頭釋放總線,這樣,1-Wire從器件就能夠接管總線,輸出有效數(shù)據(jù)。所有的讀寫時隙在60us至120us內完成,并且每個時隙之間至少需要1us的恢復時間。
按圖4的時序要求,先建立以下幾個關鍵的子函數(shù),作為1-Wire器件與8051系列單片機的軟件接口的基礎(晶振頻率為12M,一個機器周期為1us)。





