USB 集线器端口状态处理方法
2026-04-23
本文链接为:http://www.usbzh.com/article/detail-1630.html ,欢迎转载,转载请附上本文链接。
USB 集线器端口状态处理方法的,用于描述系统软件如何处理来自 USB 集线器的端口状态变化(如设备插拔、复位、过流等)。
流程分析
开始
系统软件请求中断管道(Interrupt Pipe)通知状态变化信息。Hub NAKs 状态变化 IN 令牌
如果当前没有状态变化数据,Hub 会回复 NAK。
→ 判断是否有变化数据可用:- No:回到开始继续请求
- Yes:继续
中断管道返回 Hub 和端口状态变化位图
变化位图告知系统:Hub 本身或哪些端口的状态发生了变化。中断管道通知被清除
一次通知完成。系统软件读取 Hub 或端口状态(针对受影响的端口)
通过标准 Hub 类请求读取具体状态。判断是否有任何状态改变
- Yes:
- 累计变化信息
- 系统软件清除对应的变化状态(写入清除命令)
- No:直接跳到处理累计的变化信息
- Yes:
系统软件处理累计的变化信息
根据变化类型执行相应动作(如枚举新设备、处理断开、过流保护等)。重新初始化中断管道(为状态变化端点)
为下一次中断通知做好准备。回到开始
循环监测后续状态变化。
关键点总结
- 中断管道用于 Hub 向主机异步通知状态变化。
- NAK 机制避免无效查询,提高效率。
- 读取后必须清除变化状态,否则不会产生新通知。
- 这是一个轮询 + 异步通知结合的模型,主机主动发起 IN 事务,Hub 在有数据时响应。
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
Windows下USB驱动基础知识





