USB2.0学习3--USB传输和事务

目录

1. USB帧和微帧

2. USB传输类型(Transfer)

2.1 控制传输(Control Transfer)

2.2 中断传输(Interrupt Transfer)

2.3 批量传输(Bulk Transfer)

2.4 同步传输(Isochronous Transfer)

3. USB事务(Transaction)

4. USB传输及事务组成

4.1 控制传输及事务组成

4.2 中断传输及事务组成

4.3 批量传输及事务组成

4.4 同步传输及事务组成

5. USB帧、微帧、传输、事务、包的关系


USB 通信由一系列帧构成(从时间角度来看);在一帧数据内,可以划分为4种传输方式(从功能场景角度来看),每种传输方式都有各自的特点。再往下细分,每种传输又由3种基本的事务组成,一个事务由若干个数据包组成,包则是USB总线上数据传输的最小单位,所有的数据都是打包后再发送出去的。

1. USB帧和微帧

USB2.0协议中,帧和微帧属于时间上的概念。

由于USB总线上可能会存在多个从机,如果同一时间内,有多个从机同时要使用总线的话,会产生冲突,所以USB协议规定了帧/微帧的时间概念,USB主机每隔1帧/1微帧(即每1ms/125us),会将总线的使用权指定给某个USB从机,USB从机在这帧/微帧的时间内,可以通过总线进行数据传输的操作,如果没有数据传输操作需要执行,USB总线就会进入空闲状态,等这帧/微帧过后,USB总线的使用权会交给其他USB从机,周而复始。帧/微帧的间隔足够小,数据传输的操作就会频繁的在多个USB从机之间切换,看起来就好像是同时在进行数据传输一样。

USB低速模式,全速模式下,每个帧的长度为1ms;而高速模式下,每个微帧的长度为125us,即1帧=8微帧,帧的时间长度是固定的,如下图所示。

每一帧都有一个帧开始(SOF),随后才是数据传输,如下图所示。

2. USB传输类型(Transfer)

为了满足不同的应用场景需求,USB协议定义了4种数据传输方式,它们在数据格式、传输方向、数据包容量限制、总线访问限制等方面有着各自不同的特征。这4种传输分别是:

  1. 控制传输(Control Transfer)、
  2. 中断传输(Interrupt Transfer)、
  3. 批量传输(Bulk Transfer)、
  4. 同步传输(Isochronous Transfer)。

2.1 控制传输(Control Transfer)

控制传输是 USB 最基本也是最重要的传输,所有的设备都会支持这种传输模式。 设备的配置,命令,状态都通过控制传输传递。控制传输主要有2个作用,一是USB主机对设备进行初始化,设备在正常工作之前必须先进行配置,比如分配设备地址,读取设备的各种描述符,配置管道、带宽等;另一个是在设备的工作过程中,主机希望能及时地获取设备的当前状态,或者设备出现问题时希望主机能及时做出补救措施,或者主机根据某些需求改变设备的当前配置等工作

控制传输有如下特点:

  1. 控制传输是一种可靠的双向传输,即可以接收数据包又可以发送数据包,相应的控制传输的管道也是双向的;
  2. 控制传输对于最大包长度有固定的要求,对于高速设备该值为64Byte;对于低速设备该值为8 Byte;全速设备可以是8或16或32或64 Byte;
  3. 所有的设备必须有至少一个控制端点,且端点号为0;
  4. 支持错误检测和数据重传。

2.2 中断传输(Interrupt Transfer)

这里的中断传输不是传统意义上的中断传输,而是指一种轮询的传输方式,HOST通过固定的间隔对中断端点进行查询,若有数据传输或可以接收数据则返回数据或发送数据,否则返回NAK,表示尚未准备好。中断传输对延迟要求严格,只发送或接收少量的数据

