USB 枚举详细过程 在计算机系统中,USB(Universal Serial Bus)是一种常用的外设接口标准。USB 枚举过程是指当一个 USB 设备插入到主机的 USB 端口时,主机如何检测、识别和配置该设备的过程。本文将详细描述 USB 枚举的详细流程,并以实例说明每个步骤的详细过程。 step 1:设备插入 当用户将一个 USB 设备插入到主机的 USB 端口时,主机为端口供电,设备此时处于上电状态。 step 2:主机检测设备 主机检测到设备的插入,并对设备进行初步识别。 step 3:集线器报告事件 集线器使用中断通道将事件报告给主机,通知主机有一个新设备插入。 step 4:主机发送 Get_Port_Status 请求 主机发送 Get_Port_Status 请求,以获取更多的设备信息。 step 5:集线器检测设备速度 集线器检测设备是低速运行还是高速运行,并将此信息送给主机,这是对 Get_Port_Status 请求的响应。 step 6:主机发送 Set_Port_Feature 请求 主机发送 Set_Port_Feature 请求给集线器,要求它复位端口。 step 7:集线器对设备复位 集线器对设备复位。 step 8:主机使用 Chirp K 信号 主机使用 Chirp K 信号来了解全速设备是否支持高速运行。 step 9:主机发送 Get_Port_Status 请求 主机发送另一个 Get_Port_Status 请求,确定设备是否已经从复位状态退出。 step 10:设备准备好 设备此时处于缺省状态,且已准备好在零端点通过缺省通道响应主机控制传输。缺省地址为 00h,设备能从总线获取高达 100mA 的电流。 step 11:主机发送 Get_Descriptor 请求 主机发送 Get_Descriptor 请求,以便确定最大数据包大小。设备描述符的八个字节是 bMaxPacketSize。 step 12:主机分配地址 通过发送 Set_Address 请求,主机分配地址,设备此时处于地址状态。 step 13:主机发送 Get_Descriptor 请求 主机发送 Get_Descriptor 请求,以获取更多的设备信息。主机通过发送描述符响应设备请求,随后发送全部的次级描述符。 step 14:主机分配驱动程序 主机分配并加载设备驱动程序。 step 15:主机选择配置 通过发送 Set_Configuration 请求,主机的设备驱动程序选择一个有效配置,设备此时处于配置状态。 step 16:主机为复合设备接口分配驱动程序 主机为复合设备接口分配驱动程序。 在整个 USB 枚举过程中,主机和设备之间的通信是通过中断通道和控制传输来实现的。USB 枚举过程的每个步骤都是紧密相连的,任何一步骤的错误都可能导致整个枚举过程的失败。 此外,USB 枚举过程中也存在一些特殊情况,例如,集线器检测到有过流现象,或者主机要求集线器关闭电源,USB 总线将切断设备供电电源。在这种情况下,设备与主机无法通信,但设备处于连接状态。如果在 3 毫秒内设备在总线上未见任何动作,则它将进入挂起状态,在挂起状态设备消耗的总线电能最少。 USB 枚举过程是 USB 设备连接到主机时的必经过程,它确保了设备的正确识别和配置,从而实现了设备的正常工作。
- 粉丝: 1
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- java源码资源JAVA+JSP的聊天室
- java源码资源Java+ajax写的登录实例
- 【java毕业设计】网上招投标系统源码(ssm+mysql+说明文档).zip
- [风河VxWorks].TORNADO.v2.2 for pentium
- 【java毕业设计】实验室课程管理系统源码(ssm+mysql+说明文档+LW).zip
- 数据同步的艺术:数据库同步策略与实践
- java源码资源Java 高考信息管理系统 SQL数据库
- (源码)基于Qt框架的在线题库管理系统.zip
- java源码资源Java 电梯模拟程序 v2.0
- 【java毕业设计】平面设计课程在线学习平台系统源码(ssm+mysql+说明文档+LW).zip