USB2.0物理层的电信号
+ -

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 连接

  1. 设备插入,D− 被 1.5k 上拉
  2. 主机检测到:持续 J 状态(D+=0,D−=1)
  3. 持续时间 ≥ 2.5µs → 判定低速设备已连接

全速 FS 连接

  1. 设备插入,D+ 被 1.5k 上拉
  2. 主机检测到:持续 J 状态(D+=1,D−=0)
  3. 持续时间 ≥ 2.5µs → 判定全速设备已连接

高速 HS 连接(先FS后HS)

  1. 先以全速方式连接(D+上拉 → J)
  2. 主机发复位(SE0≥10ms)
  3. 复位结束瞬间,设备发Chirp K
  4. 主机回应Chirp 序列
  5. 双方确认 → 切换高速模式
  6. 高速模式下空闲为 SE0

2. 主机发送复位(Reset)

无论 LS/FS/HS,复位信号都是:

持续 SE0 ≥ 10ms

  • 复位期间:D+=0,D−=0
  • 复位结束:主机释放 SE0
  • 释放后:
    • LS/FS → 回到 J 空闲态
    • HS → 进入高速模式,空闲为 SE0

3. 设备断开(Detach)

低速 / 全速断开判断(最核心)

  1. 设备被拔掉
  2. 1.5k 上拉消失
  3. 主机 15k 下拉拉回两条线 → 变为 SE0
  4. SE0 持续 ≥ 2.0~2.5µs
  5. 主机判定:设备已断开

一句话:
连接是 J,断开是 SE0 并保持 2.5µs

高速 HS 断开判断

  1. 设备断开 → 总线端接电阻消失
  2. 主机发送数据包产生强反射
  3. 差分幅度超过 625mV
  4. 判定高速断开,并回退到 FS 模式检测 SE0

设备端自己判断断开

设备一般不靠 D+/D−,而是:

  1. 检测 VBUS 掉电 < 4.0V
  2. 或长时间SOF、无总线活动
  3. 然后低速、全速设备主动释放 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. 最关键的三句总结

  1. 连接 = J 状态持续
  2. 复位 = SE0 持续 ≥10ms
  3. 断开 = 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

本文链接为:http://www.usbzh.com/article/detail-1609.html ,欢迎转载,转载请附上本文链接。

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

0 篇笔记 写笔记

