|
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è)器件、連接電纜線較長的場合,它的驅(qū)動(dòng)能力是否適應(yīng);或者說,應(yīng)該如何提高1-wire總線器件的驅(qū)動(dòng)能力? 本文就此問題進(jìn)行分析和實(shí)驗(yàn)。 1 1-wire總線簡介 從 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長的4芯屏蔽電纜連接89C2051 和DS18B20 ,其中一芯以及外屏蔽單端接地,其余分別為VCC、GND 和DQ 。經(jīng)測試,DQ線到地的分布電容為131pF/m 。為了能夠測試1-wire總線的驅(qū)動(dòng)能力,在DQ線上加接電容,以便近似地模擬長電纜,等效電路如圖3所示。可以通過選擇上拉電阻的值,合理安排 t0~t1和t0~t2兩個(gè)時(shí)間段,以提高1-wire總線器件驅(qū)動(dòng)長總線的能力。自然,上拉電阻越小,其拉動(dòng)1-wire總線的能力就越大,但是要受到 DS18B20的低電平吸入電流的限制。綜合考慮各種因素,選取上拉電阻值為1.5kΩ。
圖2 89C2051與DS18B20接口電路
圖3 1-wire總線邏輯電平轉(zhuǎn)換時(shí)的等效電路 由電工學(xué)可知,圖3(a)中電容C上的電壓為
由式(1)可以導(dǎo)得
圖3(b)中,電容C上的電壓為
由式(3)可以導(dǎo)得
式(3)、(4)中: R = R1//R2 。 在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長的屏蔽電纜。 3 實(shí)驗(yàn)結(jié)果 表1為實(shí)驗(yàn)數(shù)據(jù),使用2m長的4芯屏蔽電纜,在總線上加接電容以模仿長電纜。程序清單見本刊網(wǎng)絡(luò)補(bǔ)充版(http://www.dpj.com.cn)。 表1 1-wire總線器件驅(qū)動(dòng)能力與上拉電阻的關(guān)系
從表1可以看出,實(shí)驗(yàn)結(jié)果與理論計(jì)算基本相符。由于實(shí)驗(yàn)條件的限制,測試是相當(dāng)粗糙的。更細(xì)致的調(diào)節(jié),可以使用示波器觀察1-wire總線上的波形來對(duì)電路參數(shù)與程序進(jìn)行微調(diào),以求得到更好的結(jié)果。筆者曾以其它的定時(shí)關(guān)系編制了實(shí)驗(yàn)程序,其驅(qū)動(dòng)能力均不如本程序。 引證文獻(xiàn) 1. 李國柱 單總線技術(shù)及其應(yīng)用研究 [期刊論文] -西安文理學(xué)院學(xué)報(bào)(自然科學(xué)版)2006(02) 作 者:江南大學(xué) 朱立強(qiáng) 華宇凈化設(shè)備公司 金暉 來 源:單片機(jī)與嵌入式系統(tǒng)應(yīng)用2003(11) |