多功能USB組合設(shè)備的結(jié)構(gòu)設(shè)計(jì)
4 固件設(shè)計(jì)
USB固件程序是USB設(shè)備功能的核心。對(duì)于HID設(shè)備,其主要的功能設(shè)計(jì)都是在固件程序中進(jìn)行的。這里采用Holtek C語(yǔ)言進(jì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為鍵盤報(bào)告描述符的大小。描述符中其他各項(xiàng)的意義在本文中不作詳細(xì)解釋,通過(guò)使用周立功公司的USB分析儀USBAnalyser,可分析出該組合設(shè)備的枚舉過(guò)程流程,如圖5所示。本文引用地址:http://www.bjwjmy.cn/article/161413.htm
結(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)鍵盤組合設(shè)備。在開(kāi)發(fā)此組合設(shè)備的過(guò)程中,可以分別調(diào)試兩個(gè)接口,如果每個(gè)接口都可正確運(yùn)行,接著就可編寫兩個(gè)接口的描述符,實(shí)現(xiàn)組合設(shè)備的功能。組合設(shè)備對(duì)USB控制器可提供的端點(diǎn)數(shù)量和這些端點(diǎn)所支持的傳輸類型有所限制。USB控制器需較好的支持設(shè)備A和設(shè)備B間的傳輸協(xié)議。目前,不少芯片廠商也逐漸提供了組合設(shè)備的芯片方案。
評(píng)論