詳解單總線及其應用

單總線適用於單主機系統,能夠控制一個或多個從機設備。主機可以是微控制器,從機可以是單總線器件,它們之間的數據交換隻通過一條信號線。當只有一個從機設備時,系統可按單節點系統操作;當有多個從設備時,系統則按多節點系統操作。圖12-1所示是單總線多節點系統。

詳解單總線及其應用

圖12-1 單總線多節點系統示意圖

單總線硬件結構

顧名思義,單總線即只有一根數據線,系統中的數據交換、控制都由這根線完成。設備(主機或從機)通過一個漏極開路或三態端口連至該數據線,以允許設備在不發送數據時能夠釋放總線,而讓其他設備使用總線,其內部等效電路如圖12-2所示。

詳解單總線及其應用

圖12-2 單總線硬件接口示意圖

單總線要求外接一個約5k的上拉電阻:這樣,單總線的閒置狀態為高電平。不管什麼原因,如果傳輸過程需要暫時掛起,且要求傳輸過程還能夠繼續的話,則總線必須處於空閒狀態。位傳輸之間的恢復時間沒有限制,只要總線在恢復期間處於空閒狀態(高電平)。如果總線保持低電平超過480μs,總線上的所有器件將復位。另外,在寄生方式供電時,為了保證單總線器件在某些工作狀態下(如溫度轉換期間、EEPROM寫入等)具有足夠的電源電流,必須在總線上提供強上拉(如圖中所示的MOSFET(metal-oxide semiconductor field-effect transistor,金屬氧化物半導體場效應晶體管))。

單總線通信原理

主機和從機之間的通信可通過3個步驟完成,分別為初始化1-wire器件、識別1-wire器件和交換數據。由於單總線是主從結構,只有主機呼叫從機時,從機才能應答,因此主機訪問1-wire器件都必須嚴格遵循單總線命令序列,即初始化、ROM命令和功能命令。如果出現序列混亂,1-wire器件將不響應主機(搜索ROM命令、報警搜索命令除外)。

(1)初始化

基於單總線上的所有傳輸過程都是以初始化開始的,初始化過程由主機發出的復位脈衝和從機響應的應答脈衝組成。應答脈衝使主機知道,總線上有從機設備,且準備就緒。

(2)ROM命令

在主機檢測到應答脈衝後,就可以發出ROM命令。這些命令與各個從機設備的唯一64 位ROM代碼相關,允許主機在單總線上連接多個從機設備時,指定操作某個從機設備。

這些命令還允許主機能夠檢測到總線上有多少個從機設備以及其設備類型,或者有沒有設備處於報警狀態。從機設備一般支持5種ROM命令(實際情況與具體型號有關)每種命令長度為8位,如表12-1所示。主機在發出功能命令之前,必須送出合適的ROM命令。

詳解單總線及其應用

表12-1 ROM命令說明

(3)功能命令

在主機發出ROM命令後,接著就可以發出某個功能命令。功能命令則根據具體1-wire器件所支持的功能來確定。

單總線的信號方式

所有的單總線器件要求採用嚴格的通信協議,以保證數據的完整性。該協議定義了幾種信號類型:復位脈衝、應答脈衝、寫0、寫1、讀0和讀1。所有這些信號,除了應答脈衝以外,都由主機發出同步信號。並且發送所有的命令和數據都是字節的低位在前,這一點與多數串行通信格式不同(多數為字節的高位在前)。

(1)初始化序列——復位和應答脈衝

單總線上的所有通信都是以初始化序列開始,包括:主機發出的復位脈衝及從機的應答脈衝,如圖12-3所示。當從機發出響應主機的應答脈衝時,即向主機表明它處於總線上,且工作準備就緒。在主機初始化過程,主機通過拉低單總線至少480μs,以產生(Tx)復位脈衝。接著主機釋放總線,並進入接收模式(Rx)。當總線被釋放後,5k上拉電阻將單總線拉高。在單總線器件檢測到上升沿後,延時15~60μs,接著通過拉低總線60~240μs,以產生應答脈衝。

詳解單總線及其應用

圖12-3 復位和應答脈衝

提示

