USB2.0协议入门中文版

USB 2.0规范
USB 体系简介
USB 是一种支持热插拔的高速串行传输总线,它使用差分信号来传输数据,最高速度可达 480Mb/S。USB 支持“总线供电”和“自供电”两种供电模式。在总线供电模式下,设备最多可以获得 500mA 的电流。USB2.0 被设计成为向下兼容的模式,当有全速(USB 1.1)或者低速(USB 1.0)设备连接到高速(USB 2.0)主机时,主机可以通过分离传输来支持它们。一条 USB 总线上,可达到的最高传输速度等级由该总线上最慢的“设备”决定,该设备包括主机、HUB 以及U SB 功能设备。
USB 体系包括“主机”、“设备”以及“物理连接”三个部分。其中主机是一个提供USB 接口及接口管理能力的硬件、软件及固件的复合体,可以是 PC,也可以是 OTG 设备,一个 USB 系统中仅有一个 USB 主机;设备包括 USB 功能设备和 USB HUB,最多支持127 个设备;物理连接即指的是USB的传输线。在USB 2.0系统中,要求使用屏蔽的双绞线。
一个 USB HOST 最多可以同时支持 128 个地址,地址 0 作为默认地址,只在设备枚举期间临时使用,而不能被分配给任何一个设备,因此一个 USB HOST 最多可以同时支持 127 个地址,如果一个设备只占用一个地址,那么可最多支持 127 个 USB 设备。在实际的 USB 体系中,如果要连接 127 个USB 设备,必须要使用 USB HUB,而 USB HUB 也是需要占用地址的,所以实际可支持的 USB 功能设备的数
量将小于 127。
USB 体系采用分层的星型拓扑来
连接所有 USB 设备,如右图所示:
以 HOST-ROOT  HUB为起点,最多
支持7层(Tier),也就是说任何一个
USB 系统中最多可以允许 5 个 USB
深度水产HUB 级联。一个复合设备(Compound
Device)将同时占据两层或更多的
层。
ROOT HUB是一个特殊的USB
headcallHUB,它集成在主机控制器里,不占用地
址。ROOT HUB不但实现了普通 USB HUB的功能,还包括其他一些功能,具体在增强型主机控制器的规范中有详细的介绍。
“复合设备(Compound Device)”可以占用多个地址。所谓复合设备其实就是把多个功能设备通过内置的 USB HUB 组合而成的设备,比如带录音话筒的 USB 摄像头等。
USB 采用轮询的广播机制传输数据,所有的传输都由主机发起,任何时刻整个 USB 体系内仅允许一个数据包的传输,即不同物理传输线上看到的数据包都是同一被广播的数据包。
USB 采用“令牌包”-“数据包”-“握手包”的传输机制,在令牌包中指定数据包去
向或者来源的设备地址和端点(Endpoint),从而保证了只有一个设备对被广播的数据包/令牌包作出响应,“握手包”表示了传输的成功与否。
数据包:USB 总线上数据传输的最小单位,包括 SYNC、数据及 EOP 三个部分。其中数据的格式针对不同的包有不同的格式。但都以 8 位的 PID 开始。PID 指定了数据包的类型(共 16 种)。令牌包即指 PID 为 IN/OUT/SETUP 的包。
端点(Endpoint)是USB设备中的可以进行数据收发的最小单元,支持单向或者双向的数据传输。设备支持端点的数量是有限制的,除默认端点外低速设备最多支持 2 组端点(2 输入,2 输出),高速和全速设备最多支持 15 组端点。
管道(Pipe)是主机和设备端点之间数据传输的模型,共有两种类型的管道:无格式的流管道(Stream Pipe)和有格式的信息管道(Message Pipe)。任何 USB 设备一旦上电就存在一个信息管道,即默认的控制管道,USB主机通过该管道来获取设备的描述、配置、状态,并对设备进行配置。
USB设备连接到HOST时,HOST必须通过默认的控制管道对其进行枚举,完成获得其设备描述、进行地址分配、获得其配置描述、进行配置等操作方可正常使用。USB设备的即插即用特性即依赖于此。
枚举是 USB 体系中一个很重要的活动,由一系列标准请求组成(若设备属于某个子类,还包含该子类定义的特殊请求)。通过枚举 HOST 可以获得设备的基本描述信息,如支持的 USB 版本、PID、VID、设备分类(Class)、供电方式、最大消耗电流、配置数量、各种类型端点的数量及传输能力(最大包长度)。HOST 根据 PID 和 VID 加载设备驱动程序,并对设备进行合适的配置。只有经过枚举的设备才能正常使用。对于总线供电设备,在枚举完成前最多可从总线获取 100mA 的电流。
USB 体系定义了四种类型的传输:1、控制传输,主要用于在设备连接时对设备进行枚举以及其他因设备而已的特定操作。2、中断传输,用于对延迟要求严格、小量数据的可靠传输,如键盘、游戏手柄等。3、批量传输,用于对延迟要求宽松,大量数据的可靠传输,如 U 盘等。4、同步传输,用于对可靠性要求不高的实时数据传输,如摄像头、USB 音响等。
注意:中断传输并不意味这传输过程中,设备会先中断 HOST,继而通知 HOST 启动传输。中断传输也是 HOST 发起的传输,采用轮询的方式询问设备是否有数据发送,若有则传输数据,否则 NAK 主机。
不同的传输类型在物理上并没有太大的区别,只是在传输机制、主机安排传输任务、可占用U SB 带宽
的限制以及最大包长度有一定的差异。
USB 设备通过管道和 HOST 通信,在默认控制管道上接受并处理以下三种类型的请求:
1. 标准请求:一共有 11 个标准请求,如得到设备描述、设置地址、得到配置描述等。所有 USB 设备均应支持这些请求。HOST 通过标准请求来识别和配置设备。
2. 类(class)请求:USB 还定义了若干个子类,如 HUB 类、大容量存储器类等。不同的类又定义了若干类请求,该类设备应该支持这些类请求。设备所属类在设备描述符中得到。
3. 厂商请求:这部分请求并不是 USB 规范定义的,而是设备生产商为了实现一定的功能而自己定义的请求。
USB HUB提供了一种低成本、低复杂度的USB接口扩展方法。HUB的上行 PORT面
向HOST,下行PORT面向设备(HUB或功能设备)。在下行 PORT 上,HUB 提供了设备连接检测和设备移除检测的能力,并给各下行 PORT 供电。HUB可以单独使能各下行PORT,不同P ORT可以工作在不同的速度等级(高速/全速/低速)。
HUB由HUB重发器(HUB Repeater)、转发器(Transaction Translator)以及H UB控制器(HUB C
ontroller)三部分组成。HUB Repeater是上行 PORT和下行 PORT 之间的一个协议控制的开关,它负责高速数据包的重生与分发。HUB 控制器负责和 HOST 的通信,HOST 通过H UB类请求和H UB 控制器通讯,获得关于H UB 本身和下行P ORT 的H UB描述符,进行 HUB 和下行 PORT 的监控和管理。转发器提供了从高速和全速/低速通讯的转换能力,通过 HUB可以在高速HOST和全速/低速设备之间进行匹配。HUB在硬件上支持Reset、Resume、Suspend。
重生与分发:指的是 HUB Repeater 需要识别从上行(下行)PORT 上接收到的数据,并分发到下行(上行)PORT。所谓分发主要是指从上行 PORT 接收到的数据包需要向所有使能的高速下行 PORT 发送,即广播。
氧化镁板USB HOST 在 USB 体系中负责设备连接/移除的检测、HOST 和设备之间控制流和数据流的管理、传输状态的收集、总线电源的供给。
USB 数据流模型
u型光电传感器USB 体系在实现时采用分层的结构,如下图所示:在 HSOT 端,应用软件(Client SW)不能直接访问USB总线,而必须通过 USB 系统软件和 USB 主机控制器来访
问 USB 总线,在USB 总线上和 USB 设备进
行通讯。从逻辑上可以分为功能层、设备
层和总线接口层三个层次。其中功能层完
成功能级的描述、定义和行为;设备层则
完成从功能级到传输级的转换,把一次功
能级的行为转换为一次一次的基本传输;
USB 总线接口层则处理总线上的 Bit 流,完
成数据传输的物理层实现和总线管理。途
中黑箭头代表真实的数据流,灰箭头
代表逻辑上的通讯。
物理上,USB 设备通过分层的星型总线
连接到 HOST,但在逻辑上 HUB 是透明的,
各USB 设备和 HOST 直接连接,和 HOST 上
的应用软件形成一对一的关系。如右图所
示:各应用软件-功能设备对之间的通讯相互
运行网独立,应用软件通过USB设备驱动程序
(USBD)发起IRQ请求,请求数据传输。主机控制器驱动程序(HCD)接收 IRQ请求,并解析成为 USB传输和传输事务(Transaction),并对 USB 系统中的所有传输事务进行任务排定(因为可能同时有多个应用软件发起 IRQ 请求)。
主机控制器(Host Controller)执行排定的传输任务,在同一条共享的 USB 总线上进行数据包的传输。如下图所示。
USB系统中数据的传输,宏观的
看来是在 HOST 和 USB 功能设备之间
进行;微观的看是在应用软件的 Buffer
和 USB 功能设备的端点之间进行。一
般来说端点都有Buffer,可以认为
USB 通讯就是应用软件 Buffer 和设备
端点 Buffer 之间的数据交换,交换的
通道称为管道。应用软件通过和设备
之间的数据交换来完成设备的控制和
数据传输。通常需要多个管道来完成数
据交换,因为同一管道只支持一种类
型的数据传输。用在一起来对设备进
行控制的若干管道称为设备的接口,
这就是端点、管道和接口的关系。
一个 USB 设备可以包括若干个端
点,不同的端点以端点编号和方向区
分。不同端点可以支持不同的传输类
型、访问间隔以及最大数据包大小。除
端点 0 外,所有的端点只支持一个方向
的数据传输。端点 0 是一个特殊的端
点,它支持双向的控制传输。管道和端
点关联,和关联的端点有相同的属性,
如支持的传输类型、最大包长度、传输
方向等。
四种传输类型
1.控制传输:
控制传输是一种可靠的双向传输,一次控制传输可分为三个阶段。第一阶段为从HOST 到 Device 的 SETUP 事务传输,这个阶段指定了此次控制传输的请求类型;第二阶段为数据阶段,也有些请求没有数据阶段;第三阶段为状态阶段,通过一次 IN/OUT 传输表明请求是否成功完成。
控制传输通过控制管道在应用软件和 Device 的控制端点之间进行,控制传输过程中传输的数据是有格式定义的,USB设备或主机可根据格式定义解析获得的数据含义。其他三种传输类型都没有格式定义。
控制传输对于最大包长度有固定的要求。对于高速设备该值为64Byte;对于低速设备该值为8;全速设备可以是8或16 或32 或64。
最大包长度表征了一个端点单次接收/发送数据的能力,实际上反应的是该端点对应的 Buffer 的大小。
Buffer 越大,单次可接收/发送的数据包越大,反之亦反。当通过一个端点进行数据传输时,若数据的大小超过该端点的最大包长度时,需要将数据分成若干个数据包传输,并要求除最后一个包外,所有的包长度均等于该最大包长度。这也就是说如果一个端点收到/发送了一个长度小于最大包长度的包,即意味着数据传输结束。
控制传输在访问总线时也受到一些限制,如高速端点的控制传输不能占用超过20%的微帧,全速和低速的则不能超过10%。在一帧内如果有多余的未用时间,并且没有同步和中断传输,可以用来进行控制传输。
2.中断传输:
中断传输是一种轮询的传输方式,是一种单向的传输,HOST 通过固定的间隔对中断端点进行查询,若有数据传输或可以接收数据则返回数据或发送数据,否则返回 NAK,表示尚未准备好。中断传输的延迟有保证,但并非实时传输,它是一种延迟有限的可靠传输,支持错误重传。
三方通话对于高速/全速/低速端点,最大包长度分别可以达到 1024/64/8 Bytes。高速中断传输不得占用超过 80%的微帧时间,全速和低速不得超过 90%。中断端点的轮询间隔由在端点描述符中定义,全速端点的轮询间隔可以是1~255mS,低速端点为 10~255mS,高速端点为(2interval-1)*125uS,其中i nterval 取1到 16 之间的值。
除高速高带宽中断端点外,一个微帧内仅允许一次中断事务传输,高速高带宽端点最多可以在一个微帧内进行三次中断事务传输,传输高达3072 字节的数据。
所谓单向传输,并不是说该传输只支持一个方向的传输,而是指在某个端点上该传输仅支持一个方向,或输出,或输入。如果需要在两个方向上进行某种单向传输,需要占用两个端点,分别配置成不同的方向,可以拥有相同的端点编号。
3.批量传输:
批量传输是一种可靠的单向传输,但延迟没有保证,它尽量利用可以利用的带宽来完成传输,适合数据量比较大的传输。低速 USB 设备不支持批量传输,高速批量端点的最大包长度为 512,全速批量端点的最大包长度可以为8、16、32、64。
批量传输在访问 USB 总线时,相对其他传输类型具有最低的优先级,USB HOST 总是优先安排其他类型的传输,当总线带宽有富余时才安排批量传输。高速的批量端点必须支持 PING 操作,向主机报告端点的状态,NYET 表示否定应答,没有准备好接收下一个数据包,ACK 表示肯定应答,已经准备好接收下一个数据包。
4.同步传输:

本文发布于:2024-09-22 12:24:22,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/326125.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:传输   设备   端点   进行   支持   总线   数据
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议