news 2026/5/1 9:13:48

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/5/1 5:45:32

Naver收不到验证码?全面分析原因

对于很多海外用户尤其是跨境营销、内容发布者和数据抓取从业者来说,注册/登录/实名认证Naver时收不到短信验证码这一问题几乎是“绕不过去的坎”。这一点不仅影响账号创建,还会影响后续的营销投放、内容发布或数据运营。这篇文章我们将一步步分析问题根源…

作者头像 李华
网站建设 2026/5/1 6:46:11

开源内容付费平台源码中内容、会员与权限的实现方式

在内容付费系统中,“内容是否可看”并不是一个简单的判断,而是内容规则、会员体系与用户权限三者协同工作的结果。一套成熟的开源内容付费平台源码,通常会在底层就把这三部分拆分清楚,避免后期业务扩展时出现逻辑混乱。 本文从源码…

作者头像 李华
网站建设 2026/5/1 6:50:23

动态规划之“最大子数组和”问题的三种算法

动态规划之“最大子数组和”问题的三种算法 一、关键概念 - 子数组:原数组中连续的一段元素。 - 子序列:元素顺序不变但不一定连续。 - 连续子序列:等价于子数组。 二、暴力算法 - 核心思路:枚举所有可能的连续子数组&…

作者头像 李华
网站建设 2026/5/1 5:46:43

无人机电调模块选型指南

飞控的电调模块是无人机动力系统的核心,它负责接收飞控指令,精确控制电机转速。以下是不同类型电调的特点与选型对比,以及关键的选型参数。 主流电调类型对比 关键选型参数 选择电调时,需关注以下几点以确保其与电机、电池及飞控…

作者头像 李华
网站建设 2026/5/1 6:48:50

Django项目,sqlite版本太低问题

报错 命令:python manage.py runerver 0.0.0.0:8001 原因:django版本更新,需要使用更高版本的sqlite,但是sqlite在python中被内置,无法直接升级卸载 Traceback (most recent call last): File "/home/project/new…

作者头像 李华
网站建设 2026/5/1 6:08:17

我做了一个本地AI搜索工具,今天正式开源了!

前言 花了一段时间,我终于把小遥搜索 XiaoyaoSearch做出来了。 这是一个支持语音、文本、图片多模态输入的本地AI搜索桌面应用。最特别的是,它100%通过Vibe Coding(AI辅助编程)实现,从零开始,所有源码、设…

作者头像 李华