USB2.0数据传输主要是D+/D-两根线;USB接口的中间两个数据线要比外面两根电源要稍短一些,这是为了热拔插而设计的;因为总是要先断数据再断USB电源。
USB的识别即是PC对USB描述符的获取。一个USB只有一个设备描述符,一个设备描述符有多个配置描述符(一个设备有多种配置),一个配置描述符有多个接口描述符,一个接口描述符有多个端点描述符。
获取各种描述符的过程叫做枚举过程;传输的方式为控制传输:建立过程、可选的数据过程、状态过程。
枚举分为四个大步聚:
1.获取设备描述符
主机检测到USB设备插入后先对设备复位;USB设备复位后地址为0,主机通过0地址和这个USB设备通信。主机向地址为0的设备的端点0发送获取设备描述符的标准请求。设备把设备描述符的返回给主机。主机收到设备描述符的数据包后确认无误,发送一个0长度的确认数据包。接下来进入设置地址阶段。
2.设置地址
主机向从机地址0的设备的端点0发出 个设置地址的请求(控建立过程)。建立过程之后直接进入状态过程,没有数据传输。设备等待主机请求状态返回(输入令牌包);收到输入令牌包后,设备返回0长度的状态数据包。主机确认该状态包收到后,就会发送一个应答包ACK给设备,设备收到ACK后就启用新的地址。
3.再次获取设备描述符
从此主机不再用0地址来通信,而是用的新地址,这次需要获取全部的18字节的设备描述符。
4.主机获取配置描述符
主机获取配置描述符,如果有字符串描述符,还要获取字符串描述符。如果像HID设备有报告描述符,还要单独获取。
数据包分为四种:令牌包、数据包、握手包、特殊包
传输分为四种类型:批量传输、等时传输、中断传输、控制传输