多功能USB组合设备的结构设计
2011-06-22张秀娟梁波
张秀娟,梁波
(山东科技大学,青岛266510)
张秀娟(教授)、梁波(硕士研究生),研究方向为计算机应用技术、嵌入式系统及应用。
引 言
随着USB通信技术的不断发展,USB接口得到了广泛的应用。单一功能的USB设备,如USB键盘、USB鼠标、USB调制解调器等,已经不能满足人们对USB设备功能的要求。多功能的USB设备正不断涌现出来,常见的有带话筒的USB摄像头、USB可视电话等[1]。因此,研究多功能USB设备对于满足人们对新型USB设备的需求是十分必要的。
1 多功能USB设备的结构模型
多功能USB设备通常是通过单个或多个 USB控制器连接不同类型的设备来实现的。而在一个USB接口上实现多个设备有两种方法:一种是复合设备(Compound Device),一种是组合设备(Composite Device)[2]。图1和图2分别给出了复合设备和组合设备的结构模型。
实际上,USB设备应该被视为不同的功能。多个功能可以被封装在一起形成一个物理设备。所以复合设备其实就是几个设备通过一个USB Hub形成的单一设备,复合设备内的Hub和与Hub相连的各个功能会分配各自的设备地址。组合设备也就是具有多个接口的设备,每个接口代表一个独立的设备,但是组合设备只有一个设备地址[3]。
图1 复合设备结构模型
图2 组合设备结构模型
采用复合设备方法开发多功能 USB设备时,其开发过程同开发两种不同类型的 USB设备相同,开发难度较低。本文重点介绍组合设备的设计方法,并举例加以实现。
2 组合设备的设计方法
2.1 组合设备的特点
USB组合设备是指具有多个接口且接口间相互独立的USB设备。一个USB设备只有一个设备地址,可以将不同的功能与不同的接口对应,来开发多功能USB设备。
组合设备采用一个USB控制芯片,同时接A设备和B设备。主机可以同时与A设备和B设备通信。
2.2 组合设备的描述符结构
如图3所示,以两个接口的组合设备为例,来说明组合设备的描述符结构。一个设备描述符下有一个配置描述符,一个配置描述符下可以有多个接口描述符,分别对应不同的设备。每个接口描述符下又包含多个端点描述符。一个USB逻辑设备对USB系统来说就是一个端点集合。端点可以根据它们实现的接口来分类。所有的USB设备都需要实现一个缺省的控制方法。这种方法将端点0作为输入端点,同时也将端点0作为输出端点。USB系统用这个缺省方法初始化及一般地使用逻辑设备(即设置此设备)。设备可以有除端点0以外的其他端点,这取决于这些设备的实现。低速设备除端点0外,只能有2个额外的可选端点。而高速设备可具有的额外端点数仅受限于协议的定义。除缺省控制通道的缺省端点外,其他端点只有在设备被设置后才可使用。而且除端点0外,其他端点在不同接口间不能共享[4]。
组合设备使用一个USB控制芯片,通过控制不同的接口与不同的设备进行通信,解决了主机与组合设备内各个设备数据流的区分问题。
图3 组合设备描述符结构
3 组合设备的硬件实现
3.1 USB接口部分
设备采用Holtek公司的8位USB多媒体键盘编码器HT82K95E作为本系统的核心。鼠标、键盘等 HID类设备为低速设备,所以该设备要能同时实现鼠标和键盘数据同PC机的双向传输,MCU首先必须具有低速的USB接口,并且支持3个端点(包括端点0)[5]。综合考虑,选用了HT82K95E作为本系统的主控芯片。由于鼠标和键盘均属于低速设备,所以应在USB信号线上加1.5 kΩ的上拉电阻[4]。
3.2 MCU部分
USB接口部分原理图如图4所示。MCU的复位电路采用由R1和C1组成的RC积分电路来实现上电复位功能。上电瞬间,由于电容电压不能突变,所以复位引脚为低电平,然后电容开始缓慢充电,复位引脚电位开始升高,最后变为高电平,完成芯片的上电复位。HT82K95E微控制器内部还包含一个低电压复位电路(LVR)用于监视设备的供电电压。如果设备的供电电压下降到0.9VLVR的范围内并且超过1 ms的时间,那么LVR就会自动复位设备[6]。
应当注意的是,对于该设备的复位电路,还应加一个BAT54SW二极管,接法如图4中D1所示。如果不加D1,设备在第一次使用时能够正常复位,但在以后的使用中却无法正常复位,原因是电容中的电荷无法释放掉,而D1可以通过整个电路快速释放掉电容中的电荷[7]。
该组合设备采用HT82K95E USB控制芯片,通过对两个接口的管理,实现了鼠标和键盘的功能。
4 固件设计
USB固件程序是USB设备功能的核心。对于HID设备,其主要的功能设计都是在固件程序中进行的。这里采用Holtek C语言进行带键盘的鼠标组合设备的开发。
HT82K95E芯片的 ROM空间是按页(page)来划分的,1页为256个字。这样,整个ROM空间正好划分为若干连续的页。单片机ROM中的任何区域都可以用来查表[5]。在这里只介绍 Holtek C中的一种查表指令:TABRDL[m]。该指令用于查ROM中最后1页的数据。HT82K95E具有表指针寄存器 TBHP,在使用TABRDL指令时,TBHP默认为最后1页的首址高位。通过查表,表格的低位字节送入[m],高位字节送入TBLH寄存器。
在固件设计中,将描述符存储在ROM的最后1页,当主机请求设备的各种描述符时,通过TABRDL指令将描述符从最后1页取出,并传送给主机,完成设备的枚举过程。该组合设备的描述符在下面给出。
设备描述符:
配置描述符:
图4 USB接口部分原理图
接口0描述符:
接口1描述符:
ASM_CONFIG_LEN为配置描述符的大小,其值为配置描述符、接口描述符、HID描述符和端点描述符的大小的总和。ASM_ENTITY_LEN_0为鼠标报告描述符的大小,ASM_ENTITY_LEN_1为键盘报告描述符的大小[8]。描述符中其他各项的意义在本文中不作详细解释,通过使用周立功公司的 USB分析仪 USBAnalyser,可分析出该组合设备的枚举过程流程,如图5所示。
结 语
图5 组合设备枚举流程
本文简要分析了多功能USB设备两种结构模型的不同,重点介绍了组合设备的设计方法。基于该设计方法,采用Holtek的8位单片机HT82K95E芯片设计了一款鼠标键盘组合设备。在开发此组合设备的过程中,可以分别调试两个接口,如果每个接口都可正确运行,接着就可编写两个接口的描述符,实现组合设备的功能。组合设备对USB控制器可提供的端点数量和这些端点所支持的传输类型有所限制。USB控制器需较好的支持设备A和设备B间的传输协议。目前,不少芯片厂商也逐渐提供了组合设备的芯片方案。
[1]徐星,刘克刚.一种新型的多功能鼠标的设计[J].电子技术,2004(12):53-55.
[2]张念淮,江浩.USB总线接口开发指南[M].北京:国防工业出版社,2001:15-206.
[3]薛园园.USB应用开发技术大全[M].北京:人民邮电出版社,2007:44-68.
[4]许永和.USB外围设备设计与应用[M].北京:北京航空航天大学出版社,2002:30-217.
[5]盛群半导体有限公司.HT82K95E datasheet[EB/OL].[2009-09-15].http://www.holtek.com.cn.
[6]李齐雄,郑颜雄,蔡孟昌.HOLTEK HT48系列单片机原理及应用实例[M].北京:北京航空航天大学出版社,2005:50-185.
[7]田广锟,范如东.高速电路PCB设计与EMC技术分析[M].北京:电子工业出版社,2008:3-132.
[8]尹勇,王洪成.单片机开发环境μ Vision2使用指南及USB固件编程与调试[M].北京:北京航空航天大学出版社,2004:202-315.