news 2026/4/23 11:36:09

USB 控制传输完整流程解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
USB 控制传输完整流程解析

目录

  • 一、前言
  • 二、控制传输的核心标识与建立事务
  • 三、控制传输的三大核心阶段
  • 四、控制传输各阶段的事务流程
  • 五、控制传输核心阶段细节补充
  • 六、总结
  • 七、结尾

一、前言

在上一篇笔记中,我们讲解了 USB 的批量、中断、实时三类传输方式,而控制传输作为 USB 协议中最核心、最基础的传输类型,是所有 USB 设备必须强制支持的功能。它既区别于普通的批量传输,又依托批量事务完成核心交互,主要用于 USB 设备的识别、枚举、参数配置等初始化流程,是 USB 设备接入主机后完成正常通信的前提。本次笔记将深入拆解控制传输的完整流程,理清建立、数据、状态三大阶段的交互逻辑,吃透控制传输的核心规则。

二、控制传输的核心标识与建立事务

在批量传输中,我们通过 IN/OUT 令牌包直接标识数据的传输方向(读 / 写),但控制传输有显著不同:其使用的令牌包永远固定为 SETUP,无法直接通过令牌包分辨是读数据还是写数据。

那么控制传输的读写方向如何确定?

Host 在发出 SETUP 令牌包后,会紧接着发送 DATA0 数据包,通过 DATA0 数据包中的具体内容,来明确后续的操作是读数据还是写数据。这一由 “SETUP 令牌包 + DATA0 数据包” 组成的交互过程,被 USB 协议定义为 “建立事务(SETUP Transaction)”,也是控制传输的起始核心步骤。

三、控制传输的三大核心阶段

控制传输并非单一事务就能完成,而是由多个不同类型的事务组合而成,这些事务按逻辑被划分为三个有序的核心过程(stage):

  1. 建立过程(Setup Stage):完成传输指令的下发与确认,是控制传输的起始;
  2. 数据过程(Data Stage):完成实际业务数据的读写交互,是控制传输的核心;
  3. 状态过程(Status Stage):完成传输结果的反馈与确认,是控制传输的收尾。

这三个阶段依次执行,构成一次完整的控制传输,缺一不可,对应的控制传输整体流程参考下图:

![[Pasted image 20260120190537.png]]

四、控制传输各阶段的事务流程

1. 建立过程(Setup Stage)—— 使用 SETUP 事务

建立过程是控制传输的起始,核心完成指令的下发与确认,流程固定:

Host 先发出 SETUP 令牌包,紧接着发送 DATA0 数据包(包含具体读写指令),最后等待并接收设备返回的 ACK 握手包,完成建立过程的确认。

2. 数据过程(Data Stage)—— 使用批量事务

数据过程负责实际的读写数据交互,依托批量事务实现,分输出(写)、输入(读)两种场景:

3. 状态过程(Status Stage)—— 使用批量事务

状态过程是控制传输的收尾,核心反馈传输结果,同样依托批量事务实现,且仅包含一个批量事务,分两种场景:

五、控制传输核心阶段细节补充

✔ Setup Stage 核心细节

SETUP 令牌包仅起到 “通知设备接收控制指令” 的作用,无法明确具体的读写方向;无论是 SETUP 事务还是后续的批量事务,都遵循 “Token phase(令牌阶段)、Data phase(数据阶段)、Hand phase(握手阶段)” 的三阶段结构;控制传输中 SETUP 令牌包是固定标识,具体的读写操作,完全依靠 DATA0 数据包中的内容来决定。

✔ Data Stage 核心细节

数据过程本质就是批量传输,由一个或多个批量事务组成:当需要传输的数据量超过单包最大长度时,会拆分数据并通过多次批量事务完成传输,保证数据的完整交互。

✔ Status Stage 核心细节

状态过程同样基于批量传输实现,但仅包含一个批量事务,核心作用是向 Host 汇报控制传输的最终结果,主要有三种反馈状态:

  1. 控制传输成功完成;
  2. 控制传输无法完成(如指令错误、设备异常);
  3. 设备正在处理(暂未完成交互,需等待)。

六、总结

  1. 控制传输是所有 USB 设备必支持的核心传输,用于设备枚举 / 配置,令牌包固定为 SETUP;
  2. 读写方向由 SETUP 事务的 DATA0 数据包内容决定,而非令牌包;
  3. 控制传输分建立、数据、状态三大阶段,依次执行构成完整交互;
  4. 建立阶段用 SETUP 事务,数据 / 状态阶段依托批量事务实现;
  5. 状态阶段仅含一个批量事务,反馈传输成功 / 失败 / 处理中三种结果。

七、结尾

控制传输作为 USB 通信的基础核心,是理解 USB 设备枚举、配置流程的关键,其三大阶段的交互逻辑看似复杂,实则是批量事务与 SETUP 事务的有序组合。吃透控制传输的流程,就能真正理解 USB 设备从接入到正常通信的完整初始化过程,这也是嵌入式 USB 开发的核心基础。感谢各位的阅读,持续关注本系列笔记,一起深挖 USB 协议细节,夯实嵌入式通信开发的技术功底!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 13:35:07

工程化实践:JBoltAI框架赋能Java企业AI转型

在数字化浪潮的推动下,Java企业正面临着从传统业务模式向智能化、自动化转型的迫切需求。AI应用开发作为这一转型的关键环节,不仅能够显著提升业务效率,还能为企业开辟新的增长点。然而,AI应用的开发并非一蹴而就,尤其…

作者头像 李华
网站建设 2026/4/14 4:16:43

Linux02-Linux是什么怎么学

一、Linux是什么 1.1 什么是操作系统? 计算机是一堆硬件组成的,为了控制这些硬件资源,于是就有了操作系统。 操作系统是计算机中最核心的系统软件,位于硬件和应用程序之间,负责管理硬件资源江为用户和应用程序提供运行环境。 操作系统的典型组成结构 应用程序 ───…

作者头像 李华
网站建设 2026/4/21 14:42:00

深圳金鑫磁材|深圳坡莫合金磁芯:如何实现“磁导率”百万级跃升

在5G通信、新能源汽车、高精度医疗设备等尖端科技领域,磁性材料作为能量转换与信号传输的核心载体,其性能直接决定了设备的效率与精度。深圳作为中国高端制造业的标杆城市,依托完整的产业链配套与持续的技术创新,已成为全球坡莫合…

作者头像 李华