在嵌入式底層通信中,像485總線、I2C總線等都是比較常見的通信總線。
今天給大家分享一種相對 485、I2C沒有那么流行,但也是一種常用的總線:1-Wire單總線。
1 1-Wire介紹
1-Wire,即大家說的單總線。
單總線是美國DALLAS公司推出的外圍串行擴展總線技術。與SPI、I2C串行數據通信方式不同.它采用單根信號線,既傳輸時鐘又傳輸數據,而且數據傳輸是雙向的,具有節省I/O口線、資源結構簡單、成本低廉、便于總線擴展和維護等諸多優點。
1-Wire器件按照串行協議進行供電和數據通信,能夠以無與倫比的優勢為系統增添特定功能,大大簡化系統的互聯電路。
1-Wire 產品特點 :
通過單線接口提供器件控制及操作
每個器件具有唯一的工廠光刻ID
通過單總線供電(“寄生電源”)
可掛接多點:單一總線可掛接多個器件
提供額外的ESD保護
2 1-Wire原理
顧名思義,單總線即只有一根數據線,系統中的數據交換、控制都由這根線完成。
設備(主機或從機)通過一個漏極開路或三態端口連至該數據線,以允許設備在不發送數據時能夠釋放總線,而讓其它設備使用總線,其內部等效電路如圖所示:
單總線通常要求外接一個約為4.7kΩ的上拉電阻,這樣,當總線閑置時,其狀態為高電平。
主機和從機之間的通信主要通過3個步驟完成,分別為:初始化1-wire器件、識別1-wire器件和交換數據。
由于它們是主從結構,只有主機呼叫從機時,從機才能應答,因此主機訪問1-wire器件都必須嚴格遵循單總線命令序列,即初始化、ROM、命令功能命令。如果出現序列混亂,1-wire器件將不響應主機(搜索ROM命令,報警搜索命令除外)。
3 1-Wire時序描述
所有的單總線器件都要遵循嚴格的通信協議,以保證數據的完整性。
1-wire協議定義了復位脈沖、應答脈沖、寫0、讀0和讀1時序等幾種信號類型。
所有的單總線命令序列(初始化,ROM命令,功能命令)都是由這些基本的信號類型組成的。在這些信號中,除了應答脈沖外,其它均由主機發出同步信號,并且發送的所有命令和數據都是字節的低位在前。
其中,(a)是初始化時序,初始化時序包括主機發出的復位脈沖和從機發出的應答脈沖。主機通過拉低單總線至少480μs產生Tx復位脈沖;然后由主機釋放總線,并進入Rx接收模式。主機釋放總線時,會產生一由低電平跳變為高電平的上升沿,單總線器件檢測到該上升沿后,延時15~60μs,接著單總線器件通過拉低總線60~240μsμ來產生應答脈沖。主機接收到從機的以應答脈沖后,說明有單總線器件在線,然后主機就可以開始對從機進行ROM命令和功能命令操作。
圖中的(b)、(c)、(d)分別是寫1、寫0和讀時序。在每一個時序中,總線只能傳輸一位數據。所有的讀、寫時序至少需要60μs,且每兩個獨立的時序之間至少需要1μs的恢復時間。
圖中,讀、寫時序均始于主機拉低總線。在寫時序中,主機將在拉低總線15μs之內釋放總線,并向單總線器件寫1;若主機拉低總線后能保持至少60μs的低電平,則向單總線器件寫0。單總線器件僅在主機發出讀時序時才向主機傳輸數據,所以,當主機向單總線器件發出讀數據命令后,必須馬上產生讀時序,以便單總線器件能傳輸數據。
在主機發出讀時序之后,單總線器件才開始在總線上發送0或1。若單總線器件發送1,則總線保持高電平,若發送0,則拉低總線。
由于單總線器件發送數據后可保持15μs有效時間,因此,主機在讀時序期間必須釋放總線,且須在15μs的采樣總線狀態,以便接收從機發送的數據。
4 1-Wire應用
單總線應用在很多領域,比如:單總線IC器件、存儲器、溫濕度傳感器、邏輯器件、時鐘芯片等。
學習過單片機的同學,應該大多數都用過DS18B20這個經典的溫度傳感器,單片機與它的連接(通信)就是通過單總線(1-Wire)實現的。
DS18B20電路圖:
DS18B20單總線應用:
此外,很多器件(模組)為了適應不同需求,會兼容很多通信接口,比如I2C、 SPI、 1-wire同時支持。
除了這個經典的DS18B20之外,其實我們接觸的很多器件,也是支持單總線通信的。
編輯:lyn
-
嵌入式
+關注
關注
5085文章
19138瀏覽量
305726 -
數據通信
+關注
關注
2文章
432瀏覽量
33779 -
單總線
+關注
關注
1文章
36瀏覽量
12408
原文標題:經典的1-Wire單總線原理及應用
文章出處:【微信號:strongerHuang,微信公眾號:strongerHuang】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論