黑色實線代表系統主機拉低總線,黑色虛線代表上拉電阻將總線拉高。

(2)讀/寫時隙

在寫時隙期間,主機向單總線器件寫入數據;而在讀時隙期間,主機讀入來自從機的數據。在每一個時隙,總線只能傳輸一位數據。

① 寫時隙

存在兩種寫時隙:“寫1”和“寫0”。主機採用寫1時隙向從機寫入1,而採用寫0時隙向從機寫入0。所有寫時隙至少需要60μs,且在兩次獨立的寫時隙之間至少需要1μs的恢復時間。兩種寫時隙均起始於主機拉低總線(如圖12-4所示)。產生寫1時隙的方式:主機在拉低總線後,接著必須在15μs之內釋放總線,由5k上拉電阻將總線拉至高電平;而產生寫0時隙的方式;在主機拉低總線後,只需在整個時隙期間保持低電平即可(至少60μs)。

在寫時隙起始後15~60μs期間,單總線器件採樣總線電平狀態。如果在此期間採樣為高電平,則邏輯1被寫入該器件;如果為0,則寫入邏輯0。

詳解單總線及其應用

圖12-4 單總線通信協議中寫時隙時序圖

② 讀時隙

單總線器件僅在主機發出讀時隙時,才向主機傳輸數據,所以,在主機發出讀數據命令後,必須馬上產生讀時隙,以便從機能夠傳輸數據。所有讀時隙至少需要60μs,且在兩次獨立的讀時隙之間至少需要1μs的恢復時間。每個讀時隙都由主機發起,至少拉低總線1μs(如圖12-5所示)。在主機發起讀時隙之後,單總線器件才開始在總線上發送0或1。若從機發送1,則保持總線為高電平;若發送0,則拉低總線。當發送0時,從機在該時隙結束後釋放總線,由上拉電阻將總線拉回至空閒高電平狀態。從機發出的數據在起始時隙之後,保持有效時間15μs,因而,主機在讀時隙期間必須釋放總線,並且在時隙起始後的15μs之內採樣總線狀態。

詳解單總線及其應用

圖12-5 單總線通信協議中讀時隙時序圖

單總線器件

通常把掛在單總線上的器件稱之為單總線器件,單總線器件內一般都具有控制、收發、存儲等電路。為了區分不同的單總線器件,廠家生產單總線器件時都要燒錄一個64位的二進制ROM代碼,以標誌其ID號。目前,單總線器件主要有數字溫度傳感器(如DS18B20)、A/D轉換器(如DS2450)、門標、身份識別器(如DS1990A)、單總線控制器(如DS1WM)等。

12.1.2 單總線器件DS18B20

(一)DS18B20性能特點

詳解單總線及其應用

圖12-6 DS18B20引腳圖

DS18B20是DALLAS公司繼DS1820之後最新推出的一種改進型智能溫度傳感器。與傳統的熱敏電阻相比,他能夠直接讀出被測溫度並且可根據實際要求通過簡單的編程實現9~12位的數字值讀取。可分別在93.75 ms和750 ms內完成9位和12位的溫度數字量轉換,從DS18B20讀出信息或寫入信息僅需要一根數據線。讀寫溫度、變換功率可來源於數據總線,總線本身也可以向所掛接的DS18B20供電,而無需額外電源。因而使用DS18B20可使系統結構更趨簡單,可靠性更高。

DS18B20的引腳如圖12-6所示。

(1)GND為電源端;

(2)DQ為數字信號輸入輸出端;

(3)V DD 為外接供電電源輸入端(在寄生電源接線方式時接地)。

(二)DS18B20的內部結構及主要功能部件

DS18B20的總體結構如圖12-7所示,由64位光刻ROM及串行接口、高低溫度傳感器、高低溫觸發器、配置寄存器、8位CRC發生器、電源檢測和寄生電容等各部分組成。

(1)64位ROM

64位光刻ROM是出廠前被光刻好的,它由8位產品系列號,48位產品序號和8位CRC編碼組成,DS18B20的產品系列號均為28H,每個器件的48位產品序號各不相同,利用產品序號可以識別一線上的掛載的不同DS18B20器件。

詳解單總線及其應用

