USB2.0集线器HUB
+ -

USB集线器中断位图和下游设备的枚举

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

USB集线器中断位图

集线器检测到设备连接事件时,它通过中断端点上报的数据是一个位图(Bitmap)。每次上报的数据固定为1字节

  1. 主机轮询:主机驱动程序会定期向集线器中断端点发送 IN令牌包,以查询状态变化。
  2. 集线器响应
    • 无事件时:如果自上次查询后没有任何状态变化,集线器会返回一个 NAK(否定应答),表示“没有新数据”。
    • 有事件时:当有设备连接时,集线器会将对应的端口变化位置为1,并将这1字节的位图数据返回给主机。
  3. 示例解读
    • 假设连接在端口 1上的设备被拔掉了。集线器在收到主机的 IN 令牌后,会返回字节 0b00000010(十六进制 0x02)。主机解析后发现 Bit 1 = 1,就知道端口 1发生了状态变化。
  4. 后续动作:主机收到状态变化报告后,会通过默认控制管道(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

0 篇笔记 写笔记

Windows下枚举系统中所有HID设备
Windows下对任何设备,文件的打开都是通过CreateFile来实现的,不过要打开一个设备得首先知道设备或文件名。由上节可知道,对于HID设备,都会注册一个接口类型为{2ACCFE60-C130-11D2-B082-00A0C91EFB8B}的GUID。我们可以通过Setup系列函数枚举出系统中......
USB 枚举/断开过程
USB设备枚举一般会经过插入、供电、初始化、分配地址,配置,获取设备描述符、获取配置描述符、获取字符串描述符和配置设备这么几个过程。各过程的状态如下表:USB设备的枚举过程USB主机检测到USB设备插入后,就要对设备进行枚举了。枚举的作用就是从设备是那个读取一些信息,知道设备是什么样的设备,然后......
USB设备的枚举过程分析
USB协议定义了设备的6种状态,仅在枚举过程种,设备就经历了4个状态的迁移:上电状态(Powered),默认状态(Default),地址状态(Address)和配置状态(Configured)(其他两种是连接状态和挂起状态(Suspend))详情可见:http://www.usbzh.com/art......
Windows下USB设备的枚举过程分析
1.用户把USB设备插入USB端口或给系统启动时设备上电这里的USB端口指的是主机下的根hub或主机下行端口上的hub端口。Hub给端口供电,连接着的设备处于上电状态。2.Hub监测它各个端口数据线上(D+/D-)的电压在hub端,数据线D+和D-都有一个阻值在14.25k到24.8k的下拉电阻Rp......
USB2.0设备枚举-主机设置设备地址事务
USB主机在首次获取设备描述符后,知道了设备的默认端点大小。后续一个重要的操作是对设备分配地址。对USB设备分配地址是通过标准请求SetAddress来完成后。其具体的过程如下图所示:SetAddress包括2个事务。第一个事务是对主机设置地址,第二个事务是主机对设备返加一个0字节的数据包,用于确......
USB2.0设备枚举-获取设备描述符事务
USB设备与主机进行数据传输或进行设备配置时,有一些常见的术语如事务,令牌,包等。USB设备在枚举过程中有2次获取设备描述符的过程,这里分别标识为首次获取设备描述符和分配地址后的获取描述符。两次获取描述符的过程基本类似,惟一的区别是首次首次获取描述符由于设备尚未分配地址,故使用地址0与主机进行通......
USB3.2超高速的设备总线枚举
USB3.2超高速定义了7种设备状态,比以往多了一个错误状态。USB的设备状态图代表着从USB设备的状态转换过程。要进行状态转换,当然必须是先将USB设备插入到USB接口中,这个USB接口可以是USB集线接口,也可以是根集线器的接口。当USB设备插入USB接口后,USB设备进入Attached状态。......
USB HID键盘设备树及设备枚举过程分析
今天在本站USB中文网微信技术交流群有一个同学在问关于HID设备的报表描述符的东东。但是在问的过程中发现一个很严重的问题,那就是它的它设备是一个复合设备,导致设备树比较复杂,关于报表描述符与接口描述符等之间的相关对应关系不是很清楚。为此,本人手中刚好有一个本人认为USB HID设备中相对比较复杂的设......
USB设备的调试笔记-奇怪枚举失败问题
自己搞了一个USB 触摸屏的驱动,通过对系统的USB触摸屏设备进行更改,这样可以在自己的驱动中过滤来自触摸屏的数据。在不加自定义驱动的情况下,设备管理器树关系如下:USB输入设备USB触摸屏设备而加上自己的设备驱动后,设备管理器树关系如下:自己的驱动程序USB输入设备USB触摸屏设备......
Windows10下开发虚拟USB鼠标之枚举子设备失败(STATUS_DEVICE_DATA_ERROR)
之前发过一篇文章:Win10使用虚拟USB鼠标实现自动挂机测试功能(文章地址:http://www.usbzh.com/article/detail-476.html ) 使用的是虚拟驱动实现的一个虚拟USB鼠标,实现了产品的自动测试功能。生成的设备在设备管理器中如下:但在开发过程中,并不是一帆......
U盘枚举失败-该设备无法启动(GET_MAX_LUN请求)
群里有人用STM32搞了一个U盘,但是U盘在插入电脑后在设备管理器是枚举失败。我让他看一下设备状态:又是熟悉的错误码10,表示设备启动失败。设备的启动失败,一般在设备获取描述符获取之后,初始会失败,我之前在弄USB虚拟鼠标的时候也遇到此类情况。不过由于这个设备是U盘,本人还没有研究USB存储协议,只......
使用SetupApi函数通过GUID枚举系统中所有关联设备
Windows的设备在驱动中大部分都会IoSetRegisterInterface,这其中一个重要的参数是GUID,这样系统会根据这个GUID给设备创建一个symbolicname,这个名字在应用层可以通过CreateFile打开。这里分享一个在应用层通过SetuApi枚举该类型GUID下的所有设备......
USB集线器HUB的枚举过程及集线器状态
USB集线器和其他USB设备一样,都需要在上电时进行配置。在USB协议中,使用默认的端0点。进行上电初期的通信。USB集线器除了配置其自身外,还需要对下行端口连接的其他USB设备进行识别。USB集线器HUB枚举过程USB集线器的上电配置过程如下:USB集线器连接到USB主机的根集线器上。USB......
USBCCGP 复合USB设备的枚举
当新的 USB 设备连接到主机计算机时,USB 总线驱动程序创建设备的物理设备对象 (PDO),并生成报告新 PDO 的即插即用事件。 操作系统然后,查询的硬件 Id 与 PDO 相关联的总线驱动程序。对于所有 USB 设备、 USB 总线驱动程序报告设备 ID具有以下格式:USBVID_xx......
USBCCGP 关联接口功能设备枚举
从上节可知,所有的功能设备都存储在FDO_DEVICE_EXTENSION中的FunctionDescriptor中的,而FunctionDescriptorCount成员记录着子功能数量。typedef struct _USBC_FUNCTION_DESCRIPTOR{ // The 0......
关注公众号
  • HID人机交互
  • Linux&USB
  • UAC音频
  • CDC
  • TYPE-C
  • USB规范
  • USB大容量存储
  • USB百科
  • USB周边
  • UVC摄像头
  • Windows系统USB
  • 音视频博客
  • 取消
    感谢您的支持,我会继续努力的!
    扫码支持
    扫码打赏,你说多少就多少

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

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