單總線,即一根線進行通信,最常用的溫感 DS18B20 采用的就是單總線結構。
一、概述
二、硬件結構
三、單總線的時序圖
四、實測分析時序
五、DS18B20
一、概述
單總線是美國 DALLAS 公司推出的外圍串行擴展總線技術,與 SPI、I2C 串行數據通信方式不同,它采用單根信號線,既傳輸時鐘又傳輸數據,而且數據傳輸是雙向的。
單總線英文名 1-Wire,傳輸速率一般是 15.3Kbit/s,最大可達 142Kbit/s,通常采用 100Kbit/s 以下的速率傳輸數據。
二、硬件結構
1. 單總線典型框圖
單總線適用于單主機系統,能夠控制一個或多個從機設備。主機可以是微控制器,從機可以是單總線器件,它們之間的數據交換只通過一條信號線。
單總線典型應用結構2. 漏極開路
單總線主機或從機設備通過一個漏極開路或三態端口連接至該數據線,由于是開漏結構,需要在數據線上加一個上拉電阻,一般是 4.7K。
為了確保總線上的某些器件在工作時(如溫度傳感器進行溫度轉換、E2PROM 寫人數據時)有足夠的電流供給,除了上拉電阻之外,還需要在總線上使用 MOSFET 提供強上拉供電,大多數的應用這個強上拉是不需要的。
主機或從機將數據線拉低到GND表示數據0,將數據線釋放為高表示數據1。
- 當 MCU 發送邏輯 1 時,經過反相器,總線呈現邏輯 0,邏輯 0 經過 1-WIRE 器件的反相器,即會收到邏輯 1;
- 當 MCU 發送邏輯 0 時,經過反向器,總線呈現邏輯 1,邏輯 1 經過 1-WIRE 器件的反相器,即會收到邏輯 0;
- 當 1WIRE 器件發送邏輯 1 時,Tx 處有 NMOS 會導通,總線呈現邏輯 0,經過 MCU Rx 處的反相器,MCU 會收到邏輯 1;
- 當 1WIRE 器件發送邏輯 0 時,NMOS 截止,總線呈現邏輯 1,MCU 會收到邏輯 0;
單總線典型內部結構框圖
3. 寄生供電電路
單總線器件內部設置有寄生供電電路(Parasite Power Circuit)。
當單總線處于高電平時,一方面通過二極管向芯片供電,另一方面對內部電容 C(容值約 800pF)充電。當單總線處于低電平時,二極管截止,內部電容 C 向芯片供電。由于電容 C 的容量有限,因此要求單總線能間隔地提供高電平以能不斷地向內部電容 C 充電,維持器件的正常工作,這就是通過網絡線路“竊取”電能的“寄生電源”的工作原理。另外需要間斷高電平的原因是如果總線保持低電平超過 480us,總線上的所有器件將復位。
DS18B20上的寄生電路4. 64 位 ROM ID
主機通過 64 全球唯一的 ROM ID 來識別掛在總線網絡上的從機。
每個單總線器件都有一個全球唯一的 64 位 ROM ID,該注冊碼保證唯一的身份,并用于多節點 1-Wire 網絡中的器件尋址,64 位 ROM 注冊碼不可更改,ROM ID 由出廠激光刻度在單總線器件內部。
64 位 ROM ID 組成:前 8 位是 1-WIRE 家族碼,后 48 位是唯一的序列號、最后 8 位是由前 56 位 ROM 碼所計算出的 CRC 校驗碼。
64位ROM ID組成
5. 優缺點
節省 I/O 口線、資源結構簡單、成本低廉、便于總線擴展和維護等諸多優點。
由于所有設備部件均掛在單一總線上,使這種結構只能分時工作,即同一時刻只能在兩個設備之間傳送數據,這就使系統總體數據傳輸的效率和速度受到限制,這是單總線結構的主要缺點。
三、單總線的時序圖
1. 時序概述
1-Wire 器件需要嚴格的協議來保證數據的完整。
- 該協議由通過一條線來傳送的四種信令組成:包括復位脈沖和在線應答脈沖的復位序列、寫 0 時隙、寫 1 時隙、讀時隙。
- 除在線應答脈沖以外,所有其它信號都由總線主機發出,并且發送的所有數據和命令都是字節的低位在前。
- 主機與從機的數據通信是通過時隙完成的,在每個時隙只能傳送一位數據。通過寫時隙可把數據從主機傳送給從機,通過讀時隙可把數據由從器件傳送給主機,將完成一位傳輸的時間稱為一個時隙。
如下給出了時序的波形圖,在后面實測波形會詳細介紹時序要求。
2. 復位/應答
復位/應答脈沖
3. 寫時隙
寫1和寫0時隙
4. 讀時隙
讀1和讀0時隙
波形定義
四、實測分析時序
1. 復位/應答脈沖
復位/應答脈沖要求:主機拉低總線 480~960us 來產生復位信號,然后釋放總線進入接收模式,接著從機等待 15-60us(上拉電阻上拉至高電平),從機再拉低總線 60-240us 來產生應答信號,主機接收到從機的應答信號后,表明從機準備就緒,初始化過程完成了。
實測復位應答信號
2. 寫 0 時隙
寫0時隙要求:寫 0 時隙起始于主機拉低總線,主機拉低總線后,只需在整個時隙期間保持總線低電平在 60us 以上,一般是 60~120us 之間。
實測寫0時隙
3. 寫 1 時隙
寫1時隙要求:寫 1 時隙和寫 0 時隙一樣,起始于主機拉低總線,在拉低總線 15us 之內需要將總線拉高,拉高總線需要維持 60us 以上。
實測寫1時隙
4. 讀 0 時隙讀0時隙要求:讀 0 時隙由主機發起,且至少拉低總線 1us,此時從機才開始在總線上發數據 0 或者 1;從機發送 1,則保持總線為高電平;從機發送 0,則拉低總線。當發送 0 時,從機在該時隙結束后釋放總線,由上拉電阻拉至空閑的高電平狀態。從機發出的數據在起始時隙之后,保持有效時間 15us,因而,主機在讀時隙期間必須釋放總線并且在時隙起始后的 15us 之內采樣總線。讀 1 時隙沒有在本文中沒有寫,要求和寫 1 時隙是一致的。
實測讀0時隙
五、DS18B20
1. 硬件結構
DS18B20 是學習 51 單片機中時,最常用的溫感,采用的就是單總線結構。其供電方式有兩種,一種是總線寄生電源,一種是使用外部電源。
需要注意,使用總線寄生電源時,18B20 的 VDD 管腳需要和 GND 接在一起。
DS18B20采用寄生電源
DS18B20采用外部電源
DS18B20內部框圖2. C 語言實現
利用單片機從DS18B20 獲取溫度。
分四步:初始化(復位/應答)→ 寫字節 → 讀字節 → 計算溫度。
如下是給出的代碼示例。
今天的文章到這里就結束了。