USB集线器中断位图和下游设备的枚举
2026-04-23
本文链接为:http://www.usbzh.com/article/detail-1629.html ,欢迎转载,转载请附上本文链接。
USB集线器中断位图
当集线器检测到设备连接事件时,它通过中断端点上报的数据是一个位图(Bitmap)。每次上报的数据固定为1字节
- 主机轮询:主机驱动程序会定期向集线器的中断端点发送 IN令牌包,以查询状态变化。
- 集线器响应:
- 无事件时:如果自上次查询后没有任何状态变化,集线器会返回一个 NAK(否定应答),表示“没有新数据”。
- 有事件时:当有设备连接时,集线器会将对应的端口变化位置为1,并将这1字节的位图数据返回给主机。
- 示例解读:
- 假设连接在端口 1上的设备被拔掉了。集线器在收到主机的 IN 令牌后,会返回字节 0b00000010(十六进制 0x02)。主机解析后发现 Bit 1 = 1,就知道端口 1发生了状态变化。
- 后续动作:主机收到状态变化报告后,会通过默认控制管道(Endpoint 0)发送 GetPortStatus 请求来查询具体端口的详细状态,以确定是连接、断开还是其他事件。
| 位 (Bit) | 功能 (Function) | 值 (Value) | 含义 |
|---|---|---|---|
| 0 | 集线器状态变化 (Hub Status Change) |
0 | 集线器自身状态无变化 |
| 1 | 集线器自身状态发生变化(如本地电源状态改变) | ||
| 1 | 端口 1 状态变化 (Port 1 Status Change) |
0 | 端口 1 状态无变化 |
| 1 | 端口 1 状态发生变化(如设备连接/断开) | ||
| 2 | 端口 2 状态变化 (Port 2 Status Change) |
0 | 端口 2 状态无变化 |
| 1 | 端口 2 状态发生变化 | ||
| 3 | 端口 3 状态变化 (Port 3 Status Change) |
0 | 端口 3 状态无变化 |
| 1 | 端口 3 状态发生变化 | ||
| 4 | 端口 4 状态变化 (Port 4 Status Change) |
0 | 端口 4 状态无变化 |
| 1 | 端口 4 状态发生变化 | ||
| 5-7 | 保留 (Reserved) |
0 | 必须为 0 |
枚举过程
集线器设备类命令用于操作其下行端口的状态。
当设备连接时,集线器检测到设备连接事件,并通过状态变化中断端点上报。
主机将接受该状态变化报告,并在该端口上请求 SetPortFeature(PORT_RESET)。作为总线复位序列的一部分,集线器的端口硬件会执行速度检测。
| 步骤 | 动作 |
|---|---|
| 1 | 设备连接,集线器检测到事件并通过中断端点上报 |
| 2 | 主机发送 SetPortFeature(PORT_RESET) 复位端口 |
| 3 | 复位序列中,集线器硬件执行速度检测 |
| 4 | 主机通过 Get_Status(PORT) 获取端口状态,判断设备速度 |
| 5 | 设备断开时,端口上报状态变化,并重新连接到高速中继器,等待下次连接 |
- 主机调用的 Get_Status(PORT) 请求对于工作在高速模式的下行端口,会返回 “非 PORT_LOW_SPEED=0 且 PORT_HIGH_SPEED=1” 的指示。
- Get_Status(PORT) 对于工作在低速模式的下行端口,会报告 “PORT_LOW_SPEED”。
- Get_Status(PORT) 对于工作在全速模式的下行端口,会报告 “非 PORT_LOW_SPEED 且非 PORT_HIGH_SPEED”。
| 设备速度 | PORT_LOW_SPEED | PORT_HIGH_SPEED |
|---|---|---|
| 高速 | 0 | 1 |
| 低速 | 1 | 0 |
| 全速 | 0 | 0 |
详见:USB集线器GetPortStatushttps://www.usbzh.com/article/detail-1162.html
当设备从端口断开时,该端口通过状态变化端点报告状态变化,并且端口将重新连接到高速中继器。此时,整个过程准备就绪,可以在下一次检测到设备连接时重复执行。
本文链接为:http://www.usbzh.com/article/detail-1629.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
USB2.0集线器HUB





