Dallas公司生產(chǎn)的集成電路中,廣泛應(yīng)用了1-wire總線。主機只需1根連線就可以把一個或數(shù)個1-wire總線器件連接起來,實現(xiàn)有效可靠的數(shù)據(jù)通信。但是,在使用1-wire總線驅(qū)動多個器件、連接電纜線較長的場合,它的驅(qū)動能力是否適應(yīng);或者說,應(yīng)該如何提高1-wire總線器件的驅(qū)動能力? 本文就此問題進行分析和實驗。
1 1-wire總線簡介
從 Dallas公司提供的圖1所示讀寫時序圖可以看出,主機讀DS18B20 時,首先應(yīng)該把線拉低至少1μ s,然后在15μs內(nèi)讀總線的邏輯狀態(tài)(t0~t1)。DS18B20 則在主機拉低總線1μs內(nèi)開始輸出數(shù)據(jù),如果為0,繼續(xù)拉低總線,并在15~60μs(t1~t2)之間釋放總線(典型值為30μs),由上拉電阻把總線拉至高電平;如果數(shù)據(jù)位為1,則在主機拉低總線1μs后,DS18B20 的DQ端呈現(xiàn)開漏狀態(tài),一旦主機釋放總線,上拉電阻就把總線拉至高電平。在60μs(t2)之后,1-wire總線還必須繼續(xù)保持高電平至少1μs,作為兩個數(shù)據(jù)位之間的分隔(稱之為“恢復(fù)時間”)。由此可見,為了保證所讀數(shù)據(jù)的可靠性,89C2051必須在15μs前讀取總線的邏輯狀態(tài)。
圖1 1-wire總線讀寫時序圖
主機在對DS18B20進行寫入操作時,首先應(yīng)該拉低1- wire總線至少1μs 。然后,如果寫入數(shù)據(jù)位是 0,則繼續(xù)拉低總線至60μs結(jié)束(t2);否則就釋放總線,由上拉電阻把總線拉成高電平。而DS18B20則在15~60μs之間(t1~t2)讀入數(shù)據(jù)(典型值為15μs)。同樣,在60μs之后(t2),1-wire總線還必須繼續(xù)保持高電平至少1μs,作為兩個數(shù)據(jù)位之間的分隔。
2 實驗電路參數(shù)的分析與實驗結(jié)果
以1-wire總線的數(shù)字溫度集成電路DS18B20與單片機89C2051 為例,其接口電路如圖2所示,時鐘頻率為12MHz 。89C2051的P1.0口與DS18B20的DQ相連。1-wire總線器件的DQ口(數(shù)據(jù)口線)都為開漏結(jié)構(gòu),以便可以在1-wire總線上掛接多個DS18B20。因此,在1-wire總線上應(yīng)該加接1個上拉電阻,文獻推薦值為4.7kΩ。筆者使用2 m長的4芯屏蔽電纜連接89C2051 和DS18B20 ,其中一芯以及外屏蔽單端接地,其余分別為VCC、GND 和DQ 。經(jīng)測試,DQ線到地的分布電容為131pF/m 。為了能夠測試1-wire總線的驅(qū)動能力,在DQ線上加接電容,以便近似地模擬長電纜,等效電路如圖3所示??梢酝ㄟ^選擇上拉電阻的值,合理安排 t0~t1和t0~t2兩個時間段,以提高1-wire總線器件驅(qū)動長總線的能力。自然,上拉電阻越小,其拉動1-wire總線的能力就越大,但是要受到 DS18B20的低電平吸入電流的限制。綜合考慮各種因素,選取上拉電阻值為1.5kΩ。
圖2 89C2051與DS18B20接口電路
圖3 1-wire總線邏輯電平轉(zhuǎn)換時的等效電路
由電工學(xué)可知,圖3(a)中電容C上的電壓為
在t0~t1階段,由 89C2051拉低1-wire總線并保持至少1μs。89C2051的I/O口輸出低電平時可吸入20mA的電流,其內(nèi)阻因是非線性特性,不會大于 50Ω。DS18B20的邏輯0輸入電平最大可為0.8V;89C2051為0.9V,取 VC = 0.8V,VCC = 5V。把上述數(shù)據(jù)代入方程(4),取負載電容C = 10nF,可以得到t =0.9μs;加上SETB指令需時1μs ,穩(wěn)定所需時間(至少1μs),取t0~t1 = 3μs。
在t1~t2階段,無論是89C2051還是DS18B20輸出0電平,由于總線電平已經(jīng)是0電平,不存在階躍問題,所以不必計算。
如果是邏輯1,不管是由89C2051還是由DS18B20輸出, 兩者的輸出FET均為開漏狀態(tài)(89C2051有弱上拉,可以忽略),由上拉電阻把1-wire總線從0電平上拉到高電平。可以用于把總線從0電平上拉到 1電平的時間t1-t2 = 15 - 3 - 1 = 11μs,其中1μs在讀DS18B20時用于讀操作,在寫DS18B20時用來補償指令MOV DQ,C所需的時間。DS18B20的邏輯高電平最低為2.2V,89C2051為1.9V,取VC = 2.2V 。
把上述數(shù)據(jù)代入方程(2),當上拉電阻為4.7kΩ時,可以算得C = 4.0nF;當上拉電阻為1.5kΩ時,C = 12.6nF,相當于96.5m長的屏蔽電纜。
3 實驗結(jié)果
表1為實驗數(shù)據(jù),使用2m長的4芯屏蔽電纜,在總線上加接電容以模仿長電纜。
表1 1-wire總線器件驅(qū)動能力與上拉電阻的關(guān)系
從表1可以看出,實驗結(jié)果與理論計算基本相符。由于實驗條件的限制,測試是相當粗糙的。更細致的調(diào)節(jié),可以使用示波器觀察1-wire總線上的波形來對電路參數(shù)與程序進行微調(diào),以求得到更好的結(jié)果。筆者曾以其它的定時關(guān)系編制了實驗程序,其驅(qū)動能力均不如本程序。
責(zé)任編輯:gt
-
集成電路
+關(guān)注
關(guān)注
5392文章
11630瀏覽量
363340 -
單片機
+關(guān)注
關(guān)注
6043文章
44623瀏覽量
638839 -
總線
+關(guān)注
關(guān)注
10文章
2904瀏覽量
88433
發(fā)布評論請先 登錄
相關(guān)推薦
基于DS2432的USB口1-Wire總線適配器的設(shè)計
基于C++模板技術(shù)的1-wire總線編程
請問我這樣通過上拉電阻提高IO驅(qū)動能力能行嗎?
1-wire單總線的基本原理
1-wire單總線的基本原理
1-Wire器件與8051系列單片機的軟件接口
![<b class='flag-5'>1-Wire</b><b class='flag-5'>器件</b>與8051系列單片機的軟件接口](https://file1.elecfans.com//web2/M00/A4/EA/wKgZomUMNjGABspDAABYptDL7jI688.jpg)
1-Wire總線主機
如何使用微處理器的UART來實現(xiàn)1-Wire?總線主機
![如何使用微處理器的UART<b class='flag-5'>來</b>實現(xiàn)<b class='flag-5'>1-Wire</b>?<b class='flag-5'>總線</b>主機](https://file.elecfans.com/web1/M00/F1/3C/o4YBAGCwqFuATV7EAABBTaVgaew546.png)
通過串行接口讀寫1-Wire器件
![<b class='flag-5'>通過</b>串行接口讀寫<b class='flag-5'>1-Wire</b><b class='flag-5'>器件</b>](https://file.elecfans.com//web2/M00/92/DE/poYBAGP0jRSAcGccAAAkk9C0J4M486.gif)
使用UART實現(xiàn)1-Wire總線主控
![使用UART實現(xiàn)<b class='flag-5'>1-Wire</b><b class='flag-5'>總線</b>主控](https://file.elecfans.com//web2/M00/9B/C9/pYYBAGQjsEaAFjXcAAAKNRdUKbg612.png)
評論