開發(fā)過程。采用此方法開發(fā)多功能USB設(shè)備時,其開發(fā)過程同開發(fā)兩種不同類型的USB設(shè)備A和B相同。
芯片選型。選擇USB控制器A和B時,可分開考慮,芯片選型比較容易,編程調(diào)試也可分開進(jìn)行。
驅(qū)動程序。如USB主機與USB控制器間的通信遵循USB標(biāo)準(zhǔn)的設(shè)備類規(guī)范的要求,Windows和Linux等常用操作系統(tǒng)可自動加載驅(qū)動程序。
總體來講,采用復(fù)合設(shè)備方法開發(fā)多功能USB設(shè)備難度較低。
6.2 組合設(shè)備設(shè)計方法
6.2.1 組合設(shè)備方法的特點
USB組合設(shè)備(composite device)是指具有多個接口且接口間相互獨立的USB設(shè)備。一個USB組合設(shè)備只有一個設(shè)備地址?梢詫⒉煌墓δ芘c不同的接口對應(yīng),來開發(fā)多功能USB設(shè)備。
組合設(shè)備采用一個USB控制芯片,同時接A和B設(shè)備(或芯片)。主機可同時與A和B芯片通信。組合設(shè)備結(jié)構(gòu)模型(數(shù)據(jù)流)如圖5所示。
6.2.2 組合設(shè)備的描述符結(jié)構(gòu)
以兩接口的組合設(shè)備為例,如圖6所示,來說明組合設(shè)備的描述符結(jié)構(gòu):一個設(shè)備描述符下有一個配置描述符;一個配置描述符下有兩個接口描述符;每個接口描述符下有多個端點描述符;在接口描述符中設(shè)置子設(shè)備類型;除兩個0端點(包括輸入in和輸出out)外,其它的端點在不同接口間不能共享。
在每個接口描述符中,可以定義相應(yīng)的子類代碼。如接口描述符中子類代碼是USB標(biāo)準(zhǔn)的設(shè)備類代碼,則USB主機與USB控制器這個接口的通信(實際上是與這個接口中的端點通信)應(yīng)按照相應(yīng)的USB設(shè)備類規(guī)范進(jìn)行;如果是用戶自定義的設(shè)備類代碼,則USB主機與USB控制器這個接口的通信按照用戶自定義的協(xié)議進(jìn)行。
組合設(shè)備雖然只采用一個USB控制芯片,但通過控制不同的接口(實際上是接口內(nèi)的端點)與不同的設(shè)備通信,也很好地解決了兩個數(shù)據(jù)流(USB主機與設(shè)備A的數(shù)據(jù)流和USB主機與設(shè)備B的數(shù)據(jù)流)在一個USB控制器上的區(qū)分問題。
6.2.3 組合設(shè)備方法可實現(xiàn)性的分析
。1)芯片選型。采用組合設(shè)備方法需要選擇合適的USB控制器。對選擇USB控制器的限制主要有:USB控制器可提供的端點數(shù)量和這些端點支持的傳輸類型;USB控制器需較好地支持與設(shè)備A和B間的傳輸協(xié)議。
。2)開發(fā)過程。采用組合設(shè)備方法開發(fā)多功能USB設(shè)備時,可以先分開調(diào)試兩個接口;一旦每個接口都獨立運行正確,接著就可編寫有兩個接口的完整描述符(結(jié)構(gòu)如圖6所示);最后將兩段程序疊加在一起即可。
。3)驅(qū)動程序。如在接口描述符中使用標(biāo)準(zhǔn)的USB設(shè)備類,且每個子類的通信遵循USB標(biāo)準(zhǔn)的設(shè)備類規(guī)范的要求,Windows和Linux等常用操作系統(tǒng)可自動加載驅(qū)動程序。
總體來講,采用組合設(shè)備方法開發(fā)多功能USB設(shè)備需得到USB控制器的更多支持,難度較大一些。
7 結(jié)束語
一般來講,采用復(fù)合設(shè)備方法設(shè)計的多功能USB設(shè)備結(jié)構(gòu)比較清晰,選擇USB控制器的范圍很大,相應(yīng)獲得的技術(shù)支持更好一些。但選擇USB控制器較多,花費有可能比采用組合設(shè)備方法設(shè)計多一些,F(xiàn)在的不少芯片廠商也逐漸提供組合設(shè)備的芯片方案,如可驅(qū)動帶話筒的攝像頭的USB控制器。在選擇何種方法設(shè)計多功能USB設(shè)備時,關(guān)鍵在于USB控制器的芯片選型,這樣才能使今后的開發(fā)工作簡單起來。
參考文獻(xiàn)
2 許永和編著,健蓮科技改編.USB外圍設(shè)備設(shè)計與應(yīng)用.北京:中國電力出版社,2002





