張秀娟,梁波
(山東科技大學,青島266510)
張秀娟(教授)、梁波(碩士研究生),研究方向為計算機應用技術、嵌入式系統(tǒng)及應用。
隨著USB通信技術的不斷發(fā)展,USB接口得到了廣泛的應用。單一功能的USB設備,如USB鍵盤、USB鼠標、USB調制解調器等,已經不能滿足人們對USB設備功能的要求。多功能的USB設備正不斷涌現(xiàn)出來,常見的有帶話筒的USB攝像頭、USB可視電話等[1]。因此,研究多功能USB設備對于滿足人們對新型USB設備的需求是十分必要的。
多功能USB設備通常是通過單個或多個 USB控制器連接不同類型的設備來實現(xiàn)的。而在一個USB接口上實現(xiàn)多個設備有兩種方法:一種是復合設備(Compound Device),一種是組合設備(Composite Device)[2]。圖1和圖2分別給出了復合設備和組合設備的結構模型。
實際上,USB設備應該被視為不同的功能。多個功能可以被封裝在一起形成一個物理設備。所以復合設備其實就是幾個設備通過一個USB Hub形成的單一設備,復合設備內的Hub和與Hub相連的各個功能會分配各自的設備地址。組合設備也就是具有多個接口的設備,每個接口代表一個獨立的設備,但是組合設備只有一個設備地址[3]。
圖1 復合設備結構模型
圖2 組合設備結構模型
采用復合設備方法開發(fā)多功能 USB設備時,其開發(fā)過程同開發(fā)兩種不同類型的 USB設備相同,開發(fā)難度較低。本文重點介紹組合設備的設計方法,并舉例加以實現(xiàn)。
USB組合設備是指具有多個接口且接口間相互獨立的USB設備。一個USB設備只有一個設備地址,可以將不同的功能與不同的接口對應,來開發(fā)多功能USB設備。
組合設備采用一個USB控制芯片,同時接A設備和B設備。主機可以同時與A設備和B設備通信。
如圖3所示,以兩個接口的組合設備為例,來說明組合設備的描述符結構。一個設備描述符下有一個配置描述符,一個配置描述符下可以有多個接口描述符,分別對應不同的設備。每個接口描述符下又包含多個端點描述符。一個USB邏輯設備對USB系統(tǒng)來說就是一個端點集合。端點可以根據(jù)它們實現(xiàn)的接口來分類。所有的USB設備都需要實現(xiàn)一個缺省的控制方法。這種方法將端點0作為輸入端點,同時也將端點0作為輸出端點。USB系統(tǒng)用這個缺省方法初始化及一般地使用邏輯設備(即設置此設備)。設備可以有除端點0以外的其他端點,這取決于這些設備的實現(xiàn)。低速設備除端點0外,只能有2個額外的可選端點。而高速設備可具有的額外端點數(shù)僅受限于協(xié)議的定義。除缺省控制通道的缺省端點外,其他端點只有在設備被設置后才可使用。而且除端點0外,其他端點在不同接口間不能共享[4]。
組合設備使用一個USB控制芯片,通過控制不同的接口與不同的設備進行通信,解決了主機與組合設備內各個設備數(shù)據(jù)流的區(qū)分問題。
圖3 組合設備描述符結構
設備采用Holtek公司的8位USB多媒體鍵盤編碼器HT82K95E作為本系統(tǒng)的核心。鼠標、鍵盤等 HID類設備為低速設備,所以該設備要能同時實現(xiàn)鼠標和鍵盤數(shù)據(jù)同PC機的雙向傳輸,MCU首先必須具有低速的USB接口,并且支持3個端點(包括端點0)[5]。綜合考慮,選用了HT82K95E作為本系統(tǒng)的主控芯片。由于鼠標和鍵盤均屬于低速設備,所以應在USB信號線上加1.5 kΩ的上拉電阻[4]。
USB接口部分原理圖如圖4所示。MCU的復位電路采用由R1和C1組成的RC積分電路來實現(xiàn)上電復位功能。上電瞬間,由于電容電壓不能突變,所以復位引腳為低電平,然后電容開始緩慢充電,復位引腳電位開始升高,最后變?yōu)楦唠娖?完成芯片的上電復位。HT82K95E微控制器內部還包含一個低電壓復位電路(LVR)用于監(jiān)視設備的供電電壓。如果設備的供電電壓下降到0.9VLVR的范圍內并且超過1 ms的時間,那么LVR就會自動復位設備[6]。
應當注意的是,對于該設備的復位電路,還應加一個BAT54SW二極管,接法如圖4中D1所示。如果不加D1,設備在第一次使用時能夠正常復位,但在以后的使用中卻無法正常復位,原因是電容中的電荷無法釋放掉,而D1可以通過整個電路快速釋放掉電容中的電荷[7]。
該組合設備采用HT82K95E USB控制芯片,通過對兩個接口的管理,實現(xiàn)了鼠標和鍵盤的功能。
USB固件程序是USB設備功能的核心。對于HID設備,其主要的功能設計都是在固件程序中進行的。這里采用Holtek C語言進行帶鍵盤的鼠標組合設備的開發(fā)。
HT82K95E芯片的 ROM空間是按頁(page)來劃分的,1頁為256個字。這樣,整個ROM空間正好劃分為若干連續(xù)的頁。單片機ROM中的任何區(qū)域都可以用來查表[5]。在這里只介紹 Holtek C中的一種查表指令:TABRDL[m]。該指令用于查ROM中最后1頁的數(shù)據(jù)。HT82K95E具有表指針寄存器 TBHP,在使用TABRDL指令時,TBHP默認為最后1頁的首址高位。通過查表,表格的低位字節(jié)送入[m],高位字節(jié)送入TBLH寄存器。
在固件設計中,將描述符存儲在ROM的最后1頁,當主機請求設備的各種描述符時,通過TABRDL指令將描述符從最后1頁取出,并傳送給主機,完成設備的枚舉過程。該組合設備的描述符在下面給出。
設備描述符:
配置描述符:
圖4 USB接口部分原理圖
接口0描述符:
接口1描述符:
ASM_CONFIG_LEN為配置描述符的大小,其值為配置描述符、接口描述符、HID描述符和端點描述符的大小的總和。ASM_ENTITY_LEN_0為鼠標報告描述符的大小,ASM_ENTITY_LEN_1為鍵盤報告描述符的大小[8]。描述符中其他各項的意義在本文中不作詳細解釋,通過使用周立功公司的 USB分析儀 USBAnalyser,可分析出該組合設備的枚舉過程流程,如圖5所示。
圖5 組合設備枚舉流程
本文簡要分析了多功能USB設備兩種結構模型的不同,重點介紹了組合設備的設計方法?;谠撛O計方法,采用Holtek的8位單片機HT82K95E芯片設計了一款鼠標鍵盤組合設備。在開發(fā)此組合設備的過程中,可以分別調試兩個接口,如果每個接口都可正確運行,接著就可編寫兩個接口的描述符,實現(xiàn)組合設備的功能。組合設備對USB控制器可提供的端點數(shù)量和這些端點所支持的傳輸類型有所限制。USB控制器需較好的支持設備A和設備B間的傳輸協(xié)議。目前,不少芯片廠商也逐漸提供了組合設備的芯片方案。
[1]徐星,劉克剛.一種新型的多功能鼠標的設計[J].電子技術,2004(12):53-55.
[2]張念淮,江浩.USB總線接口開發(fā)指南[M].北京:國防工業(yè)出版社,2001:15-206.
[3]薛園園.USB應用開發(fā)技術大全[M].北京:人民郵電出版社,2007:44-68.
[4]許永和.USB外圍設備設計與應用[M].北京:北京航空航天大學出版社,2002:30-217.
[5]盛群半導體有限公司.HT82K95E datasheet[EB/OL].[2009-09-15].http://www.holtek.com.cn.
[6]李齊雄,鄭顏雄,蔡孟昌.HOLTEK HT48系列單片機原理及應用實例[M].北京:北京航空航天大學出版社,2005:50-185.
[7]田廣錕,范如東.高速電路PCB設計與EMC技術分析[M].北京:電子工業(yè)出版社,2008:3-132.
[8]尹勇,王洪成.單片機開發(fā)環(huán)境μ Vision2使用指南及USB固件編程與調試[M].北京:北京航空航天大學出版社,2004:202-315.