USB3获取配置描述符传输抓包
2022-03-02
本文链接为:http://www.usbzh.com/article/detail-817.html ,欢迎转载,转载请附上本文链接。

本条是枚举流程读取配置描述符首包,依旧标准三段式:SETUP → DATA-IN → STATUS,通信地址ADDR=1、EP0;Right=主机→设备,Left=设备→主机,DP=数据报文、TP=链路握手报文。
一、SETUP阶段(下发读取配置描述符指令)
- 97551(Host→Dev DP)
DataLen=8,Setup命令:80 06 02 00 00 00 09 00
参数释义:bRequest=06(GET_DESCRIPTOR)、wValue=0x0200(CONFIGURATION配置描述符、索引0)、wLength=0x09=9Byte,主机只读取配置描述符头部9字节。 - 97554(Dev→Host ACK TP)
PP=Not Pnd(P=0)普通确认ACK,设备成功收下SETUP指令,SETUP阶段结束;间隔249.792us为设备指令解析耗时。
二、DATA-IN阶段(设备回传9字节配置描述符)
- 97621(Host→Dev ACK TP)
关键标识:PP=Pnd(P=1)、NumP=1、ADDR=1 ENDP=0
USB3.0等效IN令牌:链路确认SETUP传输无误,事务层通知设备「主机缓存就绪,请上传1包共9字节配置描述符」。 - 97624(Dev→Host DP)
DataLen=9,设备上传配置描述符前9字节,数据长度严格匹配wLength=9;内容为配置描述符头部基础信息(总长、接口数、配置ID等)。 - 97627(Host→Dev ACK TP)
PP=Not Pnd(P=0)常规接收确认ACK,主机确认9字节配置描述符完整接收,DATA-IN阶段结束。
时序逻辑:
P=1主机ACK(申请IN数据) → 设备DP回传配置数据 → P=0主机ACK(确认收妥)
三、STATUS状态阶段
- 97691(Host→Dev Status TP)
主机发起IN方向状态查询,校验本次读配置描述符指令执行状态。 - 97694(Dev→Host ACK TP)
无DP数据包(0长度空应答),设备ACK代表:GET_CONFIG_DESCRIPTOR执行成功,整条控制传输完成。
补充枚举逻辑
主机先读配置描述符头部9字节,从描述符首2字节读出完整配置总长度,后续会再次下发GET_DESCRIPTOR,读取全量配置(含接口、端点子描述符)。
| 包号 | Pending位 | 功能 |
|---|---|---|
| 97621 | P=1 | 等效IN令牌,主机索要IN数据 |
| 97627 | P=0 | 数据接收完毕,常规链路确认ACK |
第二次获取
由于USB的端点0长度为512字节,足够大,所以对于大部的配置描述符在第二次可以一次性获取。
USB3总线分析仪传输抓包分析





