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

1-Wire總線主機(jī)
如何使用微處理器的UART來實(shí)現(xiàn)1-Wire?總線主機(jī)

通過串行接口讀寫1-Wire器件

使用UART實(shí)現(xiàn)1-Wire總線主控

評(píng)論