当USB主机检查到USB设备插入后,就要对设备进行枚举了
1.确认是否是正常的可使用的USB
2.设置地址
3.获取设备描述符
4.配置描述符
USB枚举主要运用了控制传输
1.建立过程
2.可选数据过程
3状态过程
建立过程 都是由USB主机发起的。它起始于一个SETUP令牌包
SETUP+DATA0
SYNC SETUP ADDR ENDP CRC5 EOP
1 0XB4 0 0 0X08 01
SYNC PID DATA ......... CRC16 EOP
1 0X80 0X06 0X00 0X01 0X00 0X40 0X00
如果是控制传输 那么数据过程就是输入数据;如果是控制写 那么数据是输出数据
状态过程传输防线与数据方向正好相反
控制 写 SETUP OUT1 OUT0 ...... IN
控制读 SETUP IN IN IN IN OUT
无数据 SETUP IN
枚举过程详解
1.确认是否是正常的可使用的USB
USB插入后首先对设备进行复位,设备总线复位后其地址为 0 主机和设备便通过地址0进行通信
USB主机往地址0的设备端点0发送一个设备描述符请求命令(如上的数据),设备接收到数据后,按照主机请求返回数据(改数据的长度最小为8字节,)
USB主机接收到数据后,对数据进行解析判断 然后返回一个0长度的确认数据包
2 设置地址
主机给设备发送一个设备地址数据包,设备地址在建立过程的数据包 所以其没有数据过程,
设备给主机返回一个0长度的状态数据包
主机返回一个ACK
设备启用新的地址
3 获得设备描述符
主机用新的地址获得设备的描述符,设备描述符大小为18字节,如果端点0最大包长度小于18字节,那么就需要请求多次数据输入(发送多个IN令牌)
4获得设备配置描述符
同上。