三防平板電腦單總線(1-wire)串行通信是美國(guó) Dallas 公司的一項(xiàng)專利技術(shù),它采用單根信號(hào)線,既可傳輸時(shí)鐘又可傳輸數(shù)據(jù),而且數(shù)據(jù)傳輸是雙向的。三防平板電腦單總線串行通信具有接口簡(jiǎn)單、硬件開(kāi)銷少、成本低廉、便于總線擴(kuò)展和維護(hù)等優(yōu)點(diǎn)。
三防平板電腦單總線串行通信采用簡(jiǎn)單的通信協(xié)議,通過(guò)一條公共數(shù)據(jù)線完成了一個(gè)主機(jī)/主控制器與一個(gè)或多個(gè)從機(jī)之間的半雙工、雙向通信,單總線串行通信的連接如圖1所示。
圖1 單總線串行通信的連接
三防平板電腦在數(shù)據(jù)傳輸過(guò)程中,總線狀態(tài)為高電平時(shí),主機(jī)向器件內(nèi)部電容充電。當(dāng)總線狀態(tài)為低電平時(shí),從機(jī)利用內(nèi)部電容存儲(chǔ)的電荷為器件
供電。典型的單總線主機(jī)包括一個(gè)漏極開(kāi)路I/O口,并通過(guò)4.7 kΩ 的電阻上拉到3~5 V電源。設(shè)備(主機(jī)或從機(jī))通過(guò)一個(gè)漏極開(kāi)路或三態(tài)端口連至該數(shù)據(jù)線,這樣允許設(shè)備在不發(fā)送數(shù)據(jù)時(shí)釋放總線,以便其他設(shè)備使用該總線。單總線串行通信要求外接一個(gè)約4.7 kΩ 的上拉電阻,這樣當(dāng)總線閑置時(shí),狀態(tài)為高電平。
三防平板電腦主機(jī)和從機(jī)之間的通信通過(guò)三個(gè)步驟完成:初始化單總線器件、識(shí)別單總線器件、交換數(shù)據(jù)。由于二者是主從結(jié)構(gòu),只有主機(jī)呼叫從機(jī)時(shí),從機(jī)才能答應(yīng),因此主機(jī)訪問(wèn)單總線器件時(shí)都必須嚴(yán)格遵循單總線串行通信的命令時(shí)序:初始化→ROM命令→功能命令。
目前常用的單總線器件有數(shù)字溫度傳感器(如 DS18B20)、A/D 轉(zhuǎn)換器(如 DS2450)、單總線控制器(如DSIWM)等。
2.?dāng)?shù)字溫度傳感器DS18B20及應(yīng)用
每一個(gè)單總線器件內(nèi)都具有控制、收/發(fā)、存儲(chǔ)等電路,為了區(qū)分不同的單總線器件,在生產(chǎn)單總線器件時(shí)廠家在內(nèi)部刻錄了一個(gè)64位的二進(jìn)制ROM代碼,即單總線器件的唯一ID,通過(guò)這個(gè)ID可以識(shí)別掛接在單總線上的器件。
(1)三防平板電腦DS18B20性能特點(diǎn)。數(shù)字溫度傳感器件DS18B20特點(diǎn)如下:
● 內(nèi)含64位唯一ID。
● 獨(dú)特的單總線接口方式,僅需一個(gè)端口引腳即可實(shí)現(xiàn)嵌入式處理器與 DS18B20的雙向通信。
● 簡(jiǎn)單的多點(diǎn)分布應(yīng)用,不需要任何外圍器件。
● 內(nèi)含寄生電源,可用數(shù)據(jù)線供電,電壓范圍為3.0~5.0 V。
● 測(cè)溫范圍-55~+125℃,可編程實(shí)現(xiàn)9~12位的數(shù)據(jù)讀取方式,分辨率分別是0.5℃、0.25℃、0.125℃和0.0625℃,默認(rèn)測(cè)量分辨率為0.0625℃(9位二進(jìn)制數(shù),含符號(hào)位)。
● 用戶可自行設(shè)置非易失性溫度報(bào)警的上下限值。
● 支持多節(jié)點(diǎn)組網(wǎng)功能,多個(gè)DS18B20可以并聯(lián)在三條線上,實(shí)現(xiàn)多點(diǎn)測(cè)溫。
● 溫度數(shù)字量轉(zhuǎn)換時(shí)間為200 ms(典型值)。
● 可以應(yīng)用在溫度控制、工業(yè)系統(tǒng)、消費(fèi)品等熱感監(jiān)測(cè)系統(tǒng)中。
(2)三防平板電腦DS18B20的內(nèi)部結(jié)構(gòu)。DS18B20內(nèi)部結(jié)構(gòu)主要由四部分組成:64位光刻ROM和單總線接口、溫度傳感器、高溫報(bào)警器TH和低溫報(bào)警器TL、高速暫存器,如圖2所示。
圖2 DS18B20的內(nèi)部結(jié)構(gòu)框圖
三防平板電腦其中DQ為數(shù)字信號(hào)輸入/輸出端,GND為電源地,VDD為外接供電電源輸入端(在寄生電源接線方式時(shí)接地)。64位光刻ROM是出廠前被光刻好的,它可以看成DS18B20的地址序列號(hào),不同的器件地址序列號(hào)不同。64位光刻ROM的結(jié)構(gòu)如表6-3所示。
表1 64位光刻ROM的結(jié)構(gòu)
DS18B20高速暫存器共9個(gè)存儲(chǔ)單元,具體分配如表2所示。
表2 高速暫存器存儲(chǔ)單元分配表
三防平板電腦第4號(hào)字節(jié)是配置寄存器,用于確定器件的轉(zhuǎn)換分辨率。DS18B20工作時(shí)按此寄存器中的分辨率將溫度轉(zhuǎn)換為相應(yīng)精度的值。字節(jié)各位定義如下:
該字節(jié)低5位皆為1,TM位用于設(shè)置DS18B20是在工作模式(0,默認(rèn)值為0),還是測(cè)試模式(1)。R1和R0決定轉(zhuǎn)換精度位數(shù),默認(rèn)為12位,分辨率設(shè)置如表2所示。
表3 分辨率設(shè)置
第0號(hào)字節(jié)和第1號(hào)字節(jié)以16位補(bǔ)碼形式存儲(chǔ)轉(zhuǎn)換后的溫度值,溫度值格式如圖6-10所示。
圖3 溫度值格式
這里以12位轉(zhuǎn)化為例說(shuō)明溫度高低字節(jié)存放形式及計(jì)算:三防平板電腦12位轉(zhuǎn)化后得到的12位數(shù)據(jù),存儲(chǔ)在DS18B20的高低兩個(gè)8位的RAM中,二進(jìn)制中的前面5位是符號(hào)位。如果測(cè)得的溫度大于0,這5位為0,只要將測(cè)到的數(shù)值乘以0.0625即可得到實(shí)際的溫度;如果溫度小于0,這5位為1,測(cè)到的數(shù)值需要取反加1再乘以0.0625才能得到實(shí)際的溫度。
(3)DS18B20與51系列單片機(jī)的典型接口設(shè)計(jì)。在硬件上,DS18B20與單片機(jī)的連接有兩種方法:一種是VCC接外部電源,GND接地,I/O與單片機(jī)的I/O線相連;另一種是用寄生電源供電,此時(shí) VDD、GND 接地,I/O 接單片機(jī) I/O。無(wú)論是內(nèi)部寄生電源還是外部供電,I/O口線要接4.7 kΩ 的上拉電阻,DS18B20與微控制器的電路連接如圖6-11所示。
圖4(a)是與具有獨(dú)立電源的DS18B20接線圖,由于數(shù)據(jù)線空閑時(shí)為高電平,因此需要加一個(gè)4.7 kΩ 的上拉電阻,另外兩個(gè)引腳分別接電源(外部供電)和地。
圖5(b)是寄生電源供電方式,為保證在有效的DS18B20時(shí)鐘周期內(nèi)提供足夠的電流,51系列單片機(jī)的I/O控制場(chǎng)效應(yīng)管將單線總線上拉。采用寄生電源供電方式時(shí),VDD和GND端都要接地。
圖5 DS18B20接線圖
3.DS18B20編程設(shè)計(jì)
三防平板電腦通過(guò)單總線端口訪問(wèn)DS18B20的協(xié)議,包括初始化、ROM操作命令和功能操作等命令。通過(guò)單總線的所有執(zhí)行(處理)都是從一個(gè)初始化序列開(kāi)始的。
下面就對(duì)常用的命令進(jìn)行介紹,如初始化、寫(xiě)時(shí)序、讀時(shí)序。
(1)復(fù)位與讀寫(xiě)時(shí)序。DS18B20需要嚴(yán)格的協(xié)議以確保數(shù)據(jù)的完整性,協(xié)議包括幾種單總線信號(hào)類型,如復(fù)位脈沖、應(yīng)答脈沖、寫(xiě)0、寫(xiě)1、讀0和讀1等,所有這些信號(hào),除了應(yīng)答脈沖,都是由單總線控制器發(fā)出的。
① DS18B20的初始化時(shí)序。單總線控制器和DS18B20間的任何通信都需要以初始化序列開(kāi)始。三防平板電腦單總線控制器先發(fā)送一個(gè)復(fù)位脈沖(最短為480 μs,最長(zhǎng)不能超過(guò)960 μs的低電平信號(hào))后釋放總線,等待DS18B20 應(yīng)答。DS18B20檢測(cè)到總線上的上升沿后等待15~60 μs,然后發(fā)出一個(gè)存在(應(yīng)答)脈沖(低電平持續(xù)60~240 μs)表明DS18B20已經(jīng)準(zhǔn)備好發(fā)送和接收數(shù)據(jù)。單總線控制器從發(fā)送完復(fù)位脈沖到再次控制總線至少要等待480 μs。DS18B20的初始化時(shí)序如圖6所示。
圖6 DS18B20的初始化時(shí)序
② DS18B20的寫(xiě)時(shí)序。當(dāng)主機(jī)把數(shù)據(jù)線從邏輯高電平拉到邏輯低電平時(shí),寫(xiě)時(shí)間隙開(kāi)始。三防平板電腦這樣有兩種時(shí)間隙,即寫(xiě)1時(shí)間隙和寫(xiě)0時(shí)間隙。所有寫(xiě)時(shí)間隙必須持續(xù)最短60 μs,包括2個(gè)寫(xiě)周期加至少1 μs的恢復(fù)時(shí)間。I/O線電平變低后,DS18B20在一個(gè)15~60 μs的窗口內(nèi)對(duì)I/O線進(jìn)行采樣。如果I/O線上是高電平,就寫(xiě)1,如果線上是低電平,就寫(xiě)0。如果主機(jī)要生成一個(gè)寫(xiě)時(shí)間隙,必須把數(shù)據(jù)線拉到低電平后
釋放,在寫(xiě)時(shí)間隙開(kāi)始后的15 μs 內(nèi)允許數(shù)據(jù)線拉到高電平;如果主機(jī)要生成一個(gè)寫(xiě)0時(shí)間隙,必須把數(shù)據(jù)線拉到低電平并保持60 μs。寫(xiě)操作時(shí)序如圖7所示。
圖7 寫(xiě)操作時(shí)序
③三防平板電腦 DS18B20的讀時(shí)序。DS18B20只有在主機(jī)生成讀時(shí)間隙后才能轉(zhuǎn)換數(shù)據(jù)。當(dāng)從DS18B20讀取數(shù)據(jù)時(shí),主機(jī)生成讀時(shí)間隙,從 DS18B20輸出的數(shù)據(jù)在讀時(shí)間隙的下降沿出現(xiàn)后15 μs內(nèi)有效。因此,主機(jī)在讀時(shí)間隙開(kāi)始后必須把I/O引腳驅(qū)動(dòng)為低電平15 μs,以讀取I/O引腳狀態(tài)。三防平板電腦讀操作時(shí)序如圖9所示。
在讀時(shí)間隙的結(jié)尾,I/O 引腳將被外部上拉電阻拉到高電平,所有讀時(shí)間隙必須最少60 μs,包括兩個(gè)讀周期加至少1 μs的恢復(fù)時(shí)間。
(2)操作命令。
① 三防平板電腦ROM命令。
● 讀ROM(0x33H):該命令允許從DS18B20芯片中讀取8位編碼、序列號(hào)和8位CRC碼,當(dāng)總線上只有一個(gè)DS18B20時(shí)才可以使用。
圖8 讀操作時(shí)序
● 匹配 ROM(0x55H):該命令后面跟隨64位 ID 時(shí),可以在總線上找到一個(gè)唯一的DS18B20,只有匹配這個(gè) ID 的芯片才能響應(yīng)隨后的命令,而所有不匹配的芯片都等待復(fù)位。
● 跳過(guò)ROM(0xCCH):當(dāng)總線上只有單個(gè)芯片時(shí),可以使用該命令跳過(guò)ROM搜索以節(jié)省時(shí)間。
● 搜索 ROM(0xF0H):當(dāng)不知道總線上有幾個(gè)芯片和各芯片的 ID 時(shí),這條命令可以采用排除法識(shí)別總線上芯片的64位ID。
● 報(bào)警搜索(0xECH):在最近一次測(cè)溫后,滿足報(bào)警條件的芯片將響應(yīng)這條命令。
② 功能命令。
● 啟動(dòng)溫度轉(zhuǎn)換(0x44):?jiǎn)?dòng)DS18B20進(jìn)行溫度轉(zhuǎn)換。
● 讀暫存器(0xBE):讀暫存器9個(gè)字節(jié)內(nèi)容。
● 寫(xiě)暫存器(0x4E):將數(shù)據(jù)寫(xiě)入暫存器的TH、TL字節(jié)。
● 復(fù)制暫存器(0x48):把暫存器內(nèi)容寫(xiě)到E2PROM中。
● 讀E2PROM命令(0xB8):把E2PROM中的內(nèi)容寫(xiě)到暫存器。
● 讀電源供電方式(0XB4):若是寄生電源返回0,若是外部電源則返回1。
(3)三防平板電腦DS18B20讀取溫度值的子程序編寫(xiě)。DS18B20最基本的操作有:初始化、寫(xiě)時(shí)序、讀時(shí)序。下面給出了用C語(yǔ)言實(shí)現(xiàn)DS18B20初始化、寫(xiě)1個(gè)字節(jié)和讀1個(gè)字節(jié)的子程序。
DS18B20的C語(yǔ)言程序如下。
(4)三防平板電腦主程序流程。讀者可在以上子程序的基礎(chǔ)上,參考圖6-15所示的單路測(cè)量溫度主函數(shù)流程圖,以及圖6-16所示的多路測(cè)量溫度主函數(shù)流程圖,自行設(shè)計(jì)編寫(xiě)單路或多路測(cè)量溫度主函數(shù)、溫度轉(zhuǎn)換和顯示程序等。