基于DS28EA00的單總線測(cè)溫系統(tǒng)設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要:介紹了一種基于Dallas公司的新型數(shù)字溫度傳感器DS28EA00的單總線測(cè)溫系統(tǒng)的設(shè)計(jì)方案。DS28EA00支持順序檢測(cè)功能,允許用戶(hù)將器件在鏈路中的物理位置與序列號(hào)對(duì)應(yīng)。采用該方案無(wú)需進(jìn)行傳統(tǒng)的ROM搜索,節(jié)省了RAM開(kāi)銷(xiāo),進(jìn)一步簡(jiǎn)化了基于單總線的應(yīng)用設(shè)計(jì)。
關(guān)鍵詞:?jiǎn)纹瑱C(jī);數(shù)字溫度傳感器;單總線;DS28EA00
引言
單總線技術(shù)是美國(guó)Dallas公司的一項(xiàng)專(zhuān)有技術(shù),采用單根信號(hào)線傳輸數(shù)據(jù),具有節(jié)省I/O口資源、結(jié)構(gòu)簡(jiǎn)單、成本低、便于總線擴(kuò)展和維護(hù)等諸多優(yōu)點(diǎn)。單總線技術(shù)適用于單個(gè)主機(jī)系統(tǒng)控制一個(gè)或多個(gè)從機(jī)設(shè)備。Dallas公司的單總線產(chǎn)品中均有一個(gè)8字節(jié)只讀存儲(chǔ)器(ROM),用于存放產(chǎn)品的序列號(hào)(每個(gè)芯片唯一的64位標(biāo)識(shí)代碼)。如圖1所示,從低位起第一個(gè)字節(jié)(8位)是器件的家族代碼,表示產(chǎn)品的分類(lèi);接下來(lái)的6個(gè)字節(jié)(48位)是每個(gè)器件唯一的ID號(hào);最后一個(gè)字節(jié)(8位)是前56位的CRC校驗(yàn)碼。同一種類(lèi)型的器件有248個(gè)ID號(hào)碼總量,確保了在總線上不會(huì)產(chǎn)生地址沖突。
傳統(tǒng)的基于單總線的測(cè)溫系統(tǒng)采用ROM搜索的方式在線識(shí)別掛接在總線上器件的注冊(cè)碼和器件的類(lèi)型,由此可在線確定總線上的器件數(shù)量。但是,隨著掛接在總線上的單總線器件增加,搜索ROM的時(shí)間也隨之增加,系統(tǒng)開(kāi)銷(xiāo)增大?;诖耍驹O(shè)計(jì)采用支持菊鏈模式的新型數(shù)字溫度傳感器芯片DS28EA00組建單總線測(cè)溫網(wǎng)絡(luò)。該方案無(wú)需進(jìn)行傳統(tǒng)的ROM搜索步驟,允許用戶(hù)將器件在鏈路中的物理位置與序列號(hào)對(duì)應(yīng),節(jié)省了RAM開(kāi)銷(xiāo),簡(jiǎn)化了基于單總線的應(yīng)用設(shè)計(jì)。
1 DS28EA00特性分析
DS28EA00是具有9位(0.5℃)至12位(0.062 5℃)分辨率和用戶(hù)可編程非易失性(NV)上/下觸發(fā)點(diǎn)報(bào)警功能的數(shù)字溫度計(jì)。每個(gè)DS28EA 00都有工廠編程的唯一64位序列號(hào)。DS28EA00具有滯回和干擾濾波功能,使其能夠在大的單總線網(wǎng)絡(luò)中可靠工作。與其他單總線器件(例如DS18B20)不同,DS28EA00具有兩個(gè)額外的引腳用以執(zhí)行順序檢測(cè)功能。該特性允許用戶(hù)將器件在鏈路中的物理位置與序列號(hào)對(duì)應(yīng),例如用來(lái)測(cè)量?jī)?chǔ)存塔不同高度處的溫度。如果無(wú)需順序檢測(cè)功能,這些引腳可作為通用輸入或輸出。
2 基于DS28EA00的測(cè)溫系統(tǒng)的硬件連接
采用DS28EA00的單總線測(cè)溫系統(tǒng)硬件連接圖如圖2所示,主控制器采用51系列單片機(jī),通過(guò)一個(gè)通用I/O口與單總線器件DS28EA00連接。與Dallas其他的數(shù)字溫度傳感器不同,DS28EA00具有兩個(gè)額外的引腳PIOA和PIOB。其中,除了連接在總線上的第一個(gè)DS28EA00的PIOB接地外,其他每一個(gè)器件的PIOA均與下一個(gè)器件的PIOB相連接,最后一個(gè)DS28EAOO的PIOA懸空或接地,所有的DS28EA00采用菊鏈的方式互連在一起。微控制器的其他部分連接輸入設(shè)備、輸出設(shè)備和通信接口。
3 單總線菊鏈模式下的順序檢測(cè)分析
如表1所列,在菊鏈模式連接方式下,DS28EA00有3種工作狀態(tài):OFF、ON和DONE。這3種狀態(tài)的轉(zhuǎn)換由Chain command命令控制。當(dāng)接通電源后,總線上所有的DS28EA00均處于OFF狀態(tài),在該狀態(tài)下順序檢測(cè)ROM命令“Conditional Read ROM”不起作用。當(dāng)處于ON狀態(tài)時(shí),如果DS28EA00的PIOB引腳處于低電平狀態(tài),那么它將響應(yīng)“Conditional Read ROM”命令,發(fā)送自己的ROM序列號(hào)。當(dāng)發(fā)送完成后,該DS28EA00將處于DOWN狀態(tài),不再響應(yīng)“Conditional Read ROM"命令,并將自己的PIOA引腳置“0”電平,使得下一個(gè)DS28EA00繼續(xù)響應(yīng)“Conditional Read ROM”命令,發(fā)送自己的ROM序列號(hào),直到連接在單總線上的最后一個(gè)DS28EAOO。當(dāng)微控制器把所有DS28EA00的序列號(hào)都讀到后,發(fā)送Chain DOWN命令,使得總線上掛接的所有DS28EA00均回復(fù)到OFF狀態(tài)。如此,便完成了對(duì)總線上所有DS28EA00的ROM檢測(cè),并且是按照順序一個(gè)一個(gè)檢測(cè)的,這使得檢測(cè)的序列號(hào)與器件在鏈路中的物理位置相對(duì)應(yīng)。如圖3所示,主控制器采用Chain command命令可以使DS28EA00在3種狀態(tài)間切換,當(dāng)發(fā)送Chain command命令后,主控制器必須接著往總線上先寫(xiě)入一個(gè)字符的命令碼,然后把該命令碼以反碼的形式再寫(xiě)入一遍。3個(gè)命令碼3Ch、5Ah、96h分別對(duì)應(yīng)狀態(tài)OFF、ON和DOWN。如果菊鏈狀態(tài)改變成功,則微控制器收到字符AAh,否則收到OOh。
4 基于DS28EA00的測(cè)溫系統(tǒng)的軟件設(shè)計(jì)
菊鏈狀態(tài)下利用DS28EA00進(jìn)行多點(diǎn)測(cè)溫的程序流程如圖4所示,測(cè)溫主要分為下面幾步:
①首先,單片機(jī)通過(guò)I/O口發(fā)送Skip ROM命令,同時(shí)向多個(gè)DS28EA00發(fā)送信號(hào),接在Skip ROM命令后,發(fā)送Chain ON命令,使得所有的DS28EA00均處在ON狀態(tài),此時(shí)所有從器件的PIOA/PIOB引腳都是高電平狀態(tài)除了總線網(wǎng)絡(luò)中的第一個(gè)DS28EA00,它的PIOB是接地的。
②主控制器發(fā)送Conditional Read ROM命令,此時(shí)菊鏈網(wǎng)絡(luò)中的第一個(gè)DS28EA00將響應(yīng)此命令,并發(fā)送自己的64位ROM序列號(hào),當(dāng)主控制器接收到序列號(hào)后,接著發(fā)送Chain DONE命令,把第一個(gè)DS28EA00置為DOWN狀態(tài),并且使其PIOA腳輸出低電平,由于狀態(tài)變?yōu)镈OWN,第一個(gè)DS28EA00將不再響應(yīng)ConditionalRead ROM命令。
③主控制器繼續(xù)發(fā)送Conditional Read ROM命令,此時(shí)由于第二個(gè)DS28EA00的PIOB腳被置低電平,所以將響應(yīng)該條命令,并發(fā)送自己的64位ROM序列號(hào),當(dāng)主控制器接收到序列號(hào)后,繼續(xù)發(fā)送Chain DONE命令,把第二個(gè)DS28EA00也置為DOWN狀態(tài),并且使其PIOA腳輸出低電平,將選通第三個(gè)DS28EA00。
④主控制器將重復(fù)的執(zhí)行Conditional Read ROM命令,直到總線上所有的DS28EA00都完成發(fā)送ROM序列號(hào)。
⑤主控制器通過(guò)發(fā)送Skip ROM命令和Chain OFF命令結(jié)束順序檢測(cè)操作。
⑥主控制器根據(jù)讀到的DS28EA00序列號(hào),向指定的DS28EA00讀取溫度值。
以下為部分測(cè)溫的源程序,編程環(huán)境是Keil C。
5 小結(jié)
本文介紹了一種基于DS28EA00的單總線測(cè)溫系統(tǒng)的設(shè)計(jì)方案。采用Dallas公司生產(chǎn)的支持菊連模式的數(shù)字溫度傳感器DS28EA00作為基本測(cè)溫元件,重點(diǎn)分析了菊連模式下的順序檢測(cè)過(guò)程,給出了硬件連接圖及軟件流程。采用該方案無(wú)需進(jìn)行傳統(tǒng)的ROM序列號(hào)搜索步驟,節(jié)省了RAM開(kāi)銷(xiāo),簡(jiǎn)化了基于單總線測(cè)溫的設(shè)計(jì)。