USB枚举

来源:互联网 发布:c语言比较字符串大小 编辑:程序博客网 时间:2024/05/16 04:51

USB枚举过程

为什么要枚举 ?

枚举就是从设备读取一些信息,知道设备是什么样的设备,如何进行通信,这样主机就可以根据这些信息来加载合适的驱动程序,完成主从通讯。

控制传输

1.USB设备的枚举过程中都是使用控制传输。
2.控制传输分为三个过程:
①建立过程。
②可选的数据过程。
③状态过程。
建立(Setup)过程都是由USB主机发起,它开始于一个Setup令牌包,后面紧跟一个DATA0包。如果是控制输入传输,那么数据过程就是输入数据;如果是控制输出传输,那么数据过程是输出数据。如果在设置过程中,指定了数据长度为0,则没有数据过程。数据过程之后是状态过程。状态过程刚好与数据过程的数据传输方向相反:
如果是控制输入传输,则状态过程是一个输出数据包。 //1 主机发setup包 2.设备输入数据过程 3.主机发送状态过程
如果是控制输出传输,则状态过程是一个输入数据包。//1 主机发setup包 2.主机输出数据过程 3.从机发送状态过程
状态阶段用来确认所有的数据都已经正确传输。

枚举过程

1.USB主机检测到USB设备插入后,就会先对设备复位。
2.USB主机就会对地址为0的设备发送获取设备描述符的标准请求。
3.然后主机再对设备复位一下,接下来就会进入到设置地址阶段,为设备分配一个地址。
4.主机通过新地址再次获取设备描述符。
5.主机通过新地址获取配置描述符。
6.根据里面的配置集合总长度,主机通过新地址再获取配置集合。配置集合包括配置描述符,接口描述符,端点描符等等。

总之是主机请求什么,你的程序就响应什么。

0 0