單總線(xiàn)(1-Wire Bus)技術(shù)及其應(yīng)用
關(guān)鍵詞:單總線(xiàn) 單總線(xiàn)協(xié)議 iButton
1 引言
目前常用的微機(jī)與外設(shè)之間進(jìn)行數(shù)據(jù)傳輸?shù)拇锌偩€(xiàn)主要有I2C總線(xiàn)、SPI總線(xiàn)和SCI總線(xiàn)。其中I2C總線(xiàn)以同步串行2線(xiàn)方式進(jìn)行通信(一條時(shí)鐘線(xiàn),一條數(shù)據(jù)線(xiàn)),SPI總線(xiàn)則以同步串行3線(xiàn)方式進(jìn)行通信(一條時(shí)鐘線(xiàn),一條數(shù)據(jù)輸入線(xiàn),一條數(shù)據(jù)輸出線(xiàn)),而SCI總線(xiàn)是以異步方式進(jìn)行通信(一條數(shù)據(jù)輸入線(xiàn),一條數(shù)據(jù)輸出線(xiàn))的。這些總線(xiàn)至少需要兩條或兩條以上的信號(hào)線(xiàn)。近年來(lái),美國(guó)的達(dá)拉斯半導(dǎo)體公司(DALLAS SEMICONDUCTOR)推出了一項(xiàng)特有的單總線(xiàn)(1-Wire Bus)技術(shù)。該技術(shù)與上述總線(xiàn)不同,它采用單根信號(hào)線(xiàn),既可傳輸時(shí)鐘,又能傳輸數(shù)據(jù),而且數(shù)據(jù)傳輸是雙向的,因而這種單總線(xiàn)技術(shù)具有線(xiàn)路簡(jiǎn)單,硬件開(kāi)銷(xiāo)少,成本低廉,便于總線(xiàn)擴(kuò)展和維護(hù)等優(yōu)點(diǎn)。
單總線(xiàn)適用于單主機(jī)系統(tǒng),能夠控制一個(gè)或多個(gè)從機(jī)設(shè)備。主機(jī)可以是微控制器,從機(jī)可以是單總線(xiàn)器件,它們之間的數(shù)據(jù)交換只通過(guò)一條信號(hào)線(xiàn)。當(dāng)只有一個(gè)從機(jī)設(shè)備時(shí),系統(tǒng)可按單節(jié)點(diǎn)系統(tǒng)操作;當(dāng)有多個(gè)從設(shè)備時(shí),系統(tǒng)則按多節(jié)點(diǎn)系統(tǒng)操作。圖1所示是單總線(xiàn)多節(jié)點(diǎn)系統(tǒng)的示意圖。
2 單總線(xiàn)的工作原理
顧名思義,單總線(xiàn)即只有一根數(shù)據(jù)線(xiàn),系統(tǒng)中的數(shù)據(jù)交換、控制都由這根線(xiàn)完成。設(shè)備(主機(jī)或從機(jī))通過(guò)一個(gè)漏極開(kāi)路或三態(tài)端口連至該數(shù)據(jù)線(xiàn),以允許設(shè)備在不發(fā)送數(shù)據(jù)時(shí)能夠釋放總線(xiàn),而讓其它設(shè)備使用總線(xiàn),其內(nèi)部等效電路如圖2所示。單總線(xiàn)通常要求外接一個(gè)約為4.7kΩ的上拉電阻,這樣,當(dāng)總線(xiàn)閑置時(shí),其狀態(tài)為高電平。主機(jī)和從機(jī)之間的通信可通過(guò)3個(gè)步驟完成,分別為初始化1-wire器件、識(shí)別1-wire器件和交換數(shù)據(jù)。由于它們是主從結(jié)構(gòu),只有主機(jī)呼叫從機(jī)時(shí),從機(jī)才能應(yīng)答,因此主機(jī)訪(fǎng)問(wèn)1-wire器件都必須嚴(yán)格遵循單總線(xiàn)命令序列,即初始化、ROM、命令功能命令。如果出現(xiàn)序列混亂,1-wire器件將不響應(yīng)主機(jī)(搜索ROM命令,報(bào)警搜索命令除外)。表1是列為ΔΙΩ命令的說(shuō)明,而功能命令則根據(jù)具體1-wire器件所支持的功能來(lái)確定。
表1 ROM命令說(shuō)明
ROM命令 | 說(shuō) 明 |
搜索ROM(F0h) | 識(shí)別單總線(xiàn)上所有的1-wire器件的ROM編碼 |
讀ROM(33h)(僅適合單節(jié)點(diǎn)) | 直接讀1-wire器件的序列號(hào) |
匹配ROM(55h) | 尋找與指定序列號(hào)相匹配的1-wire器件 |
跳躍ROM(CCh)(僅適合單節(jié)點(diǎn)) | 使用該命令可直接訪(fǎng)問(wèn)總線(xiàn)上的從機(jī)設(shè)備 |
報(bào)警搜索ROM(Ech)(僅少數(shù)器件支持) | 搜索有報(bào)警的從機(jī)設(shè)備 |
3 信號(hào)方式
所有的單總線(xiàn)器件都要遵循嚴(yán)格的通信協(xié)議,以保證數(shù)據(jù)的完整性。1-wire協(xié)議定義了復(fù)位脈沖、應(yīng)答脈沖、寫(xiě)0、讀0和讀1時(shí)序等幾種信號(hào)類(lèi)型。所有的單總線(xiàn)命令序列(初始化,ROM命令,功能命令)都是由這些基本的信號(hào)類(lèi)型組成的。在這些信號(hào)中,除了應(yīng)答脈沖外,其它均由主機(jī)發(fā)出同步信號(hào),并且發(fā)送的所有命令和數(shù)據(jù)都是字節(jié)的低位在前。圖3是這些信號(hào)的時(shí)序圖。其中,圖3(a)是初始化時(shí)序,初始化時(shí)序包括主機(jī)發(fā)出的復(fù)位脈沖和從機(jī)發(fā)出的應(yīng)答脈沖。主機(jī)通過(guò)拉低單總線(xiàn)至少480μs產(chǎn)生Tx復(fù)位脈沖;然后由主機(jī)釋放總線(xiàn),并進(jìn)入Rx接收模式。主機(jī)釋放總線(xiàn)時(shí),會(huì)產(chǎn)生一由低電平跳變?yōu)楦唠娖降纳仙兀瑔慰偩€(xiàn)器件檢測(cè)到該上升沿后,延時(shí)15~60μs,接著單總線(xiàn)器件通過(guò)拉低總線(xiàn)60~240μsμ來(lái)產(chǎn)生應(yīng)答脈沖。主機(jī)接收到從機(jī)的以應(yīng)答脈沖后,說(shuō)明有單總線(xiàn)器件在線(xiàn),然后主機(jī)就可以開(kāi)始對(duì)從機(jī)進(jìn)行ROM命令和功能命令操作。圖3中的(b)、(c)、(d)分別是寫(xiě)1、寫(xiě)0和讀時(shí)序。在每一個(gè)時(shí)序中,總線(xiàn)只能傳輸一位數(shù)據(jù)。所有的讀、寫(xiě)時(shí)序至少需要60μs,且每?jī)蓚€(gè)獨(dú)立的時(shí)序之間至少需要1μs的恢復(fù)時(shí)間。圖中,讀、寫(xiě)時(shí)序均始于主機(jī)拉低總線(xiàn)。在寫(xiě)時(shí)序中,主機(jī)將在拉低總線(xiàn)15μs之內(nèi)釋放總線(xiàn),并向單總線(xiàn)器件寫(xiě)1;若主機(jī)拉低總線(xiàn)后能保持至少60μs的低電平,則向單總線(xiàn)器件寫(xiě)0。單總線(xiàn)器件僅在主機(jī)發(fā)出讀時(shí)序時(shí)才向主機(jī)傳輸數(shù)據(jù),所以,當(dāng)主機(jī)向單總線(xiàn)器件發(fā)出讀數(shù)據(jù)命令后,必須馬上產(chǎn)生讀時(shí)序,以便單總線(xiàn)器件能傳輸數(shù)據(jù)。在主機(jī)發(fā)出讀時(shí)序之后,單總線(xiàn)器件才開(kāi)始在總線(xiàn)上發(fā)送0或1。若單總線(xiàn)器件發(fā)送1,則總線(xiàn)保持高電平,若發(fā)送0,則拉低總線(xiàn)。由于單總線(xiàn)器件發(fā)送數(shù)據(jù)后可保持15μs有效時(shí)間,因此,主機(jī)在讀時(shí)序期間必須釋放總線(xiàn),且須在15μs的采樣總線(xiàn)狀態(tài),以便接收從機(jī)發(fā)送的數(shù)據(jù)。
圖3 單總線(xiàn)的幾種信號(hào)時(shí)序
4 單總線(xiàn)器件
通常把掛在單總線(xiàn)上的器件稱(chēng)之為單總線(xiàn)器件,單總線(xiàn)器件內(nèi)一般都具有控制、收*發(fā)、存儲(chǔ)等電路。為了區(qū)分不同的單總線(xiàn)器件,廠(chǎng)家生產(chǎn)單總線(xiàn)器件時(shí)都要刻錄一個(gè)64位的二進(jìn)制ROM代碼,以標(biāo)志其ID號(hào)。目前,單總線(xiàn)器件主要有數(shù)字溫度傳感器(如DS18B20)、A/D轉(zhuǎn)換器(如DS2450)、門(mén)標(biāo)、身份識(shí)別器(如DS1990A)、單總線(xiàn)控制器(如DS1WM)等。這里介紹一種iButton形式的單總線(xiàn)器件,它是利用瞬間接觸來(lái)進(jìn)行數(shù)字通信的,這些器件的應(yīng)用已經(jīng)滲透到貨幣交易和高度安全的認(rèn)證系統(tǒng)之中。IButton是采用紐扣狀不銹鋼外殼封裝的微型計(jì)算機(jī)晶片,它具有抗撞擊、防水漬、耐腐蝕、抗磁擾、防折疊、價(jià)格便宜等特點(diǎn),能較好的解決傳統(tǒng)識(shí)別器存在的不足,同時(shí)又可滿(mǎn)足系統(tǒng)在可靠性、穩(wěn)定性方面的要求。
IButton主要有三種類(lèi)型,分別是Memory iButton(存儲(chǔ)器);Java-powered cryptographic iButton(加密型);Thermochron iButton(溫度型)。存儲(chǔ)型iButton最大存儲(chǔ)空間為64kB,可以存儲(chǔ)文本或數(shù)字照片。加密型iButton是一種微處理器和高速算法加速器,可以產(chǎn)生大量需要加密和解密的數(shù)據(jù)信息,它的運(yùn)行速度非??欤膳cInternet應(yīng)用相結(jié)合,并可應(yīng)用于遠(yuǎn)程鑒定識(shí)別。溫度型iButton可以測(cè)量溫度變化,它內(nèi)含溫度計(jì)、時(shí)鐘、熱記錄和存儲(chǔ)單元等。
圖4 安防系統(tǒng)硬件原理圖
5 單總線(xiàn)器件的應(yīng)用
現(xiàn)以單總線(xiàn)器件iButton在安防系統(tǒng)上的應(yīng)用為例來(lái)進(jìn)行說(shuō)明,該安防系統(tǒng)就是利用iButton來(lái)進(jìn)行門(mén)禁識(shí)別的。其門(mén)禁識(shí)別部分的硬件原理圖如圖4所示,它由主機(jī)微控制器、從機(jī)(包括iButton信息讀取頭和iButton)、主機(jī)通過(guò)RS485進(jìn)行遠(yuǎn)程通信(或通過(guò)MicroWeb連上Internet)等三部分組成。微控制器采用Microchip公司的PIC16F873芯片,而API8108A語(yǔ)音芯片則用來(lái)告訴用戶(hù)系統(tǒng)信息;iButton采用DS1990A,信息讀取頭被讀取并同時(shí)送到主機(jī)微控制器,然后由主機(jī)把收到的標(biāo)識(shí)碼與原先存儲(chǔ)的iButton標(biāo)識(shí)碼進(jìn)行比較判斷,若吻合,則系統(tǒng)按設(shè)定要求程序工作,否則,系統(tǒng)給出語(yǔ)音提示。DS1990A與主機(jī)微控制器之間的通信軟件設(shè)計(jì)流程圖如圖5所示。
通常主機(jī)與單總線(xiàn)器件的通信都是通過(guò)初始化、寫(xiě)0、寫(xiě)1、讀0、讀1時(shí)序來(lái)的完成的,下面給出用匯編語(yǔ)言編寫(xiě)的子程序,需要說(shuō)明的是,這些程序雖然是針對(duì)iButton所寫(xiě)的,但適用于所有的單總線(xiàn)器件,且簡(jiǎn)單易懂,現(xiàn)予給出,以供大家參考。
RESET BSF RB2 ;主機(jī)拉低總線(xiàn)
CALL DELAY_500us ;給500μs復(fù)位脈沖
BCF RB2 ;釋放總線(xiàn)
CALL DELAY_200us
BTFSC BR1 ;檢測(cè)iButton返回應(yīng)答脈沖否
GOTO RESET ;否,再給它復(fù)位脈沖
CALL DELAY_500us ;是,返回
RETURN
WRITE_0 BSF RB2 ;對(duì)iButton寫(xiě)0時(shí)序子程序
CALL DELAY_10us
CALL DELAY_60us
BCF RB2
CALL DELAY_10us
RETURN
WRITE_1 BSF RB2 ;對(duì)iButton寫(xiě)1時(shí)序子程序
CALL DELAY_10us
BCF RB2
CALL DELAY_60us
RETURN
READ_TIME BSF RB2 ;對(duì)iButton讀數(shù)據(jù)時(shí)序
NOP
NOP
NOP
BCF RB2
CALL DELAY_10us
RETURN
6 總結(jié)
單總線(xiàn)技術(shù)以其線(xiàn)路簡(jiǎn)單、硬件開(kāi)銷(xiāo)少、成本低廉、軟件設(shè)計(jì)簡(jiǎn)單優(yōu)勢(shì)而有著無(wú)可比擬的應(yīng)用前景。基于單總線(xiàn)的iButton技術(shù)能較好地解決傳統(tǒng)識(shí)別器普遍存在的攜帶不便、易損壞、易受腐饋、易受電磁干擾等不足,可應(yīng)用于高度安全的門(mén)禁、身份識(shí)別等領(lǐng)域。其通信可靠簡(jiǎn)單,很容易實(shí)現(xiàn)。因此單總線(xiàn)技術(shù)有著廣闊的應(yīng)用前景,是值得產(chǎn)注的一個(gè)發(fā)展領(lǐng)域。
評(píng)論