圖12-7 DS18B20內部結構框圖

(2)配置寄存器

配置寄存器用於設置DS18B20的轉換精度,配置寄存器的各位如表12-2所示。

詳解單總線及其應用

表12-2 DS18B20配置寄存器

低5位一直為1;TM是測試模式位,用於設置DS18B20在工作模式還是在測試模式,在出廠時該位被設置為0,用戶不要去改動;R1和R2決定溫度轉換的精度位數。

DS18B20的溫度轉換時間與溫度轉換的精度位數(即溫度轉換的分辨率)相關,當溫度轉換的分辨率越高,轉換需要的時間越長,其關係如表12-3所示。

詳解單總線及其應用

表12-3 溫度分辨率和最大轉換時間關係表

(3)高溫觸發器TH和低溫觸發器TL

高溫觸發器TH中存在最高溫度報警下限,低溫觸發器TL中存在最低溫度報警下限,用戶可通過軟件寫入。

(4)溫度傳感器

DS18B20中的溫度傳感器可完成對溫度的測量,溫度值用16位符號擴展的二進制補碼讀數形式提供,以0.0625℃/B形式表達,其中S為符號位,在12位轉化情況下溫度高低字節存放形式如表12-4所示。

詳解單總線及其應用

表12-4 DS18B20溫度的高低字節存放

二進制中的前面5位是符號位,如果測得的溫度大於0,這5位為0,只要將測到的數值乘於0.0625即可得到實際溫度;如果溫度小於0,這5位為1,測到的數值需要取反加1再乘於0.0625才能得到實際溫度。

在12位分辨率下溫度-數字量輸出的關係表如表12-5所示。

詳解單總線及其應用

表12-5 溫度-數據關係表

DS18B20完成溫度轉換後,就把測得的溫度值與RAM中的TH、TL字節內容作比較。若值高於TH或低於TL,則將該器件的報警標誌位置位,並對主機發出報警搜索命令作出響應。

(三)DSl8B20工作過程

DSl8B20工作過程中的協議如下:

1. 初始化

單總線上的所有處理均從初始化開始;

2. ROM操作命令

總線主機檢測到DSl8B20的存在便可以發出ROM操作命令,ROM操作命令如表12-6所示。

詳解單總線及其應用

表12-6 DS18B20的ROM操作命令

3. 存儲器操作命令

在執行ROM操作命令後執行存儲器操作命令,存儲器操作命令如表12-7所示。

詳解單總線及其應用

表12-7 DS18B20的存儲器操作命令

應用實例:8051單片機與DS18B20構成的測溫系統

由DS18B20開發的一線式溫度傳感器具有接口簡單、測量精度高等優點,廣泛的應用到工業、儀器儀表、醫療電器等各個領域。

這裡我們模仿一線式溫度計的工作原理,以8051單片機(假設系統外接的是12MHz的晶振,即機器週期為1us)作為控制芯片,來讀取DS18B20的溫度值,並通過2位數碼管顯示被測對象的溫度值。系統的結構如圖12-8所示。

詳解單總線及其應用

圖12-8 8051單片機與DS18B20測溫系統框圖

程序設計說明:

1. 定義存放讀取溫度的變量TEMPER_L、TEMPER_H以及轉換後的溫度值變量TEMPER_NUM;定義單片機的P3.7口作為與DS18B20的數據通信口。定義位變量flag為判斷DS18B20是否存在的標誌。

2. 主程序通過循環調用讀取溫度程序、溫度轉換程序和數碼管顯示程序實現溫度讀取、轉換和顯示等功能。

3. 獲取溫度程序uint ReadTemperature(void),通過調用INIT_1820判斷是否與DS18B20聯絡上。若聯絡上,接下來按照一定的時序發送命令,通過READ_18200程序讀取溫度值的高八位和低八位分別存放到TEMPER_H和TEMPER_L單元中。

4. 溫度轉換程序為void TemperConvert(void),顯示程序為Display(void)。

C51源程序如下:

詳解單總線及其應用

詳解單總線及其應用

詳解單總線及其應用

詳解單總線及其應用

詳解單總線及其應用


分享到:


相關文章: