news 2026/6/7 3:39:58

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/6/4 6:23:12

1337x打不开怎么解决?2026解决方案

1337x作为目前仍然活跃的 Torrent 资源索引站之一,在很多地区依然有大量用户。但进入 2026 年,越来越多人发现一个现实问题:1337x 不是“偶尔打不开”,而是“经常性无法访问”。 页面直接被拦截、DNS 被劫持、加载极慢&#xff0…

作者头像 李华
网站建设 2026/6/4 2:17:02

新的一年,您的数智化管理升级了吗?

当新的一年到来,许多企业管理者在规划新年发展蓝图时,不禁要问:我们的管理体系是否跟上了这个数字智能时代?在市场竞争日益激烈的今天,传统的管理模式已难以应对快速变化的市场需求,数智化转型不再是一道选…

作者头像 李华
网站建设 2026/6/5 4:56:29

吃透联想服务器管理!本地 / SSH / 带外(BMC/IMM)三种方式实战指南

作为企业级 IT 基础设施的核心,联想服务器的高效管理直接影响业务稳定性。很多运维同学在接触联想服务器时,常会疑惑其管理方式的分类,本文就针对联想服务器最核心的三种管理方式 —— 本地管理、SSH 远程管理、带外(OOB)管理,进行全方位的实战解析,帮你彻底搞懂每种方式…

作者头像 李华
网站建设 2026/6/6 20:42:29

ollama

ollama.exe下载 https://modelscope.cn/models/Lixiang/ollama-release ollama run 在资源管理器地址栏输入 %USERPROFILE%\.ollama。 新建 config.json 文件,内容如下: { "registry": { "mirrors": { "r…

作者头像 李华
网站建设 2026/6/4 5:20:10

基于STM32单片机智能电子密码锁密码箱门禁无线摄像头设计套件25(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

基于STM32单片机智能电子密码锁密码箱门禁无线摄像头设计套件25(设计源文件万字报告讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码 产品功能描述: 本系统由STM32F103C8T6单片机核心板、LCD1602显示、继电器驱动电路、按键电路及电源…

作者头像 李华