跳转到内容
新建笔记

USB 基础:连接器、速度、供电、设备类与传输

一个 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.1 USB 2.0 的四个基本信号

跳转到“2.1 USB 2.0 的四个基本信号”
信号含义容易混淆的地方
VBUSUSB 总线供电不应写作 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”。

下面保留原笔记的外观和信号示意图,用于辨认。图中的针脚编号依赖插头/插座及观察方向;实际画板和接线必须以所选连接器数据手册为准。

Type-A、Type-B、Micro 系列与 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-Speed1.5 Mbit/s不支持 Bulk 端点
Full-Speed12 Mbit/sBulk 最大包长为 64 字节
High-Speed480 Mbit/sBulk 最大包长为 512 字节

一份描述符写了 USB 2.0 版本号,并不证明连接已经协商为 High-Speed。还要检查控制器、PHY、线缆、主机端口和实际枚举速度。

因为 1 字节为 8 bit,原始速率的单位换算为:

480×106 bit/s÷8=60×106 B/s.480\times10^6\ \mathrm{bit/s}\div8 =60\times10^6\ \mathrm{B/s}.

这是原始链路速率的单位转换。总线事务、握手、调度和设备实现会占用时间,所以不能把它写成应用能持续收到的 60 MB/s。Bulk 没有保留固定带宽,负载变化也会影响等待时间。Microsoft:USB Bulk 传输

对采集系统,应先计算净样本流量。设通道数为 CC,每通道采样率为 fsf_s,每个样本实际传输 BB 字节,则:

Rsample=CfsB.R_{\mathrm{sample}}=C f_s B.

例如 4 通道、每通道 50 kS/s、每样本 2 字节,需要:

4×50,000×2=400,000 B/s.4\times50{,}000\times2=400{,}000\ \mathrm{B/s}.

这还没计帧头、时间戳和状态信息。这里的 BB 是存储/传输字节数: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 包、一次主机读请求和一个业务帧不是同一个概念。设计应用协议时,应自己规定消息长度、类型、字节序和分片/重组方式,不能假设每次读取恰好得到一个完整业务消息。

类型主要用途对时间和错误的取舍
Control枚举、设备配置、控制请求具有规定的控制阶段;默认控制端点承担基础配置
Bulk大块数据、文件、允许缓冲的连续数据支持错误检查和重传;不保证固定带宽或固定完成时限
Interrupt周期轮询的小量状态或事件主机按端点条件调度;名称不表示设备任意抢占主机 CPU
Isochronous音视频等有时间约束的数据流为传输保留时间;发生错误时不依赖重传补回

Bulk 适合很多采集应用,但“最适合所有采集卡”过于绝对。选择取决于容许丢样与延迟、缓冲空间、设备类兼容性和主机软件。等时传输的持续时序与 Bulk 的可靠重传是不同取舍。Microsoft:等时端点传输

总线能检测和重传部分传输错误,不代表采集系统不会丢样。如果 ADC 生产数据的速度长期超过主机读取速度,有限缓冲最终仍会满;应用需要样本序号、溢出计数和明确的停止/丢弃策略。

功能/类典型用途选择时要看的内容
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 协议与上位机。