一个 USB 端口至少有四个彼此独立的问题:插头是什么形状、数据按什么协议和速度传输、设备向系统提供什么功能、供电能力是什么。购买线缆、设计电路或开发驱动时,都应分别确认这四项。
例如,一个采用 Type-C 连接器的设备可以只实现 USB 2.0 数据;一个 CDC 虚拟串口可以通过高速 USB 的 Bulk 端点传输。连接器、设备类和传输类型没有一一对应关系。
1. 把连接器、协议、设备类与应用分开
跳转到“1. 把连接器、协议、设备类与应用分开”| 层次 | 回答的问题 | 示例 |
|---|---|---|
| 连接器与电气连接 | 如何插接,哪些触点负责什么? | Type-A、Type-B、Micro-B、Type-C;VBUS、GND、D+/D− |
| USB 总线协议与运行速度 | 主机如何识别和调度设备,链路怎样传输? | USB 2.0,Full-Speed、High-Speed |
| USB 功能接口与设备类 | 系统应加载什么驱动、怎样解释标准功能? | HID、CDC、Mass Storage、Audio,或厂商自定义接口 |
| 应用协议 | 某个业务消息是什么意思? | 配置采样率、开始采集、样本序号、错误码 |
| 供电与功率协商 | 谁供电、允许多少电压和电流? | VBUS、Type-C 电流声明、USB Power Delivery |
USB 2.0 规范涉及总线协议、设备模型、传输、电气和连接等内容,不能简单定义成“物理层标准”。设备类也不能替代总线协议:一个自定义采集命令依然要通过具体端点和 USB 传输机制送达。
USB-IF 明确区分 Type-C、USB 数据协议与 USB Power Delivery。某种连接器的存在不代表另外两种功能一定存在。USB-IF Type-C 术语说明
2. 常见连接器与信号
跳转到“2. 常见连接器与信号”2.1 USB 2.0 的四个基本信号
跳转到“2.1 USB 2.0 的四个基本信号”| 信号 | 含义 | 容易混淆的地方 |
|---|---|---|
| VBUS | USB 总线供电 | 不应写作 Voltage to Current Converter;VCC 是电路中常见的电源网络名,含义由原理图决定 |
| GND | 电源和信号参考地 | 不能把屏蔽壳无条件等同于信号地,连接方式由设计决定 |
| D+、D− | USB 2.0 差分数据线 | 是一对双向数据信号,不是 UART 的独立 TX/RX 两根线 |
这里的“四个基本信号”适用于解释传统 USB 2.0 连接,不代表所有 USB 插头都只有四个触点。Micro 连接器还有 ID 等触点;带 SuperSpeed 信号的连接器另有高速差分对。
2.2 Type-A、Type-B、Micro-B 与 Type-C
跳转到“2.2 Type-A、Type-B、Micro-B 与 Type-C”| 连接器 | 识别特征 | 阅读规格时应确认 |
|---|---|---|
| 传统 Type-A | 常见矩形插头,普通形态有方向 | 数据版本、主机/设备角色、允许电流;只看外壳或颜色不够 |
| 传统 Type-B | 常见较方形的设备端插头 | USB 2.0 与带附加触点的 SuperSpeed 形态有区别 |
| Micro-B | 小型、非正反插;USB 2.0 形态较窄 | 不要和较宽的 SuperSpeed Micro-B 混淆 |
| Type-C | 对称椭圆外形,支持正反插 | 端口、线缆、设备各自的数据、供电、视频能力 |
比较 Micro-B 与 Type-C 时,最直接的区别是连接器机械结构和正反插方式。数据速率与充电能力需要再查产品规格,不能从形状直接推出“Micro-B 只能慢速、Type-C 至少 5 Gbit/s”。
下面保留原笔记的外观和信号示意图,用于辨认。图中的针脚编号依赖插头/插座及观察方向;实际画板和接线必须以所选连接器数据手册为准。

