第二章 USB总线协议 USBUniversal Serial Bus总线协议是以Intel为主并有CompaqMicrosoftIBMDECNorthern Telecom以及日本NEC等共七家公司共同制定的串行接口标准1994年11月制定了第一个草案1996年2月公布了USB规范版本1.0USB可把多达127个外设同时联到你的系统上所有的外设通过协议来共享USB的带宽其12Mbps的带宽对于键盘鼠标等低中速外设是完全足够的注在1999年2月发布的USB规范版本2.0草案中已建议将12Mbps的带宽提升到120-240MbpsUSB允许外设在主机和其它外设工作时进行连接配置使用及移除即所谓的即插即用Plug & Play同时USB总线的应用可以清除PC上过多的I/O端口而以一个串行通道取代使PC与外设之间的连接更容易 2.1 总线拓扑结构 USB总线的物理连接是一种分层的菊花链结构集线器(hub)是每个星形结构的中心PC机就是主机和根Hub用户可以将外设或附加的Hub与之相连这些附加的Hub可以连接另外的外设以及下层HubUSB支持最多5个Hub层以及127个外设图2.1描述了USB的物理拓扑结构从中可以看出每一段的连接都是点对点的。 2.3 USB设备 USB设备包括Hub和功能设备而功能设备又可以细分为定位设备字符设备等等为了进一步叙述我们给出端点(endpoint)和管道(pipe)的概念。端点 每一个USB设备在主机看来就是一个端点的集合主机只能通过端点与设备进行通讯以使用设备的功能每个端点实际上就是一个一定大小的数据缓冲区这些端点在设备出厂时就已定义好在USB系统中每一个端点都有唯一的地址这是由设备地址和端点号给出的每个端点都有一定的特性其中包括传输方式总线访问频率带宽端点号数据包的最大容量等等端点必须在设备配置后才能生效(端点0除外) 端点0通常为控制端点用于设备初始化参数等端点12等一般用作数据端点存放主机与设备间往来的数据 管道 一个USB管道是驱动程序的一个数据缓冲区与一个外设端点的连接它代表了一种在两者之间移动数据的能力一旦设备被配置管道就存在了管道有两种类型数据流管道其中的数据没有USB定义的结构与消息管道其中的数据必须有USB定义的结构管道只是一个逻辑上的概念 所有的设备必须支持端点0以作为设备的控制管道通过控制管道可以获取完全描述USB设备的信息包括设备类型电源管理配置端点描述等等只要设备连接到USB上并且上电端点0就可以被访问与之对应的控制管道就存在了 一个USB设备可以分为三个层图2.3最底层是总线接口用来发送与接收包中间层处理总线接口与不同的端点之间的数据流通一个端点是数据最终的使用者或提供者它可以看作数据的源或接收端最上层就是USB设备所提供的功能比如鼠标或键盘等。 2.3.3 设备的电源 USB设备的电源可以由USB总线供给也可以自备电源一个USB设备可以具有这两种供电方式但同一时刻只能由一种方式供电这两种供电方式是可以切换的 2.3.4 设备的挂起 为了节电当设备在指定的时间内没有总线传输USB设备自动进入挂起状态如果设备所接的Hub的端口被禁止了设备也将进入挂起状态(称之为选择挂起)当然主机也可以进入挂起状态 USB设备当总线活动时就会离开挂起状态一个设备也可以通过电信号来远程唤醒进入挂起状态的主机这个能力是可选的如果一个设备具有这个能力主机有能力禁止或允许使用这种能力。 |