分类: 嵌入式
2017-02-24 17:05:10
原文地址:USB总线枚举过程 作者:luozhiyong131
USB总线枚举是指对USB总线上接入的USB设备进行识别和寻址操作。由于USB支持热插拔和即插即用,所以当一个USB设备接入USB或从USB上拆除时,主机必须使用总线枚举的过程来识别和管理必要的设备状态变化。并动态地对它进行配置。
当设备连接到主机时,按照以下顺序进行枚举:
1.连接了设备的HUB在HOST查询其状态改变端点时返回对应的bitmap,告知HOST某个PORT状态发生了改变。
2.主机向HUB查询该PORT的状态,得知有设备连接,并知道了该设备的基本特性。
3.主机等待(至少lOOmS)设备上电稳定,然后向HUB发送请求,复位并使能该PORT。
4.HUB执行PORT复位操作,复位完成后该PORT就使能了。现在设备进入SUdefault状态,可以从Vbus获取不超过lOOmA的电流。主机可以通过0地址与其通讯。
5.主机通过0地址向该设备发送get—device—descriptor标准请求,获取设备的描述符。
6.主机再次向HUB发送请求,复位该PORT。
7.主机通过标准请求set—address给设备分配地址。
8.主机通过新地址向设备发送get—device_descriptor标准请求,获取设备的描述符。
9.主机通过新地址向设备发送其他get—configuration请求,获取设备的配置描述符。
10.根据配置信息,主机选择合适配置,通过set—configuration请求对设备而进行配置。这时设备方可正常使用。
当USB设备被拆除时,集线器也会通知主机。拆除一个设备会使该设备所接入的端口被禁用。一旦收到了拆除指示,主机将立即更新它的本地拓扑结构信息。