U SB 枚举步骤 USB 协议定义了设备的 6 种状态,仅在枚举过程种,设备就经历了 4 个状态的迁移:上电状态(Pow ered),默认状态(Default),地址状态(Address)和配置状态(Configured)(其他两种是连接状态(Attached)和挂起状态(Suspend))
Attached 和 Pow ered 状态不难理解:当一个设备被正确插入到主机的 USB 接口时,就处于Attached(连接)的状态
设备连接好了,USB 主机识别了设备,同时没有对设备进行请求,USB 设备就处于 Suspended(挂起)状态
下面步骤是 Window s 系统下典型的枚举过程,但是固件不能依此就认为所有的枚举操作都是按照这样一个流程行进
设备必须在任何时候都能正确处理所有的主机请求
用户把 USB 设备插入 USB 端口或给系统启动时设备上电 这里指的 USB 端口指的是主机下的根 hub 或主机下行端口上的 hub 端口
Hub 给端口供电,连接着的设备处于上电状态
Hub 监测它各个端口数据线上(D+/D-)的电压 在 hub 端,数据线 D+和 D-都有一个阻值在 14
25k 到 24
8k 的下拉电阻 Rpd,而在设备端,D+(全速,高速)和 D-(低速)上有一个 1
5k 的上拉电阻 Rpu
当设备插入到 hub 端口时,有上拉电阻的一根数据线被拉高到幅值的 90%的电压(大致是 3V)
hub 检测到它的一根数据线是高电平,就认为是有设备插入,并能根据是 D+还是 D-被拉高来判断到底是什么设备(全速/低速)插入端口(全速、高速设备的区分在后面的章节中描述)
检测到设备后,hub 继续给设备供电,但并不急于与设备进行 USB 传输
Host 了解连接的设备 每个 hub 利用它自己的中断端点向主机报告它的各个端口的