Usb协议

1.概述
    USB(Universal Serial Bus)具有传输速率快,可热插拔等显著特点,应用已经十分广泛,目前的相当多的设备已经支持最新的USB3.0协议。理论上USB1.1的传输速度可以达到12Mbps/秒,而USB2.0则可以达到速度480Mbps/秒,并且可以向下兼容USB1.1。USB2.0三种模式,分别为Low-Speed,Full-Speed和High_Speed,这三种模式的参数和应用场景如下:
USB2.0协议笔记【1】

2.USB系统
    USB系统由USB Host和USB Device组成。每一个USB system只能存在一个USB Host。USB device分为USB Hub和Functions两种。其中USB Hub下可以挂载Functions设备。有一种特殊的USB device称为Compound Device,这种设备是一个Hub下内部固定挂载了几个Function设备(例如USB摄像头)。
USB系统的总线拓扑结构如下:
USB2.0协议笔记【1】

可以看到,一个USB System只能有一个USB Host。一个USB System最多只能有7层结构,且最下面一层只能挂载Function Device而不能挂载Hub Device。特殊的Compound Device占据两层(图中为6、7)。在一条通信路径上,Host和Device之间最多只能存在5个USB Hub Device。

3.USB2.0的结构概述和一些概念
(1)电气方面。分为三种USB设备:Low-Speed(1.5Mb/s),Full-Speed(12Mb/s)和High-Speed(480Mb/s)。USB接线如下:
USB2.0协议笔记【1】
(2)Power
分为bus-powered devices和self-powered devices两种。bus-powered devices依赖总线进行供电,self-powered devices有自己的电源。
(3)Bus Protocol
在USB System中,数据传输总是由Host发起。Host和Device的传输路径称为Pipe,分为Stream pipe和Message pipe,Stream pipe 没有USB协议定义的数据结构,Message pipe上传输的则是USB协议定义的数据结构。
(4)Data Flow Types
四种基本的Transfer:
Control Transfers:用于对USB Deviece的Configuration和control。
Bulk Data Transfers:用于批量传输等实时性要求不高的操作。
Interrupt Data Transfers:用于实时的可靠的数据传递,如鼠标、游戏手柄等。
Isochronous Data Transfers:相当于流传输,不可靠,典型应用如语音传输。

4.USB Data Flow Model
简单的USB数据流向如下:
USB2.0协议笔记【1】
一个有不同速率的USB设备的USB System的数据传输说明:
USB2.0协议笔记【1】
USB Host和Device之间数据传输的详细说明图如下:
USB2.0协议笔记【1】
对应应用软件来说,传输的模型可以简化如下:
USB2.0协议笔记【1】
可以把USB Device抽象成一些Endpoint的集合,这些Endpoint来实现USB Device的Interface。

下面讲述一些描述USB Data Flow的关键概念。
(1)Device Endpoints
是Host和Device之间的communication flow的端点。每一个USB Logical Device就是由这些Endpoint组成的。每一个Endpoint都有唯一的endpoint number和配置决定的数据传输方向,只支持单工传输。可以这样简单描述:Address+Endpoint+Direction。
当Endpoint Number为0时,这个Endpoit用来作为default control,Host可以通过这个Endpoint来初始化USB设备,可以在这种Endpoint上建立Default Control Pipe。
Endpoint number不为0的这些Endpoint必须在设备配置完成后才能使用。

(2)Pipes
Pipe指的是Host Software和USB Device的endpoint之间建立的连接。主要有两种Pipe:
• Stream: Data moving through a pipe has no USB-defined structure
• Message: Data moving through a pipe has some USB-defined structure
----Stream Pipes:
支持bulk,isochronous 和interrupt transfer这3中Transfer。
----Message Pipes:
在Message pipe上传输分为3个stage:
1.Request from host
2.Data transfer
3.Status stage
Default Control Pipe(Endpoint number为0)就是一种Control pipe。

