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