2.3 Type-C 的信号组
跳转到“2.3 Type-C 的信号组”完整 Type-C 插座常见的 24 个触点可按功能理解:
| 信号组 | 用途 |
|---|---|
| VBUS、GND | 供电与参考地,使用多个触点分担连接需求 |
| D+、D− | USB 2.0 数据;插座两侧的对应触点服务于正反插连接 |
| TX/RX 高速差分对 | 用于支持相应高速协议的实现;只有 USB 2.0 的产品未必布设这些信号 |
| CC1、CC2 | 连接、方向、角色与供电相关的检测/协商;具体电路随端口角色决定 |
| SBU1、SBU2 | 特定附加模式的边带信号,不能当作任意通用数据脚 |
TI 的引脚说明把 USB 2.0 数据、高速数据、CC 和 SBU 分开介绍。为现有 USB 2.0 设备换成 Type-C 时,除了引出 D+/D−,还必须按端口角色正确处理 CC 等电路。TI Type-C 信号与接口保护说明
3. 数据速率不等于应用吞吐率
跳转到“3. 数据速率不等于应用吞吐率”USB 2.0 相关设备可能工作在 Low-Speed、Full-Speed 或 High-Speed。名称中的“High”是标准中的速度名称,不表示任意设备在任何连接条件下都能达到该速度。
| 运行速度 | 原始信号速率 | 说明 |
|---|---|---|
| Low-Speed | 1.5 Mbit/s | 不支持 Bulk 端点 |
| Full-Speed | 12 Mbit/s | Bulk 最大包长为 64 字节 |
| High-Speed | 480 Mbit/s | Bulk 最大包长为 512 字节 |
一份描述符写了 USB 2.0 版本号,并不证明连接已经协商为 High-Speed。还要检查控制器、PHY、线缆、主机端口和实际枚举速度。
因为 1 字节为 8 bit,原始速率的单位换算为:
这是原始链路速率的单位转换。总线事务、握手、调度和设备实现会占用时间,所以不能把它写成应用能持续收到的 60 MB/s。Bulk 没有保留固定带宽,负载变化也会影响等待时间。Microsoft:USB Bulk 传输
对采集系统,应先计算净样本流量。设通道数为 ,每通道采样率为 ,每个样本实际传输 字节,则:
例如 4 通道、每通道 50 kS/s、每样本 2 字节,需要:
这还没计帧头、时间戳和状态信息。这里的 是存储/传输字节数:24 bit ADC 若装进 32 bit 整数发送,就应使用 4 字节,而不是 3 字节。之后再通过实测验证端到端持续吞吐和最坏积压。
4. 主机、设备、接口与端点
跳转到“4. 主机、设备、接口与端点”主机负责枚举和安排总线传输。设备通过描述符说明自身配置、接口和端点。对于普通数据端点:
- IN:设备到主机。
- OUT:主机到设备。
- 方向以主机视角定义,不以当前编程函数或芯片引脚命名为准。
flowchart LR App[主机应用] --> Driver[系统驱动或用户态访问库] Driver --> Host[USB 主机控制器] Host -->|OUT| Out[设备 OUT 端点] In[设备 IN 端点] -->|IN| Host Out --> Protocol[设备应用协议] Protocol --> In设备可以有多个接口,接口内可以有多个端点。系统把端点作为数据通信的目标;上层“采集一秒数据”通常会对应多个请求、事务和包。Microsoft:USB 端点与管道
USB 包、一次主机读请求和一个业务帧不是同一个概念。设计应用协议时,应自己规定消息长度、类型、字节序和分片/重组方式,不能假设每次读取恰好得到一个完整业务消息。
5. 四种传输类型
跳转到“5. 四种传输类型”| 类型 | 主要用途 | 对时间和错误的取舍 |
|---|---|---|
| Control | 枚举、设备配置、控制请求 | 具有规定的控制阶段;默认控制端点承担基础配置 |
| Bulk | 大块数据、文件、允许缓冲的连续数据 | 支持错误检查和重传;不保证固定带宽或固定完成时限 |
| Interrupt | 周期轮询的小量状态或事件 | 主机按端点条件调度;名称不表示设备任意抢占主机 CPU |
| Isochronous | 音视频等有时间约束的数据流 | 为传输保留时间;发生错误时不依赖重传补回 |
Bulk 适合很多采集应用,但“最适合所有采集卡”过于绝对。选择取决于容许丢样与延迟、缓冲空间、设备类兼容性和主机软件。等时传输的持续时序与 Bulk 的可靠重传是不同取舍。Microsoft:等时端点传输
总线能检测和重传部分传输错误,不代表采集系统不会丢样。如果 ADC 生产数据的速度长期超过主机读取速度,有限缓冲最终仍会满;应用需要样本序号、溢出计数和明确的停止/丢弃策略。
6. 设备类与驱动
跳转到“6. 设备类与驱动”| 功能/类 | 典型用途 | 选择时要看的内容 |
|---|---|---|
| HID | 人机输入和部分控制设备 | 报告描述符、报文长度、轮询与平台 API |
| CDC | 通信功能;其中 ACM 常用于虚拟串口 | 子类、接口组合、驱动支持;虚拟串口波特率字段不等于 USB 总线速率 |
| Mass Storage | 存储设备 | 块设备协议、文件系统与介质语义 |
| Audio / Video | 音视频设备 | 对应类规范、版本、格式与系统驱动支持 |
| 厂商自定义接口 | 自定义设备功能 | 驱动绑定方式、端点、应用协议和跨平台支持 |
类名没有一个通用、固定的吞吐上限。例如 CDC 不等于“最多 12 Mbit/s”,也不能把 HID 的所有情况都归结成“64 KB/s”。同一功能在不同 USB 速度、描述符和主机实现下会有不同约束。
Windows 上可用 WinUSB 访问适合的自定义功能接口。Windows 8 及之后的自动绑定还要求设备提供相应 Microsoft OS 描述符和 WINUSB 兼容 ID;仅仅使用厂商自定义类号,不足以实现自动安装。Microsoft:WinUSB 自动安装条件
7. 供电与视频能力要单独检查
跳转到“7. 供电与视频能力要单独检查”Type-C 线缆和端口的能力各不相同。USB Power Delivery 可支持更高功率等级,但必须由设备、电源和线缆共同满足条件;“支持 Type-C”不代表支持某一 PD 功率。USB-IF 给出的上限能力可到 240 W,这不是每个端口的保证。
同样,Type-C 外形不保证视频输出、Thunderbolt、USB4 或外置显卡功能。只有 USB 2.0 数据的 Type-C 线缆也可以支持合适的 PD 供电,因此“充电很快”和“数据很快”应分别判断。USB-IF:Type-C 产品能力说明
实际选型可以按顺序记录:连接器型号 → 主机/设备角色 → 数据协议与速度 → 线缆能力 → 供电/PD等级 → 可选视频模式 → 驱动与应用协议。缺少哪一项,就去查该产品的对应规格,而不是从其他项推断。
8. 从基础概念进入实现
跳转到“8. 从基础概念进入实现”对于 STM32 采集设备,下一步是核对具体型号的 USB 控制器和 PHY,再定义采样率、数据帧、缓冲队列及主机读写流程。硬件支持某个速度,并不会自动生成 USB 类、Windows 驱动绑定或业务协议。
本页合并了原 USB 信号速记、Micro USB 与 Type-C 比较,以及原 USB DAQ 长文中的通用概念。继续阅读 STM32 USB DAQ 固件设计 和 USB DAQ 协议与上位机。