USB 系统拓扑结构
1、系统拓扑结构(最多127个设备)
一个 USB HOST 最多可以同时支持 128 个地址,地址 0 作为默认地址,只在设备枚举期间临时用,而不能被分配给任何一个设备,因此一个 USB HOST 最多可以同时支持 127 个地址,如果一个设备只占用一个地址,那么可最多支持 127 个 USB 设备。在实际的 USB 体系中,如果要连接 127 个USB设备,必须要使用 USB HUB,而 USB HUB 也是需要占用地址的,所以实际可支持的 USB 功能设备的数量将小于 127。
2、USB主控制器负责处理主机与设备之间的电气和协议层的互联。
常见的USB控制的类型:
UHCI:大多是Intel和Via主板上的USB控制器芯片。都是USB1.1规格。
UHCI:大多是Intel和Via主板上的USB控制器芯片。都是USB1.1规格。
EHCI:是由Intel等几个厂商研发,兼容OHCI\UHCI,遵循USB2.0规范,同时兼容USB1.1。
3、每个USB Host控制器都会自带一个USB HUB,被称为根(Root)HUB。这个Hub可以接子HUB, 每子HUB上可以挂载多个USB设备。当USB设备拔插HUB,会发出电气信号(HUB内部D+\D-引脚1.5K下拉,设备为1.5K上拉,接入之后HUB内部D+\D-被拉高从而通知USB控制器) USB设备逻辑结构 1、在USB设备的逻辑组织中,包含设备、配置、接口和端点4个层次。设备通常会有一个或多个配置,配置通常有一个或多个接口,接口或零或多个端点。 2、配置、接口、端点。
配置:体现出来是一种功能的集合。不同的配置市设备表现出不同的功能组合。在探测、连接期间需从其中选定一个。
接口:体现出来就是一种功能。而配置由多个接口(功能)组成,接口由多个端点组成,代表一个基本的功能。是USB设备驱动程序控制的对象。一个功能复杂的USB设备可以具有多个接口,而接口是端点的汇集。
端点:基本的通信单位,除了端点0之外是双向通讯,其它都是单向通信。可以理解为数据缓冲区。是USB设备中唯一可寻址的部分。它是位于USB设备或主机上的一个数据缓冲区,用来存放和发送USB的各种数据。主机和设备的通信最终作用于设备上的各个端点,它是主机和设备间通信流的一个逻辑终端。 3、地址、端点号 每个USB设备有一个唯一的地址、这个地址是在设备连上主机时,由主机分配给USB设备(整个主机范围,对应具体的USB设备,会写入USB设备)。而设备中的每个端点在设备内部有唯一的端点号,这个端点号是在设计设备时固定的(整个设备范围,对应具体端口)。 每个端点都是一个简单的连接点,支持数据流进或流出设备,两者不可兼得,即单向通信。 4、基于Pnp机制,设备被枚举时,它必须告诉主机此设备有几个端点,每个端点的特性,包括端口号、通信方向、端点支持的最大包大小(又称数据有效负载)、数据带宽要求等。每个设备必须有端点0,用于设备枚举和对设备进行一些基本的控制功能,即主机一开始与USB设备通讯时都会直接访问端点0(约定),其余的端点在设备配置(通过端点0)之前无法与主机通信(因为主机不知道端点的特性),只有通过端点0将这些端点特性告诉主机之后,主机才知道如何使用这些端点,这些端点才算被激活使用。 USB描述符 1、当我们把USB设备(如USB鼠标)接入到我们PC时,PC能够自动识别出我们的USB设备类型。这是因为USB主机检测到USB设备接入之后会主动通过USB设备的端点0取获取一组固定格式的数据,该数据包含了USB的类型、生产厂商等信息。这组固定格式的数据就称之为USB描述符。
2、标准的USB设备有5种USB设备描述符 a)设备描述符: 一个USB设备只能有一个设备描述符,但可包含多个配置描述符。 长度为18个字节。Table 9-8(262(290/650)页)。 b)配置描述符: 描述此设备都有哪些功能集合。一个配置描述符可以包含多个接口描述符。 长度为8个字节。Table 9-10(265 (293 / 650) 页)。 c)接口描述符: 描述一个具体的功能,该功能需要与主机通讯都要使用端点。 长度为8个字节。Table 9-12(268 (296 / 650) 页)。 d)端点描述符: 一个接口描述符使用了多少个端点就有多少个端点描述符。 长度为7个字节。 Table 9-13(269 (297 / 650) 页)。 e)字符串描述符: 用于设备、配置、接口描述符需要加入字符串信息(如厂家名称)的时候,可以使用此描述符,设备、配置、接口通过索引的方式找到指定的字符串描述符。 参考:Universal+Serial+Bus+Specification+v2[1].0((USB+2.0).pdf
USB设备枚举 1、USB设备在正常工作以前,第一件事要做的事就是枚举。枚举是让HOST认得这个USB设备,并且为该设备准备好资源,如分配好地址、得到该设备所有端点特性。建立好主机和设备之间的数据传递机制。 2、USB标准的8个枚举步骤 a)获取设备描述符 b)复位 c)设置地址 d)再次获取设备描述符 e)获取配置描述符 f)获取接口、端点描述符 g)获取字符串描述符 h)选择设备配置 3、获取设备描述符的数据包分析
 
第一个事务->请求包: Packet1:Host发送一个SETUP命令,表示即将发送请求包 Packet2:Host发送了一个请求包,请求设备将其设备描述符发送过来 Packet3:Device 回送一个ACK 响应包,表示已经收到请求。 第二事务->拿到设备描述符-描述信息 Packet1:Host发送获取数据的命令给 Devices。 Packet2:Devices 发送数据给 Host Packet3:Host 返回一个ACK表示Host收到的数据。 4、USB鼠标的整个枚举和通信的流程 鼠标是通过中断传输方式:(这里的中断并不是指硬件中断,只是一种USB的传输方式) 鼠标是通过中断传输方式:(这里的中断并不是指硬件中断,只是一种USB的传输方式)
|