《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于單片機(jī)串口實(shí)現(xiàn)1-Wire總線(xiàn)通信的方法
基于單片機(jī)串口實(shí)現(xiàn)1-Wire總線(xiàn)通信的方法
來(lái)源:微型機(jī)與應(yīng)用2012年第11期
李 多,,陳 軍
(東南大學(xué) 自動(dòng)化學(xué)院,江蘇 南京 211189)
摘要: 主要介紹了一種借助單片機(jī)串口實(shí)現(xiàn)1-Wire總線(xiàn)通信的方法,,并以集成數(shù)字溫度傳感器DS18B20為例,,基于有限狀態(tài)機(jī)采用該方法完成了通信程序的設(shè)計(jì),。
Abstract:
Key words :

摘  要: 主要介紹了一種借助單片機(jī)串口實(shí)現(xiàn)1-Wire總線(xiàn)通信的方法,并以集成數(shù)字溫度傳感器DS18B20為例,,基于有限狀態(tài)機(jī)采用該方法完成了通信程序的設(shè)計(jì),。
關(guān)鍵詞: 1-Wire總線(xiàn);串口,;有限狀態(tài)機(jī),;DS18B20

 1-Wire總線(xiàn)是Dallas半導(dǎo)體公司推出的一種半雙工串行總線(xiàn),,它采用單根信號(hào)線(xiàn)實(shí)現(xiàn)微控制器(主機(jī))與接口器件(從機(jī))之間的雙向通信,每個(gè)從機(jī)具有唯一的工廠(chǎng)光刻ID作為地址,。
 1-Wire總線(xiàn)的優(yōu)勢(shì)在于結(jié)構(gòu)簡(jiǎn)單,、便于總線(xiàn)擴(kuò)展,可以通過(guò)總線(xiàn)為器件供電,。1-Wire器件種類(lèi)豐富,,典型器件包括溫度傳感器、存儲(chǔ)器,、實(shí)時(shí)時(shí)鐘,、電池管理等。在低功耗儀表,、工業(yè)控制及家庭監(jiān)控網(wǎng)絡(luò)等領(lǐng)域,,1-Wire總線(xiàn)獲得了廣泛應(yīng)用。
 1-Wire總線(xiàn)協(xié)議通常采用軟件延時(shí)實(shí)現(xiàn),,對(duì)于實(shí)時(shí)性高且無(wú)操作系統(tǒng)的單片機(jī),,該方式難以提高單片機(jī)效率,同時(shí)極大地降低了系統(tǒng)實(shí)時(shí)性,。本文提出了一種基于單片機(jī)串口的1-Wire總線(xiàn)協(xié)議的軟硬件設(shè)計(jì),,該設(shè)計(jì)實(shí)現(xiàn)了1-Wire總線(xiàn)通信和單片機(jī)效率、實(shí)時(shí)性的兼顧,。
1 1-Wire總線(xiàn)協(xié)議簡(jiǎn)析
 1-Wire總線(xiàn)的單根信號(hào)線(xiàn)兼有地址總線(xiàn),、數(shù)據(jù)總線(xiàn)和控制總線(xiàn)的功能,因此,,訪(fǎng)問(wèn)1-Wire器件要嚴(yán)格遵循總線(xiàn)協(xié)議以保證數(shù)據(jù)完整性,。
 1-Wire總線(xiàn)協(xié)議定義了初始化脈沖、寫(xiě)脈沖和讀脈沖3類(lèi)總線(xiàn)信號(hào),,其主要區(qū)別在于,,總線(xiàn)上高低電平時(shí)間不同,下面分別對(duì)它們進(jìn)行簡(jiǎn)析,。


2.2 通信協(xié)議接口
 單片機(jī)串口采用1 bit起始位,、8 bit數(shù)據(jù)位、1 bit停止位的工作方式,,發(fā)送時(shí)由LSB至MSB逐位發(fā)送,。
?。?)初始化脈沖
設(shè)置波特率為9 600 b/s,,即每1 bit的寬度為104.2 μs,發(fā)送數(shù)據(jù)0xf0,,則起始位和低4 bit構(gòu)成復(fù)位信號(hào),,高4 bit為1,,即釋放總線(xiàn)。如總線(xiàn)上無(wú)應(yīng)答信號(hào),,則串口接收的數(shù)據(jù)等于0xf0,,否則說(shuō)明總線(xiàn)上有應(yīng)答信號(hào)。
?。?)讀寫(xiě)脈沖
 設(shè)置波特率為115 200 b/s,,即每1 bit的寬度為8.7 μs,完整的發(fā)送過(guò)程持續(xù)87 μs,,滿(mǎn)足讀寫(xiě)脈沖至少60 μs的協(xié)議要求,。起始位、停止位分別用來(lái)啟動(dòng),、終止讀寫(xiě)脈沖,。寫(xiě)脈沖中,根據(jù)串口發(fā)送不同數(shù)據(jù)區(qū)分別實(shí)現(xiàn)寫(xiě)0時(shí)序和寫(xiě)1時(shí)序,;讀脈沖中,,串口發(fā)送數(shù)據(jù)0xff,起始位實(shí)現(xiàn)讀脈沖時(shí)序的啟動(dòng),,LSB為1,,此時(shí),主機(jī)釋放并采樣總線(xiàn),,起始位與LSB共維持17.4 μs,,滿(mǎn)足協(xié)議對(duì)讀時(shí)序的要求。根據(jù)串口接收的數(shù)據(jù)最低位即可區(qū)分從機(jī)發(fā)送至總線(xiàn)的數(shù)據(jù),。
 采用串口實(shí)現(xiàn)1-Wire總線(xiàn)通信的本質(zhì)在于將3類(lèi)總線(xiàn)信號(hào)與不同波特率下不同數(shù)據(jù)的串口收發(fā)過(guò)程建立聯(lián)系,,初始化脈沖對(duì)應(yīng)2次串口收發(fā)的過(guò)程,讀寫(xiě)脈沖則對(duì)應(yīng)1次串口收發(fā)的過(guò)程[4],。具體對(duì)應(yīng)關(guān)系如表1所示,。

