程麗玲
(浙江省檢驗檢疫科學技術研究院,浙江 杭州 310020)
通用異步接收發(fā)送器(universal asynchronous receiver/transmitter,UART)和通用串行總線(universal serial bus,USB)是用戶經(jīng)常使用的兩種通信接口。由于USB靈活的協(xié)議設置、接口擴展功能以及即插即用等優(yōu)點,目前在消費電子產(chǎn)品領域USB接口已經(jīng)逐步取代了UART接口。UART接口具有協(xié)議簡單、數(shù)據(jù)流穩(wěn)定可靠等優(yōu)點,在工業(yè)計算機、工業(yè)專用電子設備和測試設備領域仍占有一席之地。因此,在許多場合很多電子設備會同時設計成兼具UART和USB接口,并分別為這兩種接口配備各自獨立的應用協(xié)議軟件和各自獨立的內(nèi)存。這樣的設計存在內(nèi)存空間浪費,不能同時進行數(shù)據(jù)分析、傳輸和通信等問題,不利于數(shù)據(jù)的高效使用,在資源急缺的今天絕對不是一種好的選擇。
本文通過研究通用異步接收發(fā)送器(UART)接口和通用串行總線(USB)接口的通信格式和協(xié)議特點,提出一種支持UART和USB雙模通信的驅(qū)動軟件構架以及硬軟件設計方法,以解決雙通道共用中統(tǒng)一數(shù)據(jù)鏈路層和應用接口層等關鍵技術設計難題。
UART和USB雙模通信接口主要由硬件接口層、協(xié)議棧層和應用接口層組成,如圖1所示。
圖1 雙模接口架構Fig.1 Structure of the two mode interface
硬件接口層的主要功能是提供雙通道數(shù)據(jù)通信所需的物理接口和硬件電路,由USB和UART物理接口、USB接口芯片和接口電平轉(zhuǎn)換芯片組成。其中,USB物理接口負責對外連接主USB設備,UART物理接口提供對外部其他UART設備的連接通道;USB接口芯片負責USB協(xié)議的實現(xiàn)和相關的通信工作;接口電平轉(zhuǎn)換芯片負責RS-232電平和TTL電平的轉(zhuǎn)換。
協(xié)議棧層的主要功能是實現(xiàn)USB接口芯片和UART數(shù)據(jù)通路的驅(qū)動程序和協(xié)議。協(xié)議棧在實現(xiàn)過程中,并不是簡單地將USB和UART協(xié)議分別實現(xiàn),而是在數(shù)據(jù)鏈路上將UART和USB兩個數(shù)據(jù)通道有效融合,達到提高數(shù)據(jù)傳輸效率和節(jié)省內(nèi)存的目的。
接口軟件層的主要功能是提供用戶應用程序需要的接口函數(shù),使用戶應用程序可以方便地控制和調(diào)用協(xié)議棧層提供的各項功能,進而控制USB和UART兩個數(shù)據(jù)通路,并進行數(shù)據(jù)交互。
USB和UART兩種數(shù)據(jù)通道采用的協(xié)議和傳輸數(shù)據(jù)的速率不同,給數(shù)據(jù)鏈路層和應用接口層的統(tǒng)一帶來了很大的困難。
首先,USB協(xié)議[1]與UART協(xié)議在數(shù)據(jù)鏈路層和應用接口層體現(xiàn)出的具體功能函數(shù)存在較大差別。為了解決這個矛盾,我們可以先梳理USB協(xié)議和UART協(xié)議提供的各項數(shù)據(jù)傳輸功能和輔助功能,將相同功能和相似功能(例如數(shù)據(jù)發(fā)送和數(shù)據(jù)接收功能為兩個端口均具備的功能)加以整合保留;而對于兩個端口各自的特殊功能(例如USB端口的掛起和復位功能),則封裝為具有自動處理特性的功能子函數(shù),并利用TMS320VC5402DSP所特有的軟件中斷功能來統(tǒng)一處理。通過這一獨特設計,用戶無需關心這些特殊功能的實現(xiàn)和使用,當數(shù)據(jù)通信過程中發(fā)生該類動作時,數(shù)據(jù)鏈路層自動觸發(fā)內(nèi)部的軟件中斷,并調(diào)用對應的軟件中斷函數(shù),自動完成相應處置并實現(xiàn)對應功能。
其次,USB和UART的端口數(shù)據(jù)傳輸速率不同,對各種中斷事件響應的速度要求也存在很大差異。為了解決這個矛盾,在設計數(shù)據(jù)鏈路層時可增加一個通道狀態(tài)寄存器。該寄存器會跟隨數(shù)據(jù)鏈路傳輸數(shù)據(jù)過程動態(tài)更新。這不僅可以告知用戶數(shù)據(jù)通道處于何種狀態(tài),而且更重要的是數(shù)據(jù)鏈路層和應用接口層的各功能函數(shù)可以在需要的時候查詢該寄存器的狀態(tài),從而調(diào)用不同的時延函數(shù),進而使USB和UART兩個數(shù)據(jù)通道的傳輸速率和中斷響應時間達到平衡統(tǒng)一,而無需用戶的干預。
USB和UART雙模通信接口硬件部分主要由型號為 PDIUSBD12[2]的 USB 接口專用芯片、MAX3221 電平轉(zhuǎn)換芯片、TMS320VC5402[3]主控芯片等器件構成。
USB接口與UART接口的物理層存在很大差異,這兩類接口的電平定義與接口形式不同。因此,本設計在物理電路層采用各自獨立的信道來實現(xiàn),而在軟件層面實現(xiàn)協(xié)議的融合和交互處理。
本設計采用PDIUSBD12芯片來實現(xiàn)USB通路底層通信的數(shù)據(jù)鏈路級交互。該芯片提供一個并行接口同主處理器互聯(lián),最高數(shù)據(jù)吞吐速率可以達到2 Mbit/s。此外,該芯片內(nèi)部高度集成了USB通信所需的各種硬件資源,可以減小系統(tǒng)物料清單(bill of material,BOM)元件的數(shù)量,使設計簡化。
系統(tǒng)主控芯片采用TMS320VC5402。該芯片具有144 MHz的工作主頻,峰值運算速度可達288 MIPS,可以勝任高速數(shù)據(jù)吞吐的處理任務。TMS320VC5402具有豐富的外設接口,包括一個16位并行外部總線接口,可以方便地掛接 USB接口專用芯片。同時,TMS320VC5402具有豐富的I/O接口,配合內(nèi)部的程序資源,可以實現(xiàn)UART協(xié)議和控制接口。
UART接口通常采用兩種電平格式,即TTL電平和RS-232電平。因此,本設計采用MAX3221芯片負責將主處理器提供的UART信號由TTL電平轉(zhuǎn)換為RS-232電平。
硬件原理圖如圖2所示。
圖2 雙模接口硬件原理圖Fig.2 Principle of the two mode interface hardware
系統(tǒng)的軟件主要包括USB和UART驅(qū)動程序、數(shù)據(jù)鏈路處理程序和應用接口程序等。在此將重點介紹系統(tǒng)軟件的整體框架和實現(xiàn)方法,最后以實際應用為例介紹接口函數(shù)的使用[4]。
本系統(tǒng)的軟件部分主要由驅(qū)動程序、數(shù)據(jù)鏈路處理程序和接口程序組成,其框圖如圖3所示。
圖3 軟件系統(tǒng)組成圖Fig.3 Composition of software system
端口初始化子函數(shù)、發(fā)送數(shù)據(jù)包子函數(shù)是本設計軟件體系中的兩個關鍵函數(shù)[6-8]。
端口初始化子函數(shù)用于對端口進行初始化操作,只有對端口進行正確的初始化操作,才能使端口正常進入工作狀態(tài)。端口初始化子函數(shù)的功能主要包括清空數(shù)據(jù)接收緩沖區(qū)和發(fā)送緩沖區(qū)、復位USB和UART中斷標志、正確設置數(shù)據(jù)鏈路通道狀態(tài)、使能USB和UART端口等。
端口初始化子函數(shù)偽代碼實現(xiàn)如下。
發(fā)送數(shù)據(jù)包子函數(shù)用于向上位機發(fā)送一個完整的數(shù)據(jù)包。該子函數(shù)要按照指定通道向上位機發(fā)送指定數(shù)量的字節(jié)數(shù)據(jù)。在發(fā)送數(shù)據(jù)過程中,要正確設置數(shù)據(jù)鏈路的通道狀態(tài)并正確處理中斷狀態(tài)。
發(fā)送數(shù)據(jù)包子函數(shù)偽代碼實現(xiàn)如下。
傳統(tǒng)USB方案為USB接口和UART接口分別配備獨立的數(shù)據(jù)鏈路層和應用接口層功能,分別獨立滿足USB和UART兩個數(shù)據(jù)接口的需求。本設計方案則采用了統(tǒng)一的數(shù)據(jù)鏈路層和應用接口層設計,將UART通道和USB通道的數(shù)據(jù)鏈路級程序加以整合,有效解決了雙模通信中存在的內(nèi)存浪費、不能同時進行實時分析通信等方面的難題,為電器測量設備中雙模通信接口的使用提供了較好的設計思路[8]。
[1]庫依楠,楊玉森.基于DSP的USB2.0設備接口協(xié)議的實現(xiàn)[J].吉林大學學報:自然科學版,2005,35(2):170-173.
[2]于英民,于佳.計算機接口技術[M].2版.北京:電子工業(yè)出版社,2004:5-7.
[3]宋向榮,韓克敏.基于MCS單片機與PC機串行通信電平轉(zhuǎn)換[J].電子測量技術,2001(4):12-15.
[4]祖先鋒,潘孟春,韓旭,等.集UART與RS232于一體的MAX3110E原理及應用[J].國外電子元器件,2003(1):8-10.
[5]楊鳳彪,王超,張晨光.基于CH341A的USB串口通信設計[J].電子設計工程,2011(3):15-16.
[6]呂剛,李強.AVR單片機軟件模擬UART通信接口[J].單片機與嵌入式系統(tǒng)應用,2003(2):2-3.
[7]胡延平,李廣森.TMS320C54X軟件模擬實現(xiàn)UART技術[J].微處理機,2000(3):4-7.
[8]陳志強,張愛華,李并珊.TMS320 C54X DSP軟件實現(xiàn)UART技術[J].中原工學院學報,2007(3):50-53.