USB 枚举/断开过程
USB设备枚举一般会经过插入、供电、初始化、分配地址,配置,获取设备描述符、获取配置描述符、获取字符串描述符和配置设备这么几个过程。各过程的状态如下表:USB设备的枚举过程USB主机检测到USB设备插入后,就要对设备进行枚举了。枚举的作用就是从设备是那个读取一些信息,知道设备是什么样的设备,然后......
USB设备低速,高速硬件检测机制及断开过程
没有设备连接到主机时:D+和D-数据线上的下拉电阻起作用,使得两者都在低电平;主机端看来就是个SE0状态,同样地,当数据线上的SE0状态持续一断时间后,就被主机认为是断开状态。设备连接到主机时:当主机检到某一个数据线电平拉高并保持了一段时间,就认为有设备连上来了。 主机必需在驱动SE0状态以复位设备......
BOT MASS_STORAGE_RESET
Bulk-Only Mass Storage Reset类特定请求是USB大容量存储设备独有的。 该特定类请求的功能用于复位大容量存储设备和与之关联的接口。通知设备接下来的批量端点输出数据为命令块包(CBW)。由于该请求是控制请求,所以是通过端点0发送的。在设备完成该请求即复位之前,设备应......
USB2.0设备断开状态的检测
相对于USB设备的连接检测,USB设备断开的检测也很重要,也更加的隐晦。USB设备断开的检测不仅包含USB主机检测到其与设备的断开,也包含USB设备检测到其与主机的连接断开。对于USB主机来说,如果不能正确的识别设备的断开,从而无法回收已经断开的设备使用的资源,将会导致资源的浪费,这种资源的浪费......
TYPE-C PD供电协议常用功能序列(接口数据包开始SOP,线缆数据包开始SOP''、硬件复位、线缆复位
使用TYPE-C PD供电协议信号-4b5b编码对照表的序列组合,可以组成一些常用的功能序列。硬件复位hard Reset硬件复位信令是为了被物理层识别而发送的一组有序字节。硬复位信号顺序集定义为:三个RST-1 K代码,后跟一个RST-2 K代码。硬件复位的功能是对接口和线缆进行复位K......
USB高速基础知识
USB 2.0 中引入了对规范的高速添加,以响应 Firewire 的更高速度。由于 High Speed 是事后才添加的,并且必须在不影响性能的情况下保持兼容性,所以我们将保留对 High Speed 的描述,直到我们涵盖了原始规范的基础知识数据传输高速实现的数据速率为 480 Mb/s。这需要......
USB设备复位、挂起和恢复命令
USB主机除了在正常的操作期间发送到设备的控制命令外,主机还可以发出三种独特的信号条件:复位、挂起或恢复挂起的设备。设备复位RESET在枚举过程中,主机向设备发出复位信号。注意此USB 复位与硬件或上电复位不相同,是两个概念。USB 复位的目的是设置设备的软件状态,以便进行枚举。当 D- 和 D......
HID键盘鼠标复位报告描述符
0x05, 0x01, // USAGE_PAGE (Generic Desktop) 0x09, 0x02, // USAGE (Mouse) 0xa1, 0x01, ......
USB设备通过BUSHOUND抓包IRP被取消USTS状态为0xC0010000
通过BUSHOUND抓包内容为: 16.0 CTL 80 06 00 02 00 00 20 00 GET DESCRIPTOR 336us 16.0 32 IN 09 02 20 00 ......
Windows系统实现USB设备的拨出与重新插入
最近在搞USBHOUND,原理比较简单,但是涉及的东西还是比较多,这不,为了搞清楚URB之间的传递脉路,又开始进入了USBCCGP淅代码中。USBCCGP是Windows系统中关于USB比较重要的一个驱动,其实原了USB物理复合设备到逻辑设备的基本功能,其中有大量的关于USB相关处理请求,是值得我......
复位USB端口设备IOCTL_USB_HUB_CYCLE_PORT
在设备管理器中通过设备的实例ID查找到设备后,然后确定设备端口中,再根据设备端口号获取其父设备即USB集本器,打开集线器,发送IOCTL_USB_HUB_CYCLE_PORT 请求来复位集线器端口达到复位设备。IOCTL_USB_HUB_CYCLE_PORT在Vista和Windows 7下不支持......
通过软件层复位重启USB设备源代码
复位USB设备,这样USB设备会重新枚举加载void RestartDevice(char* strHardWareId){ HDEVINFO devs = INVALID_HANDLE_VALUE; devs = SetupDiGetClassDevs(NULL, NULL, ......
USBIP 复位集线器下游端口/IOCTL_INTERNAL_USB_RESET_PORT
向USB集线器下发的IOCTRL之一就是IOCTL_INTERNAL_USB_RESET_PORT。用于复位USB集线器的下游端口。static NTSTATUSstore_urbr_submit(PIRP irp, struct urb_req *urbr){... case IO......
USB集线器复位端口
USB集线器复位端口使用的IOCTL为IOCTL_INTERNAL_USB_RESET_PORT,即当需要复位USB集线器的某个端口时,只需要对该USB集线器下发该请求即可。复位端口对应的URB功能号为:USB_REQUEST_SET_FEATURE.对应的USB集线器类请求为:Requ......
Windows复位USB集线器HUB端口设备RestartUsbPort
本人描述了如何在 Windows 下使用IOCTL_USB_HUB_CYCLE_PORT 重新启动USB端口。具体过程为:通过给定的设备实例ID在 Windows设备管理中查找USB 备、确定使用的 USB 端口号、获取其父设备(其 USB 集线器)、打开集线器并执行 IOCTL_USB_HUB_C......
关注公众号
  • HID人机交互
  • Linux&USB
  • UAC音频
  • CDC
  • TYPE-C
  • USB规范
  • USB大容量存储
  • USB百科
  • USB周边
  • UVC摄像头
  • Windows系统USB
  • 音视频博客
  • 取消
    感谢您的支持,我会继续努力的!
    扫码支持
    扫码打赏,你说多少就多少

    打开支付宝扫一扫,即可进行扫码打赏哦

    您的支持,是我们前进的动力!