中断传输有一个确定的传输周期,每隔一定的周期要求传输一次(但是并不是要求必须按固定周期发送一次数据,它的只会保证轮询的间隔小于我们设置的间隔)。系统在对进行中断传输的设备进行配置时,只要当前总线上用于周期性传输的空闲带宽能够容纳此设备,设备就可以工作。使用这种传输方式的设备有键盘、鼠标、游戏杆等。

中断传输有如下特点:

  1. 中断传输的最大服务周期(单位:毫秒)必须得到保证;
  2. 是一种可靠的数据传输方式;
  3. 由于错误而引起的数据重传将在下一服务周期进行;
  4. 数据的结尾也是通过与包的最大传输字节数比较来确定;
  5. 对于高速/全速/低速端点,最大包长度分别可以达到 1024/64/8 Bytes;

2.3 批量传输(Bulk Transfer)

批量传输是一种传输大量数据的可靠传输对延迟要求宽松,常见的如打印机、扫描仪、硬盘、U盘等设备的数据传输都有这种特点。当一帧内的总线时间(带宽)有空余时,USB主机就会将剩余的时间(带宽)分配给等待使用总线的批量传输的USB设备,也就是说,批量传输可以利用任何可获得的总线带宽来进行数据传输。

批量传输有以下特点:

  1. 可以动态地获得总线带宽;
  2. 是一种可靠的数据传输方式,如果传送失败,可进行重发;
  3. 有确认的数据传输,但不保证传输的带宽和延迟;
  4. 只有当获得空闲的带宽时,批量传输才会发生。如果USB总线有较多的空闲带宽,则批量传输会较频繁地进行,如果空闲带宽较少,可能有很长时间没有批量传输发生;
  5. 低速 USB 设备不支持批量传输,高速批量端点的最大包长度为 512byte,全速批量端点的最大包长度可以为 8、16、32、64 byte;
  6. 批量传输在访问 USB 总线时,相对其他传输类型具有最低的优先级,USB HOST总是优先安排其他类型的传输,当总线带宽有富余时才安排批量传输。

2.4 同步传输(Isochronous Transfer)

同步传输是一种实时的、不可靠的传输,不支持错误重发机制。同步传输是为支持某些对可靠性要求不高,对实时性要求很高、数据量很大应用场景而提出的,使用这种传输类型的设备有麦克风、调制解调器、音频设备、摄像头等。为了完成实时传输,总线必须事先提供足够的带宽。对于同步传输来说,实时性比正确性和数据重传更重要,即使有少量的数据出错,也不会对应用软件产生太大的影响。

实进传输有如下特点:

  1. 实时传输有数据有固定的时间延迟,但有固定的带宽保证;
  2. 是一种不可靠的数据传输,充许有一定的误码率;
  3. 只要数据供得上,就能保证管道上的恒定数据传送速率;
  4. 只有全速/高速设备可以使用实时传输。

3. USB事务(Transaction)

上一章节讲了USB有4种数据传输类型,分别是控制传输、中断传输、批量传输和同步传输,其中每种传输都是由基本的USB事务(transaction)构成,USB事务根据功能可以分为3种:

  1. Setup事务:表示USB主机向设备发送控制命令,由令牌包实现。
  2. IN事务:表示USB主机从设备读取数据的过程,由数据包实现。
  3. OUT事务:表示USB主机向设备发送数据的过程,由握手包实现。

USB的事务都是由主机发起的,一个完整的事务可以分为3个阶段(Phase):

  1. 令牌阶段(Token Phase): 由主机指明传输数据的类型,。
  2. 数据阶段(Data Phase): 用于传输数据。
  3. 响应阶段(Acknowledge Phase): 用来判断数据是否发送成功。

所以,一个基本的事务,需要涉及多个包:令牌包、数据包、握手包。

实际传输中,有些事务需要握手包,有些事务不需要握手包,有些事务可以传输很大的数据,有些事务只能传输小量数据。

事务类型和各个阶段的关系如下图所示。

4. USB传输及事务组成

