Linux驱动 2026年8月4日 3 分钟

USB子系统3-协议层数据格式

上图为一次数据传输的完整过程,线发送令牌包表示自己要发数据了,并给出地址和端点,之后发出数据包并发出数据,最后设备给出答…

上图为一次数据传输的完整过程,线发送令牌包表示自己要发数据了,并给出地址和端点,之后发出数据包并发出数据,最后设备给出答复,表示自己有没有收到数据。

由包组成事务,我们发现事务是由多个包组成的,表示数据传输完整传输的一个过程

读数据的完整过程

2.4.2 过程(stage)和阶段(phase)

事务由多个包组成,比如Host要发送数据给设备,这就会涉及很多个包:

  • Host发出OUT令牌包,表示要发数据给哪个设备
  • Host发出DATA0数据包
  • 设备收到数据后,回应ACK包

这个完整的事务涉及3个包(Packet),分为3个阶段(Phase):

  • 令牌阶段(Token phase):由令牌包实现
  • 数据阶段(Data phase):由数据包实现
  • 握手阶段(Handshake phase):由握手包实现

事务由包组成,这些包分别处于3个阶段(phase):令牌阶段,数据阶段,握手阶段。

对于批量传输、中断传输、实时传输,它们分别由一个事务组成,不再细分为若干个过程。

但是控制传输由多个事务组成,这些事务分别处于3个过程:建立过程(stage)、数据过程(stage)、状态过程(stage)。

总结起来就是:

  • 控制传输由多个过程(stage)组成,每个过程由一个事务来实现
  • 每个事务由多个阶段(phase)组成,每个阶段有一个包来实现

如果要发送大量的数据,不断重复批量事务即可

上面就是批量传输,批量事务的一次或者多次复制

中断传输,是在一秒时间内需要多次去看设备有没有数据

实时传输就是直接省略数据回应部分,使用实时事务实现

控制传输由多个事务组成

状态阶段

上一篇 USB子系统2-软件工程师眼中的电气信号

USB 2.0协议支持3种速率:低速(Low Speed,1.5Mbps)、全速(Full Speed, 12Mbps)...

下一篇 USB控制传输SETUP事务与数据方向判断详解1

一、控制传输的三个阶段 USB控制传输(Control Transfer)包含三个阶段: 关键问题:如何通过Setup阶...