找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2512|回复: 0
打印 上一主题 下一主题
收起左侧

学习笔记->USB相关概念和协议浅析1

[复制链接]
跳转到指定楼层
楼主
ID:140343 发表于 2016-9-24 22:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
                  

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的传输方式)


   








分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表