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