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