多功能USB組合設(shè)備的結(jié)構(gòu)設(shè)計
4 固件設(shè)計
USB固件程序是USB設(shè)備功能的核心。對于HID設(shè)備,其主要的功能設(shè)計都是在固件程序中進(jìn)行的。這里采用Holtek C語言進(jìn)行帶鍵盤的鼠標(biāo)組合設(shè)備的開發(fā)。
HT82K95E芯片的ROM空間是按頁(page)來劃分的,1頁為256個字。這樣,整個ROM空間正好劃分為若干連續(xù)的頁。單片機(jī)ROM中的任何區(qū)域都可以用來查表。在這里只介紹Holtek C中的一種查表指令:TABRDL[m]。該指令用于查ROM中最后1頁的數(shù)據(jù)。HT82K95E具有表指針寄存器TB HP,在使用TABRDL指令時,TBHP默認(rèn)為最后1頁的首址高位。通過查表,表格的低位字節(jié)送入[m],高位字節(jié)送入TBLH寄存器。
在固件設(shè)計中,將描述符存儲在ROM的最后1頁,當(dāng)主機(jī)請求設(shè)備的各種描述符時,通過TABRDL指令將描述符從最后1頁取出,并傳送給主機(jī),完成設(shè)備的枚舉過程。該組合設(shè)備的描述符在下面給出。


ASM_CONFIG_LEN為配置描述符的大小,其值為配置描述符、接口描述符、HID描述符和端點描述符的大小的總和。ASM_ENTlTY_LEN_0為鼠標(biāo)報告描述符的大小,ASM_ENTITY_LEN_1為鍵盤報告描述符的大小。描述符中其他各項的意義在本文中不作詳細(xì)解釋,通過使用周立功公司的USB分析儀USBAnalyser,可分析出該組合設(shè)備的枚舉過程流程,如圖5所示。本文引用地址:http://www.biyoush.com/article/161413.htm
結(jié)語
本文簡要分析了多功能USB設(shè)備兩種結(jié)構(gòu)模型的不同,重點介紹了組合設(shè)備的設(shè)計方法?;谠撛O(shè)計方法,采用Holtek的8位單片機(jī)HT82 K95E芯片設(shè)計了一款鼠標(biāo)鍵盤組合設(shè)備。在開發(fā)此組合設(shè)備的過程中,可以分別調(diào)試兩個接口,如果每個接口都可正確運行,接著就可編寫兩個接口的描述符,實現(xiàn)組合設(shè)備的功能。組合設(shè)備對USB控制器可提供的端點數(shù)量和這些端點所支持的傳輸類型有所限制。USB控制器需較好的支持設(shè)備A和設(shè)備B間的傳輸協(xié)議。目前,不少芯片廠商也逐漸提供了組合設(shè)備的芯片方案。
評論