(3)Frames and Microframes
在Low/Full-Speed总线上,USB建立了一个1ms长度的Frame,在High-Speed总线上则是125us的MicroFrame。一个Frame或者MicroFrame可以包含几个transactions。

(4)Transfer Types
上文已经叙述,有四种Transfer:
Control Transfers, Isochronous Transfers, Interrupt Transfers和Bulk Transfers。

----Control Transfer一般有三个transaction:Setup bus transaction,Data transaction和Status transaction。Control Transfer只能在message pipes上传输
8-, 16-, 32-, and 64-byte maximum data payload sizes for full-speed control endpoints, only 8-byte maximum data payload sizes for low-speed control endpoints, and only 64-byte maximum data payload size for high-speed control endpoints。

----Isochronous Transfers一般是单向的,可以建立两条pipe,一条输入,一条输出。
The USB limits the maximum data payload size to 1,023 bytes for each full-speed isochronous endpoint. High-speed endpoints are allowed up to 1024-byte data payloads。注意,Isochronous Transfers针对出错的数据,不会retransmission

----Interrupt Transfers属于stream pipe,是单向的。
The maximum allowable interrupt data payload size is 64 bytes or less for full-speed. High-speed endpointsare allowed maximum data payload sizes up to 1024 bytes.

----Bulk Transfers适合大批量的数据传输,且对实时性要求不高,比如,USB设备的数据拷贝。
属于stream pipe,需要建立两条Pipe来完成双向传输的任务。
The USB defines the allowable maximum bulk data payload sizes to be only 8, 16, 32, or 64 bytes for full-speed endpoints and 512 bytes for high-speed endpoints.
low-speed device没有bulk endpoints,不支持Bulk Transfer。

(5)High Bandwidth Isochronous Endpoints
Isochronous IN High Bandwidth Endpoints:
USB2.0协议笔记【1】
Isochronous OUT High Bandwidth Endpoints:
USB2.0协议笔记【1】
对应于一个Frame/MicroFrame内有1/2/3个transaction。

(6)Split Transactions
这是一个特殊的Transactions,在Host和Hub之间传输。它允许low-speed device和full-speed device连接high-speed的hubs。

(7)Bus Access
USB信息传输的模型如下:
USB2.0协议笔记【1】

4.USB基本数据格式
规定的Byte/Bit Ordering为LSB first。
USB的packet的格式如下:
USB2.0协议笔记【1】
packet的各个Field:
(1)Sync
所有的packet都是由Sync开始的。在Low/Full-Speed中,Sync为8bits,在high-Speed中,Sync为32bits。
(2)Packet Identifier Field(PID)
USB2.0协议笔记【1】
PID Types:
USB2.0协议笔记【1】
(3)Address Field
USB2.0协议笔记【1】
(4)Endpoint Field
USB2.0协议笔记【1】
(5)Frame Number Field
每一个frame的基础上由Host加1,达到0x7FFF时翻转为0。
(6)Data Field
USB2.0协议笔记【1】
(7)CRC
用于校验,具体校验算法参考Spec。

5.各种Packet fromat
(1)Token Packets
只能由Host发起。格式如下:
USB2.0协议笔记【1】
(2)Split Transaction Special Token Packets:SPLIT
用来支持Host和Hub之间的Split transaction。有两种Split special tokens:a start-split transaction (SSPLIT) and a complete-split transaction (CSPLIT).
Packets in a Start-split Transaction:
USB2.0协议笔记【1】
Packets in a Complete-split Transaction:
USB2.0协议笔记【1】
split transaction的结果由Complete-split Transaction来返回。
一个Split transaction的例子:
USB2.0协议笔记【1】

Start-Split Transaction Token:
USB2.0协议笔记【1】
参数SC:为0代表start-split token。
参数Port指的是挂载在Hub下的Host要求传输的那个Port下的USB device:
USB2.0协议笔记【1】
参数S:0 – Full speed;1 – Low speed。
参数E:
USB2.0协议笔记【1】
参数ET(Endpoint Type):
USB2.0协议笔记【1】

