基于1一Wire總線的嵌入式測溫系統設計
1.2.1 復位/應答時序
DS2480B接到主機復位命令后將總線拉低512 μs后釋放總線,等待2μs(短路/中斷采樣)后檢測總線上是否有短路或中斷信號,如果沒有則等待8μs(應答采樣)后檢測總線上是否有應答脈沖,再等待512μs(延遲)后向主機發送命令應答字。如果總線上有短路或中斷信號則等待4 096 μs后再次檢測總線。時序如圖3所示。
1.2.2 寫1/讀數據時序
DS2480B在寫1/讀數據時序中先將總線拉低8~15 μs(寫1低),3~10μs(數據采樣)數據采樣偏移后對總線采樣并讀從器件應答。再經過49 μs(等待高)1/讀數據時序結束。時序圖如圖4所示。
l. 2.3 寫0時序
DS2480B的寫O時序中先將總線拉低57弘s(寫O低)然后釋放總線,3~10μs后寫0時序結束。如圖5所示。
DS2480B可以被看作包含2個靜態和多個動態的狀態機。上電后DS2480B自動進入兩個靜態之一的命令模式。此時主機應向DS2480B發送1次復位命令,用來校準DS2480B內部的時序產生器,所有的1一Wire通信過程都必須以復位命令開始。此后DS2480B準備好接收及執行任何合法命令。在命令模式下微處理器可以改變1一Wire網絡的通信速度、供電方式、改變1一wire通信波形等。DS2480B從命令模式轉換到下一個靜態一數據模式后將從TXD管腳上收到的信息字節轉換成相應的1一Wire通信波形并將從器件返回的應答字節通過RXD管腳返回給微處理器。也就是說對1一wire從器件DSl8820的操作必須在數據模式下進行。
2 系統設計
系統設計包括硬件設計和軟件設計2部分。
2.1 系統硬件設計
與DS2480B橋接器一起工作的UART應支持8位字長、無奇偶校驗、9 600波特率(b/s)的通信方式。該系統采用Silicon公司生產的C8051F040作為主處理器,(;8051F040有2個uART串口,且滿足橋接器對UART的要求。溫度采集轉換芯片為Dallas公司生產的DSl8820。系統原理圖如圖6所示。
其中從C8051F040的UART到DS2480B需用1片QS3245進行3~5 V的電平轉換。1一Wire總線上過多的噪聲會影響l―wire通信的正確性,為了濾除電路中的噪聲保護。DS2480B的1一Wire端口不受靜電損傷DS2480B的1一w管腳外接RC濾波電路。在本設計中只涉及到基本DS2480B操作,在需要進行EPROM編程的設計中應串接2個DS9503。
2.2 系統軟件設計
給出的1一Wire總線驅動程序是結合圖4所述電路,以C8051F040單片機為主控制器,使用內部時鐘頻率24.5 MHz編寫而成,其中包括DS24.80B復位子程序、DS2480B初始化子程序、總線復位子程序、溫度采集子程序、溫度值讀取子程序。C8051F040系統內部有64 KB FLASH存儲器可以用來存儲程序代碼。C代碼設計調試工具為Silicon公司提供的單片機集成開發環境。
控制器上電后,對自身和DS2480B進行初始化并與DS2480B取得同步。由于DS2480B中沒有晶振,它必須通過采樣主機發送的字節來調節自身的時基。主控制器在低于9 600波特率條件下發送1次0字節可以產生1次復位信號。Ds2480B復位后所有參數恢復到缺省狀態,在該設計中1一Wire網絡長度在10 m之內,屬于小型長度,為了取得良好的性能,選擇在“flexi―ble speed”下進行標準速度通信。對DS2480B復位和初始化是進行正確1一Wire通信的前提,當網絡中應答數據包長度或格式不正確時,也必須重新對DS2480B復位和初始化。
所有的1一Wire操作都是從復位1一Wire總線開始的。每次采集溫度值和讀取溫度值操作前最好對總線進行1次復位操作,同時檢測來自總線上的從器件的在線應答脈沖。驅動程序流程圖如圖7所示,部分程序代碼如下所示:
評論