做游戏手柄的方法,游戏神器制作手柄

首页 > 生活 > 作者:YD1662024-11-28 05:44:19

在对USB设备的状态进行初步了解之后,我们来看看详细的USB总线枚举的全部过程,如图10.4所示。

做游戏手柄的方法,游戏神器制作手柄(9)

图10.4 USB总线枚举的全部过程

主机端的USB集线器监视着每个下行端口的信号线电压,当USB设备连接主机时会被检测到,此时USB设备处于供电状态,然后主机会对USB设备进行复位操作,并通过发送命令来验证是否完成设备复位(成功复位后的USB设备默认地址为0,即处于默认状态)。如果设备支持全速模式,则其在复位期间还会检测设备是否支持高速模式(涉及比较复杂的协议,现在知道有这回事就可以了,后续还会详细讨论)。

紧接着,主机第一次发送获取设备描述符命令,设备描述符提供关于USB设备的多种信息(共18个字节,后述),但第一次只会读取该描述符的前8个字节,用来获得设备端点0支持的最大数据包字节长度(第8个字节包括该信息)。

到目前为止,主机通过默认的地址0与设备进行通信(主机一次只能枚举一个USB设备,所以同一时刻只有一个USB设备使用默认地址),主机此时发送命令给为设备分配唯一的(非0)地址。设备收到该命令后保存分配的新地址,并且返回确认信息,此后主机与设备之间的通信都将使用新地址,USB设备也就进入了编址态。

主机随后再次(给已分配新地址的设备)发出获取设备描述符的命令获取完整的设备信息(18个字节)。由于USB设备还定义了一个或多个配置描述符(包括所属的接口、端点及其他描述符),主机紧接着再次或多次发出获取配置描述符命令,如果设备描述符中指定了描述厂商、产品和设备序列号等信息的字符串描述符索引(相当于清单10.2中的longhu数组中的“姓名”字段值),则主机同样会再次发出获取字符串描述符命令。

主机已经从所获取的多个描述符中充分知悉了关于USB设备的所有信息,然后开始为设备选择并加载合适的驱动程序。如果一切顺利,设备驱动程序就会接管原属于主机的控制权,并发送命令为设备选择合适的配置(进入已配置状态),USB枚举过程至止结束,设备可以正常使用了。

如果觉得USB总线枚举的过程有点复杂,那可以这么说:以上所述还只是简化描述。实际枚举过程还涉及底层握手信号的状态细节,现阶段的你只需要知道总枚举的总体流程就行了,后续我们还会深入探讨,现在亟须解决的问题是:配置、接口、端点到底是什么呢?它们对应的描述符又有什么关系呢?请参见后文。

,
上一页123末页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.