多功能USB組合設(shè)備的結(jié)構(gòu)設(shè)計(jì)
摘要:針對(duì)鼠標(biāo)和鍵盤(pán)等人機(jī)接口設(shè)備存在功能單一的缺點(diǎn),不能完全滿(mǎn)足現(xiàn)代社會(huì)的需求,提出了一種多功能USB設(shè)備的設(shè)計(jì)方法。多功能USB設(shè)備是一種復(fù)雜的USB設(shè)備,它雖然只有一個(gè)USB接口,但卻具有實(shí)現(xiàn)多種類(lèi)型設(shè)備的功能。以USB多媒體鍵盤(pán)編碼器HT82K95E為核心,完成了兩種人機(jī)接口設(shè)備的枚舉過(guò)程。還對(duì)USB復(fù)合設(shè)備和USB組合設(shè)備兩種基本設(shè)計(jì)方法進(jìn)行了比較,并對(duì)USB組合設(shè)備的實(shí)現(xiàn)進(jìn)行了詳細(xì)的介紹。
關(guān)鍵詞:人機(jī)接口設(shè)備;HT82K95E;復(fù)合設(shè)備;組合設(shè)備
引言
隨著USB通信技術(shù)的不斷發(fā)展,USB接口得到了廣泛的應(yīng)用。單一功能的USB設(shè)備,如USB鍵盤(pán)、USB鼠標(biāo)、USB調(diào)制解調(diào)器等,已經(jīng)不能滿(mǎn)足人們對(duì)USB設(shè)備功能的要求。多功能的USB設(shè)備正不斷涌現(xiàn)出來(lái),常見(jiàn)的有帶話筒的USB攝像頭、USB可視電話等。因此,研究多功能USB設(shè)備對(duì)于滿(mǎn)足人們對(duì)新型USB設(shè)備的需求是十分必要的。
1 多功能USB設(shè)備的結(jié)構(gòu)模型
多功能USB設(shè)備通常是通過(guò)單個(gè)或多個(gè)USB控制器連接不同類(lèi)型的設(shè)備來(lái)實(shí)現(xiàn)的。而在一個(gè)USB接口上實(shí)現(xiàn)多個(gè)設(shè)備有兩種方法:一種是復(fù)合設(shè)備(Compound Device),一種是組合設(shè)備(Composite Device)。圖1和圖2分別給出了復(fù)合設(shè)備和組合設(shè)備的結(jié)構(gòu)模型。
實(shí)際上,USB設(shè)備應(yīng)該被視為不同的功能。多個(gè)功能可以被封裝在一起形成一個(gè)物理設(shè)備。所以復(fù)合設(shè)備其實(shí)就是幾個(gè)設(shè)備通過(guò)一個(gè)USB Hub形成的單一設(shè)備,復(fù)合設(shè)備內(nèi)的Hub和與Hub相連的各個(gè)功能會(huì)分配各自的設(shè)備地址。組合設(shè)備也就是具有多個(gè)接口的設(shè)備,每個(gè)接口代表一個(gè)獨(dú)立的設(shè)備,但是組合設(shè)備只有一個(gè)設(shè)備地址。
采用復(fù)合設(shè)備方法開(kāi)發(fā)多功能USB設(shè)備時(shí),其開(kāi)發(fā)過(guò)程同開(kāi)發(fā)兩種不同類(lèi)型的USB設(shè)備相同,開(kāi)發(fā)難度較低。本文重點(diǎn)介紹組合設(shè)備的設(shè)計(jì)方法,并舉例加以實(shí)現(xiàn)。
2 組合設(shè)備的設(shè)計(jì)方法
2.1 組合設(shè)備的特點(diǎn)
USB組合設(shè)備是指具有多個(gè)接口且接口間相互獨(dú)立的USB設(shè)備。一個(gè)USB設(shè)備只有一個(gè)設(shè)備地址,可以將不同的功能與不同的接口對(duì)應(yīng),來(lái)開(kāi)發(fā)多功能USB設(shè)備。
組合設(shè)備采用一個(gè)USB控制芯片,同時(shí)接A設(shè)備和B設(shè)備。主機(jī)可以同時(shí)與A設(shè)備和B設(shè)備通信。
2.2 組合設(shè)備的描述符結(jié)構(gòu)
如圖3所示,以?xún)蓚€(gè)接口的組合設(shè)備為例,來(lái)說(shuō)明組合設(shè)備的描述符結(jié)構(gòu)。一個(gè)設(shè)備描述符下有一個(gè)配置描述符,一個(gè)配置描述符下可以有多個(gè)接口描述符,分別對(duì)應(yīng)不同的設(shè)備。每個(gè)接口描述符下又包含多個(gè)端點(diǎn)描述符。一個(gè)USB邏輯設(shè)備對(duì)USB系統(tǒng)來(lái)說(shuō)就是一個(gè)端點(diǎn)集合。端點(diǎn)可以根據(jù)它們實(shí)現(xiàn)的接口來(lái)分類(lèi)。所有的USB設(shè)備都需要實(shí)現(xiàn)一個(gè)缺省的控制方法。這種方法將端點(diǎn)0作為輸入端點(diǎn),同時(shí)也將端點(diǎn)0作為輸出端點(diǎn)。USB系統(tǒng)用這個(gè)缺省方法初始化及一般地使用邏輯設(shè)備(即設(shè)置此設(shè)備)。設(shè)備可以有除端點(diǎn)0以外的其他端點(diǎn),這取決于這些設(shè)備的實(shí)現(xiàn)。低速設(shè)備除端點(diǎn)0外,只能有2個(gè)額外的可選端點(diǎn)。而高速設(shè)備可具有的額外端點(diǎn)數(shù)僅受限于協(xié)議的定義。除缺省控制通道的缺省端點(diǎn)外,其他端點(diǎn)只有在設(shè)備被設(shè)置后才可使用。而且除端點(diǎn)0外,其他端點(diǎn)在不同接口間不能共享。
組合設(shè)備使用一個(gè)USB控制芯片,通過(guò)控制不同的接口與不同的設(shè)備進(jìn)行通信,解決了主機(jī)與組合設(shè)備內(nèi)各個(gè)設(shè)備數(shù)據(jù)流的區(qū)分問(wèn)題。
3 組合設(shè)備的硬件實(shí)現(xiàn)
3.1 USB接口部分
設(shè)備采用Holtek公司的8位USB多媒體鍵盤(pán)編碼器HT82K95E作為本系統(tǒng)的核心。鼠標(biāo)、鍵盤(pán)等HID類(lèi)設(shè)備為低速設(shè)備,所以該設(shè)備要能同時(shí)實(shí)現(xiàn)鼠標(biāo)和鍵盤(pán)數(shù)據(jù)同PC機(jī)的雙向傳輸,MCU首先必須具有低速的USB接口,并且支持3個(gè)端點(diǎn)(包括端點(diǎn)0)。綜合考慮,選用了HT82K95E作為本系統(tǒng)的主控芯片。由于鼠標(biāo)和鍵盤(pán)均屬于低速設(shè)備,所以應(yīng)在USB信號(hào)線上加1.5kΩ的上拉電阻。
3.2 MCU部分
USB接口部分原理圖如圖4所示。MCU的復(fù)位電路采用由R1和C1組成的RC積分電路來(lái)實(shí)現(xiàn)上電復(fù)位功能。上電瞬間,由于電容電壓不能突變,所以復(fù)位引腳為低電平,然后電容開(kāi)始緩慢充電,復(fù)位引腳電位開(kāi)始升高,最后變?yōu)楦唠娖?,完成芯片的上電?fù)位。HT82K95E微控制器內(nèi)部還包含一個(gè)低電壓復(fù)位電路(LVR)用于監(jiān)視設(shè)備的供電電壓。如果設(shè)備的供電電壓下降到0.9VLVR的范圍內(nèi)并且超過(guò)1 ms的時(shí)間。那么LVR就會(huì)自動(dòng)復(fù)位設(shè)備。
應(yīng)當(dāng)注意的是,對(duì)于該設(shè)備的復(fù)位電路,還應(yīng)加一個(gè)BAT54SW二極管,接法如圖4中D1所示。如果不加D1,設(shè)備在第一次使用時(shí)能夠正常復(fù)位,但在以后的使用中卻無(wú)法正常復(fù)位,原因是電容中的電荷無(wú)法釋放掉,而D1可以通過(guò)整個(gè)電路快速釋放掉電容中的電荷。
該組合設(shè)備采用HT82K95E USB控制芯片,通過(guò)對(duì)兩個(gè)接口的管理,實(shí)現(xiàn)了鼠標(biāo)和鍵盤(pán)的功能。
4 固件設(shè)計(jì)
USB固件程序是USB設(shè)備功能的核心。對(duì)于HID設(shè)備,其主要的功能設(shè)計(jì)都是在固件程序中進(jìn)行的。這里采用Holtek C語(yǔ)言進(jìn)行帶鍵盤(pán)的鼠標(biāo)組合設(shè)備的開(kāi)發(fā)。
HT82K95E芯片的ROM空間是按頁(yè)(page)來(lái)劃分的,1頁(yè)為256個(gè)字。這樣,整個(gè)ROM空間正好劃分為若干連續(xù)的頁(yè)。單片機(jī)ROM中的任何區(qū)域都可以用來(lái)查表。在這里只介紹Holtek C中的一種查表指令:TABRDL[m]。該指令用于查ROM中最后1頁(yè)的數(shù)據(jù)。HT82K95E具有表指針寄存器TB HP,在使用TABRDL指令時(shí),TBHP默認(rèn)為最后1頁(yè)的首址高位。通過(guò)查表,表格的低位字節(jié)送入[m],高位字節(jié)送入TBLH寄存器。
在固件設(shè)計(jì)中,將描述符存儲(chǔ)在ROM的最后1頁(yè),當(dāng)主機(jī)請(qǐng)求設(shè)備的各種描述符時(shí),通過(guò)TABRDL指令將描述符從最后1頁(yè)取出,并傳送給主機(jī),完成設(shè)備的枚舉過(guò)程。該組合設(shè)備的描述符在下面給出。
ASM_CONFIG_LEN為配置描述符的大小,其值為配置描述符、接口描述符、HID描述符和端點(diǎn)描述符的大小的總和。ASM_ENTlTY_LEN_0為鼠標(biāo)報(bào)告描述符的大小,ASM_ENTITY_LEN_1為鍵盤(pán)報(bào)告描述符的大小。描述符中其他各項(xiàng)的意義在本文中不作詳細(xì)解釋?zhuān)ㄟ^(guò)使用周立功公司的USB分析儀USBAnalyser,可分析出該組合設(shè)備的枚舉過(guò)程流程,如圖5所示。
結(jié)語(yǔ)
本文簡(jiǎn)要分析了多功能USB設(shè)備兩種結(jié)構(gòu)模型的不同,重點(diǎn)介紹了組合設(shè)備的設(shè)計(jì)方法?;谠撛O(shè)計(jì)方法,采用Holtek的8位單片機(jī)HT82 K95E芯片設(shè)計(jì)了一款鼠標(biāo)鍵盤(pán)組合設(shè)備。在開(kāi)發(fā)此組合設(shè)備的過(guò)程中,可以分別調(diào)試兩個(gè)接口,如果每個(gè)接口都可正確運(yùn)行,接著就可編寫(xiě)兩個(gè)接口的描述符,實(shí)現(xiàn)組合設(shè)備的功能。組合設(shè)備對(duì)USB控制器可提供的端點(diǎn)數(shù)量和這些端點(diǎn)所支持的傳輸類(lèi)型有所限制。USB控制器需較好的支持設(shè)備A和設(shè)備B間的傳輸協(xié)議。目前,不少芯片廠商也逐漸提供了組合設(shè)備的芯片方案。