前面讲过USB一个传输由一个或多个事务(transaction)构成,下面细讲每种传输及事务组成。

4.1 控制传输及事务组成

控制传输根据功能可以分为控制读传输、控制写传输、无数据控制传输三种。

基本的控制传输包括三个过程(Stage),分别是:建立过程、数据过程、状态过程

(1)建立过程(Setup Stage)固定使用1个SETUP事务,标志一次控制传输的开始。由Host 发出 SETUP 令牌包、DATA0 数据包、得到 ACK 握手包。

建立过程(Status Stage)时序图如下图所示。

(2)数据过程(Data Stage)根据需求,如果要求读/写数据,数据阶段就会传输具体数据,如果没有读写需求,则没有数据阶段。数据阶段是由0个或多个IN/OUT事务组成。

对于控制写:Host 发出 OUT 令牌包,发出数据包、得到 ACK 握手包。

对于控制读:Host 发出 IN 令牌包,读到数据包、发出 ACK 握手包。

(3)状态过程(Status Stage):固定使用1个IN/OUT事务,表示传输成功与否。

对于控制写:Host 发出 IN 令牌包,读到 DATA1 数据包,发出 ACK 握手包。

对于控制读:Host 发出 OUT 令牌包,发出 DATA1 数据包,等待 ACK 握手包。

数据过程(Data Stage)状态过程(Status Stage)时序图如下图所示。

控制传输类型和事务的关系总结如下:

控制传输类型

建立过程

数据阶段

状态阶段

控制读传输

1个setup事务

1个或多个in事务

1个out事务

控制写传输

1个setup事务

1个或多个out事务

1个in事务

无数据控制传输

1个setup事务

1个in事务

4.2 中断传输及事务组成

中断传输主要包括中断读传输、中断写传输两种,相比于控制传输中断传输只有1个过程:数据过程(Data Stage)

主机如果是中断读数据请求,则数据过程为一个IN事务;

主机如果是中断写数据请求,则数据过程为一个OUT事务。

数据过程(Data Stage)时序图如下图所示。

中断传输类型和事务的关系总结如下:

控制传输类型

数据过程

中断读传输

1个in事务

中断写传输

1个out事务

4.3 批量传输及事务组成

批量传输主要包括批量读传输、批量写传输两种,相比于控制传输,批量传输只有1个过程:数据过程(Data Stage)

主机如果是批量读数据请求,则数据过程为一个或者多个IN事务;

主机如果是批量写数据请求,则数据过程为一个或者多个OUT事务。

数据过程(Data Stage)时序图如下图所示。

批量传输类型和事务的关系总结如下:

控制传输类型

数据过程

批量读传输

1个或者多个in事务

批量写传输

1个或者多个out事务

4.4 同步传输及事务组成

同步传输主要包括同步读传输、同步写传输两种,相比于控制传输,同步传输只有1个过程:数据过程(Data Stage)

主机如果是同步读数据请求,则数据阶段为一个或者多个IN事务;

主机如果是同步写数据请求,则数据阶段为一个或者多个OUT事务。

数据过程(Data Stage)时序图如下图所示。

同步传输类型和事务的关系总结如下:

控制传输类型

数据过程

同步读传输

1个或者多个in事务

同步写传输

1个或者多个out事务

5. USB帧、微帧、传输、事务、包的关系

USB 通信由一系列帧构成。每一帧都有一个帧开始(SOF),随后是一个或多个传输。一个传输由一个到多个事务构成,可以跨帧完成。一个事务不能打断,不能跨帧完成。

https://pic3.zhimg.com/v2-7ff7dd9aec18efbc72020f6def60116e_r.jpg

一个事务由若干个数据包组成,包是USB总线上数据传输的最小单位,包不能被打断或干扰,否则会引发错误。

下面是两个逻辑分析仪抓的实训图

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

原海青木

你的鼓励将是我创作的最大动力.

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值