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