摘 要 在USB2.0规范的基础上,分析了USB描述符结构,提出了多功能USB设备的结构模型,总结出设计多功能USB设备结构的两种基本方法。——可——编——程——控-制-器-技——术——门——户
关键词:通用串行总线,复合设备,组合设备,多功能
P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
1 引 言WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
作为计算机的外部设备接口,USB接口已得到广泛应用。多功能USB设备是一种复杂的USB设备,它虽然只有一个USB接口,但是却具有实现多种类型设备的功能。具有多功能USB的设备被逐渐地应用起来,常见的设备有带鼠标的USB键盘、带话筒的USB摄像头等。因此,研究多功能USB设备的结构设计十分必要。WW.W_PLCJS_COM-PLC-技.术_网
2002年4月27日,康柏、惠普、英特尔、朗讯、微软、NEC和菲利浦等数家公司联合修订了《UniversalSerial Bus Specification Revision 2.0》(这里简称USB2.0规范),本文的研究就是在这个规范的基础上进行的。P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
2 USB设备的设计原则WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
在USB系统中,USB主机(host)扮演主控(master)角色。除了设备的远程唤醒(remote wakeup)功能外,USB设备不会是事件的发起者,设备做到的只是响应主机的请求。图1所示是USB通信的请求响应模型。
USB采用这种以主机为中心的模型的原因是节省花费。通信中应尽量将主机端智能化一些,使设备端简单一些,这样,才能降低计算机外围设备的花费。因此,在设计USB设备,特别是设计多功能USB设备时,应使USB设备端处理通信时尽量简单。——可——编——程——控-制-器-技——术——门——户
3 USB规范中的几种重要描述符WWW_PLC※JS_COM-PmLC-技.术_网
在列举过程(enumeration process)中,主机使用控制传输方式从设备请求描述符。描述符包含了设备的基本信息。主要的描述符有:设备描述符(devicedescriptor)、配置描述符(configuration descriptor)、接口描述符(interface descriptor)以及端点描述符(endpoint descriptor)。P.L.C.技.术.网——可编程控制器技术门户
一个USB设备对应一个设备描述符。一个USB设备可以有一个或多个配置,但在一个时刻内,只有一个配置是有效的(one ata time)。每个配置有一个或多个接口,只要配置有效,其所有的接口都是有效的(concurrently active)。每个接口可有多个端点,一个端点(除端点0外)不可以在一个配置下的多个接口间共享,但可以在不同配置下的接口间共享。端点是一个USB设备的一个唯一的可寻址部分,用来作为主机和设备之间通信流的信息源或接收器。接口是端点的集合,是设备实现某种功能的最小载体。它们之间的结构见图2。图2所示是USB描述符树。
4 多功能USB设备的结构模型P.L.C.技.术.网——可编程控制器技术门户
多功能USB设备通常是通过单个或多个USB控制器(USBcontroller)连接不同类型的设备来实现的。当然,将不同类型的设备功能集成到USB控制器中去,来实现多功能USB设备也是可以的,因为USB规范讨论的是USB主机与USB控制器(或者集线器)之间的通信协议,不涉及USB控制器与不同类型设备(或芯片)的通信协议问题。因为用两个设备实现多功能的USB设备与用多个设备来实现多功能的USB设备的原理相同,所以,本文以两个设备为例来说明多功能的USB设备的设计方法和结构模型。因此,可以把多功能的USB设备抽象成如图3的结构(不同类型设备用A和B类设备表示)。WWW_PLCJS_COM-PLC-技.术_网
5 多功能USB设备的设计需要解决两个主要问题W1WW_P4LCJS_COM-PLC-技.术_网
多功能设备结构模型(数据流)图如图3所示,多功能USB设备的设计需要解决两个主要问题:
首先需要确定USB主机与A设备和B设备如何通信的问题(多功能USB设备的外部通信问题)。包含的问题有:设计是采用单个USB控制器还是多个USB控制器,其整体的结构应如何设计;(2)是否采用USB的标准设备类(涉及USB设备的驱动能否被操作系统自动加载的问题)。P.L.C.技.术.网——可编程控制器技术门户
其次要解决USB控制器如何处理USB主机与A设备和B设备间的通信问题(多功能USB设备的内部通信问题)。包含的问题有:如何实现USB主机和A设备间的数据流与USB主机和B设备间的数据流区分问题;选用何种控制器芯片能最大限度地支持与A设备之间接口的连接和B设备之间接口的连接。WWcW_PLCJS_COM-PLC-技.术_网
6 USB结构设计思路WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
总体说来,USB设备有两种基本的设计方法:采用USB复合设备(compound device)的方法和采用USB组合设备(composite device)的方法。WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
6.1 复合设备设计方法WWW_P※LCJS_COM-PLC-)技.术_网
6.1.1 复合设备方法的特点WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
复合设备方法是采用三个USB控制器芯片,其中一个为USB集线器芯片,另外是连接设备A的USB控制器芯片和连接设备B的USB控制器芯片。该方法的实质是将两种功能独立的USB设备通过内部的USB集线器封装在一起成为USB多功能设备。复合设备中的每一个USB设备模块和内部的USB集线器都有自己独立的设备地址。复合设备在内部采用多个USB控制器的方法,简单地解决了多功能USB设备与USB主机通信时内部数据流(USB主机与设备A的数据流和USB主机与设备B的数据流)的区分问题。该方法结构清晰,复合设备结构模型(数据流)如图4所示。WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
复合设备结构中,USB控制器A和B的设备描述符中定义了各自的设备类代码。如设备类代码是USB标准的设备类代码,USB主机与USB控制器A或B的通信按照相应的USB设备类规范进行。如果是用户自定义的设备类代码,则USB主机与USB控制器A或B的通信按照用户自定义的协议进行。
6.1.2 复合设备方法可实现性的分析WWW_PLCJS_COM-PLC-技.术_网
开发过程。采用此方法开发多功能USB设备时,其开发过程同开发两种不同类型的USB设备A和B相同。WW.W_PLCJS_COM-PLC-技.术_网
芯片选型。选择USB控制器A和B时,可分开考虑,芯片选型比较容易,编程调试也可分开进行。P.L.C.技.术.网——可编程控制器技术门户
驱动程序。如USB主机与USB控制器间的通信遵循USB标准的设备类规范的要求,Windows和Linux等常用操作系统可自动加载驱动程序。WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
总体来讲,采用复合设备方法开发多功能USB设备难度较低。WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
6.2 组合设备设计方法WWW.PLCJS.COM——可编程控制器技术门户
6.2.1 组合设备方法的特点——可——编——程——控-制-器-技——术——门——户
USB组合设备(composite device)是指具有多个接口且接口间相互独立的USB设备。一个USB组合设备只有一个设备地址。可以将不同的功能与不同的接口对应,来开发多功能USB设备。WWW_P※LCJS_COM-PLC-)技.术_网
组合设备采用一个USB控制芯片,同时接A和B设备(或芯片)。主机可同时与A和B芯片通信。组合设备结构模型(数据流)如图5所示。
6.2.2 组合设备的描述符结构P.L.C.技.术.网——可编程控制器技术门户
以两接口的组合设备为例,如图6所示,来说明组合设备的描述符结构:一个设备描述符下有一个配置描述符;一个配置描述符下有两个接口描述符;每个接口描述符下有多个端点描述符;在接口描述符中设置子设备类型;除两个0端点(包括输入in和输出out)外,其它的端点在不同接口间不能共享。WWcW_PLCJS_COM-PLC-技.术_网
在每个接口描述符中,可以定义相应的子类代码。如接口描述符中子类代码是USB标准的设备类代码,则USB主机与USB控制器这个接口的通信(实际上是与这个接口中的端点通信)应按照相应的USB设备类规范进行;如果是用户自定义的设备类代码,则USB主机与USB控制器这个接口的通信按照用户自定义的协议进行。
组合设备虽然只采用一个USB控制芯片,但通过控制不同的接口(实际上是接口内的端点)与不同的设备通信,也很好地解决了两个数据流(USB主机与设备A的数据流和USB主机与设备B的数据流)在一个USB控制器上的区分问题。WWW_P※LCJS_COM-PLC-)技.术_网
6.2.3 组合设备方法可实现性的分析W1WW_P4LCJS_COM-PLC-技.术_网
(1)芯片选型。采用组合设备方法需要选择合适的USB控制器。对选择USB控制器的限制主要有:USB控制器可提供的端点数量和这些端点支持的传输类型;USB控制器需较好地支持与设备A和B间的传输协议。WWW_PLCJS_COM-PLC-技.术_网
(2)开发过程。采用组合设备方法开发多功能USB设备时,可以先分开调试两个接口;一旦每个接口都独立运行正确,接着就可编写有两个接口的完整描述符(结构如图6所示);最后将两段程序叠加在一起即可。WWW_P※LCJS_CO※M-PLC-技-.术_网
(3)驱动程序。如在接口描述符中使用标准的USB设备类,且每个子类的通信遵循USB标准的设备类规范的要求,Windows和Linux等常用操作系统可自动加载驱动程序。plcjs.技.术_网
总体来讲,采用组合设备方法开发多功能USB设备需得到USB控制器的更多支持,难度较大一些。W1WW_P4LCJS_COM-PLC-技.术_网
7 结束语W1WW_P4LCJS_COM-PLC-技.术_网
一般来讲,采用复合设备方法设计的多功能USB设备结构比较清晰,选择USB控制器的范围很大,相应获得的技术支持更好一些。但选择USB控制器较多,花费有可能比采用组合设备方法设计多一些。现在的不少芯片厂商也逐渐提供组合设备的芯片方案,如可驱动带话筒的摄像头的USB控制器。在选择何种方法设计多功能USB设备时,关键在于USB控制器的芯片选型,这样才能使今后的开发工作简单起来。
参考文献
1 〔美〕Jan Axelson著.USB大全.陈 逸,等译.北京:中国电力出版社,2001WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
2 许永和编著,健莲科技改编.USB外围设备设计与应用.北京:中国电力出版社,2002