1-Wire器件與8051系列單片機的軟件接口
關(guān)鍵詞:1-Wire總線,軟件接口,CRC校驗
1 引言
現(xiàn)在,單片機應用系統(tǒng)的外圍擴展已逐漸從以并行方式為主過渡到以串行方式為主,許多新型外圍器件都帶有串行擴展接口。通常的串行擴展接口和串行擴展總線有:UART的移位寄存器方式,MOTOROLA公司的SPI,NS公司的Microwire,Philips公司的IIC和Dallas公司的1-Wire總線等。1-Wire總線是一種最簡單的總線形式,它通過單條連接線完成了全部的控制、通信和供電,節(jié)省了I/O口,降低了系統(tǒng)成本并簡化了設計。1-Wire器件家族包含多種功能的器件,如身份識別器、傳感器、控制和存儲器等。在應用系統(tǒng)中,需要將這些簡易實用的外圍器件與系統(tǒng)中的微控制器互連。常用的方法包括:簡單的軟件方案;串行接口芯片,如DS2480;或以VHDL方式整合1-Wire主控器于定制的ASIC中。本文結(jié)合以1-Wire溫度傳感器構(gòu)成的溫度測控系統(tǒng),詳細講述1-Wire器件與常用的8051系列單片機的軟件接口。
2 1-Wire總線簡述
2.1 硬件配置
1-Wire總線通常如圖1連接,構(gòu)成一個簡捷的1-Wire網(wǎng)絡,它包括三個主要部分:帶有控制軟件的主控器(Master),連接上拉電阻和穩(wěn)壓二極管的連接線,以及各種功能的1-Wire器件(Slave)。漏極開路的端口結(jié)構(gòu)和上拉電阻Rpu使總線空閑時處于高電平狀態(tài)(3V至5.5V),從器件可直接從數(shù)據(jù)線上獲得工作電能(節(jié)省了電源線)。每一位讀寫時隙開始時,主控器把總線拉低(小于0.8V),結(jié)束時,釋放總線為高電平,這種按位自同步的數(shù)據(jù)傳輸方式節(jié)省了時鐘線。穩(wěn)壓二極管將總線最高電平限定在5.6V,起保護端口的作用。
1-Wire器件內(nèi)部結(jié)構(gòu)如圖1所示,1-Wire接口實現(xiàn)供電和同步。ROM存儲一個由廠家光刻的、全球唯一的、且不可更改的64位序列號,內(nèi)容如圖2所示。最低8位是器件的類型號(Family Code),功能相同的一類器件具有相同的類型號;然后是48位器件序列號(Serial Code);最后是8位CRC校驗位用于驗證數(shù)據(jù)傳輸?shù)恼_性,這樣,實際可用的256個序列號為器件或其附著的電路板或系統(tǒng)在1-Wire網(wǎng)絡中提供唯一的電子識別。外圍部件完成某一特定的功能,主控器通過對RAM的讀寫操作對器件進行控制。
2.2 通信規(guī)程
1-Wire總線采用主從式、位同步、半雙工串行方式通信,如圖3所示,分以下三步:
(1)總線初始化,主控器先復位脈沖,然后從器件發(fā)應答脈沖。
(2)ROM指令,主控器通過ROM指令來讀取各從器件的ROM識別碼,以選擇1-Wire總線上的某一器件,其余器件忽略主控器的后續(xù)指令。
(3)RAM指令,通過對從器件RAM的讀寫操作,讓外圍器件實現(xiàn)某一功能。
所有1-Wire器件與主控器之間的通信都符合上述規(guī)程,但不同類型的1-Wire器件的結(jié)構(gòu)和功能不同,8比特的ROM指令和RAM指令會略有不同,系統(tǒng)設計時查器件數(shù)據(jù)手冊即可。
3 接口時序及軟件模擬
在所設計的溫度測控系統(tǒng)中,選用了達拉斯公司性能優(yōu)良的1-Wire溫度傳感器DS1822,以一片常用的AT89C51作為系統(tǒng)主控器。89C51與1-Wire器件互連時,需要根據(jù)1-Wire總線協(xié)議,用軟件模擬1-Wire總線接口,89C51的P1和P3口都具有與1-Wire器件相同的集電極開路接上拉電阻的端口結(jié)構(gòu),根據(jù)管腳分配情況,選用P1.0模擬1-Wire總線接口。
如圖4所示,1-Wire總線上的數(shù)據(jù)傳輸是通過1-Wire總線協(xié)議最底層的操作時隙完成的。每個通信周期起始于主控器發(fā)出復位脈沖,然后,1-Wire器件以應答脈沖做出響應。當主控器將總線從空閑狀態(tài)的邏輯高拉為邏輯低時,即啟動了一個讀寫時隙。在寫“0”時隙中,主控器在整個時隙期間將總線拉低;而后在15us之內(nèi)釋放總線為高。在讀時隙中,主控器將總線拉低1us,接頭釋放總線,這樣,1-Wire從器件就能夠接管總線,輸出有效數(shù)據(jù)。所有的讀寫時隙在60us至120us內(nèi)完成,并且每個時隙之間至少需要1us的恢復時間。
按圖4的時序要求,先建立以下幾個關(guān)鍵的子函數(shù),作為1-Wire器件與8051系列單片機的軟件接口的基礎(chǔ)(晶振頻率為12M,一個機器周期為1us)。
在上述時序模擬子函數(shù)的基礎(chǔ)上,建立讀、寫一個子節(jié)函數(shù),根據(jù)1-Wire協(xié)議的要求,傳送數(shù)據(jù)時低位在前高位在后。
主控器讀入1-Wire器件數(shù)據(jù)后,會進行CRC校驗。1-Wire協(xié)議采用的8位CRC校驗的生成多項式為:
g(x)=x8+x5+x4+1
其硬件生成器如圖5所示。
評論