USB通信程序设计 第3页
第二章 USB总线结构
2.1 总线拓扑结
USB总线的物理连接是一种有层次性的星型结构,集线器(HUB)是每个星型结构的中心。PC机就是主机和根HUB,用户可以将外设或附加的HUB与之相连,这些附加的HUB可以连接另外的外设以及下层HUB。USB支持最多5个HUB层以及127个外设。从下图描述了总线的这种物理拓扑结构。
图2.1 USB总线拓扑结构
2.2 USB设备
USB设备包括HUB和功能设备,而功能设备又可以细分为定位设备、字符设备等等。为了进一步叙述,这里给出端点(endpoint)和管道(pipe)的概念。
端点:每一个USB设备在主机看来就是一个端点的集合,主机只能通过端点与设备进行通讯,以使用设备的功能。每一个端点实际上就是一个一定大小的数据缓冲区,这些端点在设备出厂时就已经定义好了。在USB系统中,每一个端点都有唯一的地址,这是由设备地址和端点号给出的。每个端点都有一定的特性。其中包括:传输方式、总线访问频率、带宽、端点号、数据包的最大容量等等。除端点0外,其它端点必须在设备配置后才能生效。
端点0通常为控制端点,用于设备初始化参数等,端点1、2等一般用作数据端点,存放主机与设备间往来的数据。
管道:一个USB管道是驱动程序的一个数据缓冲区与一个外设端点的连接,它代表了一种在两者之间移动数据的能力。一旦设备被配置,管道就存在了。管道由两种类型,数据流管道(其中的数据没有USB定义的结构)与消息管道(其中的数据必须由USB定义的结构)。管道只是一个逻辑上的概念。
所有的设备必须支持端点0以作为设备的控制管道。通过控制管道可以获取完全描述USB设备的信息,包括:设备类型、电源管理、配置、端点描述等等。只要设备连接到USB上并上电,端点0就可以被访问,与之对应的控制管道就存在了。
一个USB设备可以分为三个层。最底层是总线接口,用来发送与接收包。中间层处理总线接口与不同的端点之间的数据流通。一个端点是数据最终的使用者或提供者,它可以看作是数据源或是数据接收端。最上层就是USB设备所提供的功能,比如鼠标或键盘等。
图2.2 USB设备层次结构
2.2.1 USB HUB
HUB在USB结构中是一个关键,它提供了附加的USB节点,这些节点被称为端口。HUB可以检测出每一个下行端口的状态,并且可以给下端的设备提供电源。从下图描述了一个典型的HUB结构。
图2.3 USB HUB
2.2.2 即插即用
USB设备可以即插即用,但在可以使用之前,必须对设备进行配置。一旦设备连接到某个USB的节点上,USB就会产生一系列的操作,来完成对设备的配置,这种操作被称为总线枚举过程:
1. 设备所连接的HUB检测出端口上由设备连接,通过状态变化管道向主机报告;
2. 主机通过询问HUB以获得确切的信息;
3. 主机这时知道设备连接到那个端口上,于是向这个端口发出复位命令;
4. HUB发出的复位信号结束后,端口被打开,HUB向设备提供100mA的电源,这时设备上电,所有的寄存器复位,并且以缺省地址0以及端点0响应命令;
5. 主机通过缺省地址与端点0进行通讯,赋予设备一个唯一的地址,并且读取设备的配置信息;
6. 最后主机对设备进行配置,该设备就可以使用了。
当该设备被移走时,HUB依然要报告主机,并且关闭端口。一旦主机接收到设备移走的报告,就会改写当前结构信息。
2.2.3 设备电源
USB设备的电源可以由USB总线供给,也可以自备电源。一个USB设备可以具有这两种供电方式,但同一时刻只能由一种方式供电。这两种供电方式是可以切换的。
2.2.4 设备的挂起
为了节电,当设备在指定的时间内没有总线传输,USB设备自动进入挂起状态。如果设备所接的HUB的端口被禁止了,设备也将进入挂起状态(称之为选择挂起)。当然主机也可以进入挂起状态。
USB设备当总线活动时,就会离开挂起状态。一个设备也可以通过电信号来远程唤醒进入挂起状态的主机。这个能力是可选的,如果一个设备具有这个能力,主机有能力禁止或允许使用这种能力。
2.3 USB主机
USB主机在USB系统中处于中心地位,并且对USB及其连接的设备有着特殊的责任。主机控制着所有对USB的访问,一个外设只有主机允许才有访问总线的权利。主机同时也检测着USB的结构。
USB主机包括三层:设备驱动程序,USB系统软件,USB主控制器(主机的总线接口)。另外,还有两个软件接口:USB驱动(USBD)接口,主机控制驱动(HCD)接口。
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... 下一页 >>
USB通信程序设计 第3页下载如图片无法显示或论文不完整,请联系qq752018766