3 1-Wire總線(xiàn)應(yīng)用——DS18B20
 DS18B20是1-Wire總線(xiàn)的集成數(shù)字

 

溫度傳感器,其精度高,、體積小,,在智能儀器儀表、工業(yè)控制等領(lǐng)域中廣泛應(yīng)用,。
 傳統(tǒng)應(yīng)用方式是采用一根I/O引腳配合軟件延時(shí)的方式實(shí)現(xiàn)相關(guān)協(xié)議,,1-Wire總線(xiàn)協(xié)議需要微秒級(jí)時(shí)間分辨率,在通信過(guò)程中必須關(guān)閉系統(tǒng)所有中斷,,否則極容易因?yàn)橹袛喾?wù)程序的執(zhí)行而造成通信數(shù)據(jù)錯(cuò)誤,。但是關(guān)閉中斷降低了系統(tǒng)實(shí)時(shí)性,使得系統(tǒng)不能及時(shí)響應(yīng)外部請(qǐng)求,。對(duì)于任務(wù)少,、實(shí)時(shí)性要求不高的系統(tǒng),,這種做法是可行的,但是對(duì)于任務(wù)多且無(wú)操作系統(tǒng)的單片機(jī),,以初始化脈沖為例,,在至少960 μs的時(shí)間內(nèi),單片機(jī)都會(huì)被1-Wire總線(xiàn)占用,,效率大為降低,,實(shí)時(shí)性難以保證。
 基于單片機(jī)串口中斷實(shí)現(xiàn)1-Wire協(xié)議,,并配合狀態(tài)機(jī)實(shí)現(xiàn)與DS18B20通信,,為上述問(wèn)題提出了解決方案。由于串口的收發(fā)都是通過(guò)硬件完成,,因此數(shù)據(jù)收發(fā)過(guò)程中單片機(jī)可以處理其他任務(wù),,在實(shí)現(xiàn)1-Wire通信的同時(shí),兼顧了實(shí)時(shí)性和效率,。
 通信程序包括中斷服務(wù)程序和通信狀態(tài)機(jī),。中斷服務(wù)程序?yàn)槲锢韺樱瓿蓴?shù)據(jù)緩沖區(qū)中的數(shù)據(jù)收發(fā),,并通過(guò)全局變量標(biāo)識(shí)總線(xiàn)的狀態(tài),;通信狀態(tài)機(jī)為DS18B20協(xié)議層,將對(duì)DS18B20的訪(fǎng)問(wèn)劃分為子狀態(tài),,根據(jù)表1將對(duì)DS18B20的不同操作轉(zhuǎn)化為相應(yīng)數(shù)據(jù)并存入數(shù)據(jù)緩沖區(qū),,在總線(xiàn)處于空閑狀態(tài)時(shí),依次完成狀態(tài)轉(zhuǎn)移,。通信狀態(tài)轉(zhuǎn)換圖如圖5所示[4],。

 本文提出了一種基于單片機(jī)串口的1-Wire總線(xiàn)通信方式,結(jié)合1-Wire器件DS18B20詳細(xì)介紹了其軟硬件設(shè)計(jì),。相比于傳統(tǒng)1-Wire通信方式,,本文提出的方式提高了單片機(jī)效率,兼顧了1-Wire通信和系統(tǒng)的實(shí)時(shí)性,,為多任務(wù)且無(wú)操作系統(tǒng)的單片機(jī)應(yīng)用1-Wire器件提供了新的解決方案,。
參考文獻(xiàn)
[1] 馬潮.AVR單片機(jī)嵌入式系統(tǒng)原理與應(yīng)用實(shí)踐(第二版)[M].北京:北京航空航天大學(xué)出版社,2011.
[2] Maxim. DS18B20 datasheet[Z]. 2008.
[3] Maxim. Application note 214: using a UART to implement a 1-Wire bus master[Z]. 2002.
[4] ATMEL. AVR318: Dallas 1-Wire master [Z]. 2004.

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。