USB 连接 · 复位 · 断开 完整时序速查表
2026-04-20
本文链接为:http://www.usbzh.com/article/detail-1609.html ,欢迎转载,转载请附上本文链接。
硬件约定
- 主机端口:D+、D− 各 15kΩ 下拉
- 低速设备:D− 1.5k 上拉
- 全速设备:D+ 1.5k 上拉
- SE0 = D+=0,D−=0
- LS/FS 空闲 = J 状态
- HS 空闲 = SE0
1. 设备插入连接(Attach)
低速 LS 连接
- 设备插入,D− 被 1.5k 上拉
- 主机检测到:持续 J 状态(D+=0,D−=1)
- 持续时间 ≥ 2.5µs → 判定低速设备已连接
全速 FS 连接
- 设备插入,D+ 被 1.5k 上拉
- 主机检测到:持续 J 状态(D+=1,D−=0)
- 持续时间 ≥ 2.5µs → 判定全速设备已连接
高速 HS 连接(先FS后HS)
2. 主机发送复位(Reset)
无论 LS/FS/HS,复位信号都是:
持续 SE0 ≥ 10ms
- 复位期间:D+=0,D−=0
- 复位结束:主机释放 SE0
- 释放后:
- LS/FS → 回到 J 空闲态
- HS → 进入高速模式,空闲为 SE0
3. 设备断开(Detach)
低速 / 全速断开判断(最核心)
- 设备被拔掉
- 1.5k 上拉消失
- 主机 15k 下拉拉回两条线 → 变为 SE0
- SE0 持续 ≥ 2.0~2.5µs
- 主机判定:设备已断开
一句话:
连接是 J,断开是 SE0 并保持 2.5µs
高速 HS 断开判断
- 设备断开 → 总线端接电阻消失
- 主机发送数据包产生强反射
- 差分幅度超过 625mV
- 判定高速断开,并回退到 FS 模式检测 SE0
设备端自己判断断开
设备一般不靠 D+/D−,而是:
- 检测 VBUS 掉电 < 4.0V
- 或长时间无 SOF、无总线活动
- 然后低速、全速设备主动释放 1.5k 上拉,让主机检测到 SE0
4. 一张表看懂全程状态
| 阶段 | 低速 LS | 全速 FS | 高速 HS |
|---|---|---|---|
| 无设备/断开 | SE0 | SE0 | SE0 |
| 设备连接 | 持续 J 态 | 持续 J 态 | 先FS J态,后HS SE0 |
| 空闲态 Idle | J | J | SE0 |
| 复位信号 | SE0 ≥10ms | SE0 ≥10ms | SE0 ≥10ms |
| 包起始 SOP | K(D-=1,D+=0) | K(D-=0,D+=1) | K(D-=0,D+=1) |
| 主机断开检测 | SE0 ≥2.5µs | SE0 ≥2.5µs | 反射幅度过高 + SE0 |
5. 最关键的三句总结
- 连接 = J 状态持续
- 复位 = SE0 持续 ≥10ms
- 断开 = SE0 持续 ≥2.5µs
USB 低速 / 全速 设备端状态机(通用)
状态说明
- IDLE(空闲):总线处于 J 状态
- RESET(复位):检测到 SE0 ≥ 10ms
- SYNC(同步):检测到 SOP = K 起始 + KJ 同步码
- DATA(数据接收):NRZI 解码 + 位填充
- EOP(包结束):检测到 SE0 SE0 J
- DISCONNECT(断开):检测到 SE0 ≥ 2.5μs
┌───────────────┐
│ POWER_ON 上电 │
└───────┬───────┘
│
▼
┌───────────────┐
│ DISCONNECT │ ◄───────────────────────┐
│ (持续 SE0) │ │
└───────┬───────┘ │
│ │
│ 检测到持续 J 态 (设备已插入) │
▼ │
┌───────────────┐ │
│ IDLE │ │
│ (总线=J空闲) │ │
└───┬───────┬───┘ │
│ │ │
│ │ 检测 SE0 ≥ 10ms │
│ ▼ │
│ ┌───────────┐ │
│ │ RESET │ │
│ │ (SE0持续) │ │
│ └────┬──────┘ │
│ │ 复位结束,回到 J │
│ └─────────────────────┐ │
│ │ │
│ 检测到下降沿:J → K (SOP) │ │
▼ │ │
┌───────────┐ │ │
│ SYNC │ │ │
│ (KJKJKK) │ │ │
└────┬──────┘ │ │
│ 同步码正确 │ │
▼ │ │
┌───────────┐ │ │
│ DATA │ │ │
│ NRZI+位填 │ │ │
└────┬──────┘ │ │
│ 收到 EOP:SE0 SE0 J │ │
▼ │ │
┌───────────┐ │ │
│ PACKET │ │ │
│ 处理完成 │─────────────────────┘ │
└────┬──────┘ │
│ 回到空闲 J │
└────────────────────────────────────┘
空闲 = J
复位 = SE0 ≥10ms
断开 = SE0 ≥2.5μs
包开始 = J→K
包结束 = SE0 SE0 J
HID人机交互QQ群:564808376
UAC音频QQ群:218581009
UVC相机QQ群:331552032
BOT&UASP大容量存储QQ群:258159197
STC-USB单片机QQ群:315457461
USB技术交流QQ群2:580684376
USB技术交流QQ群:952873936 USB技术交流3:1031974172
USB2.0物理层的电信号





