經(jīng)典的1-Wire單總線原理及應(yīng)用
編排 | strongerHuang
微信公眾號(hào) | 嵌入式專欄
今天給大家分享一種相對(duì) 485、I2C沒有那么流行,但也是一種常用的總線:1-Wire單總線。
嵌入式專欄
1
單總線是美國DALLAS公司推出的外圍串行擴(kuò)展總線技術(shù)。與SPI、I2C串行數(shù)據(jù)通信方式不同.它采用單根信號(hào)線,既傳輸時(shí)鐘又傳輸數(shù)據(jù),而且數(shù)據(jù)傳輸是雙向的,具有節(jié)省I/O口線、資源結(jié)構(gòu)簡(jiǎn)單、成本低廉、便于總線擴(kuò)展和維護(hù)等諸多優(yōu)點(diǎn)。
1-Wire器件按照串行協(xié)議進(jìn)行供電和數(shù)據(jù)通信,能夠以無與倫比的優(yōu)勢(shì)為系統(tǒng)增添特定功能,大大簡(jiǎn)化系統(tǒng)的互聯(lián)電路。
1-Wire 產(chǎn)品特點(diǎn) :
-
通過單線接口提供器件控制及操作
-
每個(gè)器件具有唯一的工廠光刻ID
-
通過單總線供電(“寄生電源”)
-
可掛接多點(diǎn):?jiǎn)我豢偩€可掛接多個(gè)器件
-
提供額外的ESD保護(hù)
嵌入式專欄
2
1-Wire原理 顧名思義,單總線即只有一根數(shù)據(jù)線,系統(tǒng)中的數(shù)據(jù)交換、控制都由這根線完成。設(shè)備(主機(jī)或從機(jī))通過一個(gè)漏極開路或三態(tài)端口連至該數(shù)據(jù)線,以允許設(shè)備在不發(fā)送數(shù)據(jù)時(shí)能夠釋放總線,而讓其它設(shè)備使用總線,其內(nèi)部等效電路如圖所示:
單總線通常要求外接一個(gè)約為4.7kΩ的上拉電阻 ,這樣,當(dāng)總線閑置時(shí),其狀態(tài)為高電平。
主機(jī)和從機(jī)之間的通信主要通過3個(gè)步驟完成,分別為:初始化1-wire器件、識(shí)別1-wire器件和交換數(shù)據(jù)。
由于它們是主從結(jié)構(gòu),只有主機(jī)呼叫從機(jī)時(shí),從機(jī)才能應(yīng)答,因此主機(jī)訪問1-wire器件都必須嚴(yán)格遵循單總線命令序列,即初始化、ROM、命令功能命令。如果出現(xiàn)序列混亂,1-wire器件將不響應(yīng)主機(jī)(搜索ROM命令,報(bào)警搜索命令除外)。
嵌入式專欄
3
1-Wire時(shí)序描述 所有的單總線器件都要遵循嚴(yán)格的通信協(xié)議,以保證數(shù)據(jù)的完整性。1-wire協(xié)議定義了復(fù)位脈沖、應(yīng)答脈沖、寫0、讀0和讀1時(shí)序等幾種信號(hào)類型。
所有的單總線命令序列(初始化,ROM命令,功能命令)都是由這些基本的信號(hào)類型組成的。 在這些信號(hào)中,除了應(yīng)答脈沖外,其它均由主機(jī)發(fā)出同步信號(hào),并且發(fā)送的所有命令和數(shù)據(jù)都是字節(jié)的低位在前。
其中,(a)是初始化時(shí)序,初始化時(shí)序包括主機(jī)發(fā)出的復(fù)位脈沖和從機(jī)發(fā)出的應(yīng)答脈沖。 主機(jī)通過拉低單總線至少480μs產(chǎn)生Tx復(fù)位脈沖; 然后由主機(jī)釋放總線,并進(jìn)入Rx接收模式。 主機(jī)釋放總線時(shí),會(huì)產(chǎn)生一由低電平跳變?yōu)楦唠娖降纳仙兀瑔慰偩€器件檢測(cè)到該上升沿后,延時(shí)15~60μs,接著單總線器件通過拉低總線60~240μsμ來產(chǎn)生應(yīng)答脈沖。 主機(jī)接收到從機(jī)的以應(yīng)答脈沖后,說明有單總線器件在線,然后主機(jī)就可以開始對(duì)從機(jī)進(jìn)行ROM命令和功能命令操作。
圖中的(b)、(c)、(d)分別是寫1、寫0和讀時(shí)序。 在每一個(gè)時(shí)序中,總線只能傳輸一位數(shù)據(jù)。 所有的讀、寫時(shí)序至少需要60μs,且每?jī)蓚€(gè)獨(dú)立的時(shí)序之間至少需要1μs的恢復(fù)時(shí)間。
圖中,讀、寫時(shí)序均始于主機(jī)拉低總線。 在寫時(shí)序中,主機(jī)將在拉低總線15μs之內(nèi)釋放總線,并向單總線器件寫1; 若主機(jī)拉低總線后能保持至少60μs的低電平,則向單總線器件寫0。 單總線器件僅在主機(jī)發(fā)出讀時(shí)序時(shí)才向主機(jī)傳輸數(shù)據(jù),所以,當(dāng)主機(jī)向單總線器件發(fā)出讀數(shù)據(jù)命令后,必須馬上產(chǎn)生讀時(shí)序,以便單總線器件能傳輸數(shù)據(jù)。
在主機(jī)發(fā)出讀時(shí)序之后,單總線器件才開始在總線上發(fā)送0或1。若單總線器件發(fā)送1,則總線保持高電平,若發(fā)送0,則拉低總線。
由于單總線器件發(fā)送數(shù)據(jù)后可保持15μs有效時(shí)間,因此,主機(jī)在讀時(shí)序期間必須釋放總線,且須在15μs的采樣總線狀態(tài),以便接收從機(jī)發(fā)送的數(shù)據(jù)。
嵌入式專欄
4
1-Wire應(yīng)用 單總線應(yīng)用在很多領(lǐng)域,比如:?jiǎn)慰偩€IC器件、存儲(chǔ)器、溫濕度傳感器、邏輯器件、時(shí)鐘芯片等。學(xué)習(xí)過單片機(jī)的同學(xué),應(yīng)該大多數(shù)都用過DS18B20這個(gè)經(jīng)典的溫度傳感器,單片機(jī)與它的連接(通信)就是通過單總線(1-Wire)實(shí)現(xiàn)的。
DS18B20電路圖:
DS18B20單總線應(yīng)用:
此外,很多器件(模組)為了適應(yīng)不同需求,會(huì)兼容很多通信接口,比如I2C、 SPI、 1-wire同時(shí)支持。
除了這個(gè)經(jīng)典的DS18B20之外,其實(shí)我們接觸的很多器件,也是支持單總線通信的。
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問題,請(qǐng)聯(lián)系我們,謝謝!