Complete-Split Transaction Token的格式如下:
USB2.0协议笔记【1】

(3)Start-of-Frame Packets
USB2.0协议笔记【1】
每1ms或者125us由Host发起一次。
Frames and Microframes:USB defines a full-speed 1 ms frame time indicated by a Start Of Frame (SOF) packet each and every 1ms period with defined jitter tolerances. USB also defines a high speed microframe with a 125 μs frame time with related jitter tolerances。
示意图如下:
USB2.0协议笔记【1】

(4)Data Packets
USB2.0协议笔记【1】
有四种Data packet:DATA0,DATA1,DATA2和MDATA。
DATA0 and DATA1用于数据翻转和同步;high bandwidth high-speed isochronous endpoints使用这四种Data packet;split transactions使用三种Data Packet(DATA0,DATA1和MDATA)。

(5)Handshake Packets
主要作用是报告data transaction的status。有四种handshake packet和一种special handshake packet。
USB2.0协议笔记【1】
ACK:正确接收。ACK can be returned by the host for IN transactions and by a function for OUT, SETUP, or PING transactions.
NAK:function无法接收Host的Data或者function没有数据传输给Host。NAK can only be returned by functions in the data phase of IN transactions or the handshake phase of OUT or PING transactions。Host是不能发NAK的。
STALL:表示functions无法接收湖综合传输数据,或者control pipe的request不支持。Host任何时刻都不会返回STALL。
STALL:a high-speed only handshake。
ERR:high-speed only handshake。hub用来报告低速设备的错误,用在split transaction中。

附录:USB 数据传输的说明示意图:
USB2.0协议笔记【1】

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: USB协议文档是USB接口的通信规范,包含了USB接口的硬件和软件要求,描绘了USB设备如何与主机进行通信。无论是生产USB驱动程序,还是设计一个符合USB标准的设备,都需要深入了解USB协议文档。 下载USB协议文档有助于深入理解USB标准和提高USB驱动程序的开发能力。在网上可以找到USB协议文档的下载链接,需要选择合适的版本和格式进行下载。通常情况下,USB协议文档是以PDF格式呈现,需要安装相应的阅读器进行查看。 下载USB协议文档不仅能够提高开发者的技能和水平,还可以让你更好的理解现代计算机中使用的通信协议。您也可以了解USB协议文档的历史版本和修改记录,以及通过更新的版本来跟踪和适应市场的变化。 总之,下载USB协议文档是一个非常有用的事情,它可以帮助开发者更好的理解并开发USB设备,也可以帮助普通用户了解现代计算机通信规范的基本知识和原理,如果你对计算机的服务器、计算设备、IoT设备的工作原理有所了解的话,那么了解USB协议文档会更有助于您的工作和学习。 ### 回答2: USB协议文档是指USB(通用串行总线)系统的一系列协议标准文档,通过这些协议标准,可以实现电子设备之间的高速数据传输、电力供应和控制信号传输等功能,适用于多种设备和应用。USB协议文档由USB-IF(USB实现论坛)制定和发布,每个版本都包含了特定的协议指南和电器规范。 下载USB协议文档对于开发USB设备或驱动程序的人员、制造商和供应商来说非常重要,可以帮助他们深入了解和掌握USB系统的功能、性能和实现细节,从而更好地设计和开发产品。此外,对于使用USB设备的普通用户来说,也可以通过下载USB协议文档,了解USB设备的工作原理和注意事项,更好地使用和维护设备。 目前,USB协议文档可以通过USB-IF官方网站进行下载,包括USB 2.0、USB 3.0、USB Type-C等多个版本。下载USB协议文档前,需要先注册USB-IF会员,并遵守其相关规定。对于初学者来说,可以首先阅读USB系统的基础知识,然后按照具体需求选择相关的协议文档进行下载和学习。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值