單總線(1-Wire)是DALLAS公司推出的一種單線雙向串行總線,僅用一根線即可實現多個器件間的數據傳輸。目前,常用的單總線接口芯片有數字溫度傳感器DS18B20、單總線控制器DSIWM和D-A轉換器DS2450等。本節(jié)將以單總線溫度傳感器DS18B20為例,介紹單總線接口器件的引腳功能、時序及使用方法;最后,給出AT89C52單片機擴展DS18B20的例子。
單總線的引腳功能和時序
1.單總線的引腳功能
在單總線接口擴展中,一根線DQ將所有器件連接在一起,如圖6-19所示。DQ是雙向傳輸線,可以傳送時鐘信號和數據。為保證總線空閑時該引腳為高電平,DQ引腳必須經過一個約5kΩ的電阻與正電源相連,如圖6-20所示。另外,在圖6-20中,主機是指單片機等控制器。沒有專用單總線引腳的單片機可以用I/O口引腳模擬單總線引腳。
圖6-19單總線接口擴展示意圖
圖6-20 DS18B20單總線引腳硬件結構示意圖
使用單總線接口器件時要注意:
1)在單總線通信中,只能有一個主機(只有含CPU的器件可以做主機),并且從機只能被動地與主機通信。
2)單總線接口器件都具有唯一、不能更改,且與其他器件不同的64位ROM序列號,主機可以通過該序列號尋址單總線上掛接的從機。
3)單總線的數據傳輸順序是“先低位,后高位”。
4)單總線接口器件采用寄生電源的供電方式時,不需要外接電源。
2.單總線的引腳時序
為保證數據傳輸的正確性,單總線接口器件通信過程中必須按照通信協(xié)議要求產生總線信號。單總線協(xié)議中的信號類型有以下幾種,分別是復位脈沖、存在脈沖、寫0信號、寫1信號、讀0信號和讀1信號。上述信號中,除了存在脈沖,所有信號均由主機產生。這些信號的時序如圖6-21所示,下面分別介紹。
圖6-21 DS18B20的DQ引腳時序
(1)復位脈沖
單總線的數據傳輸開始于主機發(fā)出復位脈沖,這是總線初始化操作。如圖6-21所示,主機(即控制器)將DQ引腳置為低電平,即將總線的電平拉低,并保持480~960μs,以產生“復位脈沖”。復位脈沖發(fā)出后,主機重新將DQ置為高電平(即釋放總線)并等待15~60μs,之后檢測從機是否發(fā)出了“存在脈沖”。若檢測到“存在脈沖”則開始通信,否則不通信。
(2)存在脈沖
主機發(fā)出復位脈沖并釋放總線時,總線上產生上升沿。從機(此處指DS18B20)檢測到該上升沿后,等待15~60μs再將總線DQ引腳置為低電平,并保持60~240μs。如圖6-21所示,這個持續(xù)60~240μs的低電平即是從機發(fā)出的“存在脈沖”。
(3)主機的寫時隙
主機通過寫“0”時隙向從機發(fā)送邏輯0,通過寫“1”時隙向從機發(fā)送邏輯1。寫“0”時隙和寫“1”時隙都必須維持至少60μs。兩次寫時隙之間至少需要1μs的恢復時間。產生寫“0”時隙和寫“1”時隙的方法分別如下:
1)產生寫“0”時隙的方法是,主機拉低總線電平,并保持60~120μs,然后釋放總線(即向總線寫1)。
2)產生寫“1”時隙的方法是,主機拉低總線電平,并在15μs內釋放總線,
寫“0”時隙和寫“1”時隙都以拉低總線開始,從機檢測到由此產生的下降沿后,將在15~60μs內讀取數據,即檢測總線上的電平,低電平為0,高電平為1。
(4)主機的讀時隙
主機產生讀時隙后,從機才能向主機發(fā)送數據。主機產生讀時隙的方法是將總線拉底,并保持至少1μs,然后釋放總線。從機檢測到總線上的這個上升沿信號后,將數據送到總線上、發(fā)給主機。若從機發(fā)給主機的是0,則總線上產生主機讀“0”時隙,若發(fā)給的是1,則產生讀“1”時隙。需要注意的是,從機的數據只能保持15μs,因此主機必須在產生讀時隙后的15μs內完成讀數據的操作。