4 固件设计
USB固件程序是USB设备功能的核心。对于HID设备,其主要的功能设计都是在固件程序中进行的。这里采用HoLTEk C语言进行带键盘的鼠标组合设备的开发。
HT82K95E芯片的ROM空间是按页(page)来划分的,1页为256个字。这样,整个ROM空间正好划分为若干连续的页。单片机ROM中的任何区域都可以用来查表。在这里只介绍Holtek C中的一种查表指令:TABRDL[m]。该指令用于查ROM中最后1页的数据。HT82K95E具有表指针寄存器TB HP,在使用TABRDL指令时,TBHP默认为最后1页的首址高位。通过查表,表格的低位字节送入[m],高位字节送入TBLH寄存器。
在固件设计中,将描述符存储在ROM的最后1页,当主机请求设备的各种描述符时,通过TABRDL指令将描述符从最后1页取出,并传送给主机,完成设备的枚举过程。该组合设备的描述符在下面给出。
ASM_CONFIG_LEN为配置描述符的大小,其值为配置描述符、接口描述符、HID描述符和端点描述符的大小的总和。ASM_ENTlTY_LEN_0为鼠标报告描述符的大小,ASM_ENTITY_LEN_1为键盘报告描述符的大小。描述符中其他各项的意义在本文中不作详细解释,通过使用周立功公司的USB分析仪USBAnalyser,可分析出该组合设备的枚举过程流程,如图5所示。
结语
本文简要分析了多功能USB设备两种结构模型的不同,重点介绍了组合设备的设计方法。基于该设计方法,采用Holtek的8位单片机HT82 K95E芯片设计了一款鼠标键盘组合设备。在开发此组合设备的过程中,可以分别调试两个接口,如果每个接口都可正确运行,接着就可编写两个接口的描述符,实现组合设备的功能。组合设备对USB控制器可提供的端点数量和这些端点所支持的传输类型有所限制。USB控制器需较好的支持设备A和设备B间的传输协议。目前,不少芯片厂商也逐渐提供了组合设备的芯片方案。
上一页 [1] [2] [3]