USB标准设备请求是用来完成USB设备枚举的命令。USB设备必须对标准设备请求做出响应,不管该设备是否已经被分配了一个默认的地址或该设备目前正在配置。所有的标准请求都是使用默认端点(0)来传输的。
USB 设备请求格式:
偏移值 | 字段名 | 字段长度 | 字段取值 | 说明 |
0 | 设 备 请 求 类 型 | 1 | 位图 | 请求特性: D7:数据传输方向 0:主机到设备 1:设备到主机 D6,D5:类型 0:标准 1:类型 2:厂商 3:保留 D4D3D2D1D0: 0:设备 1:接口 2:端点 3:其它 4…31:保留 |
1 | 设备请求 | 1 | 数值 | USB 设备请求 |
2 | 值 | 2 | 值 | 根据不同请求,以字节为单位来定义 |
4 | 索引 | 2 | 字段编号索引 | 根据不同请求,以字节为单位来定义 |
6 | 长度 | 2 | 计数 | 如果传输一组数据,指出要传输数据的字节数 |
USB 标准设备请求:
请求类型 | 设备请求 | 值(2B) | 索 引(2B) | 长度 | 数据 |
1000 0000B 1000 0001B 1000 0010B | GetStatus(00H) | 0 | 设备 接口 端点 | 2 | 设备、接 口或端点 状态 |
0000 0000B 0000 0001B 0000 0010B | Clear Feature(01H) | 特殊选择符 | 设备 接口 端点 | 0 | 无 |
1000 0000B 1000 0001B 1000 0010B | Set Featrue(03H) | 特殊选择符 | 设备 接口 端点 | 0 | 无 |
0000 0000B | Set Address(05H) | 设备地址 | 0 | 0 | 无 |
1000 0000B | Get Descriptor(06H) | 描述符的类 型和索引 | 0 或 语言 ID | 描 述 符长度 | 描述符 |
0000 0000B | Set Descriptor(07H) | 描述符的类 型和索引 | 0 或 语言 ID | 描 述 符长度 | 描述符 |
1000 0000B | Get Configuratipon(08H) | 0 | 0 | 1 | 配置值 |
0000 0000B | Set Configuratipon(09H) | 配置值 | 0 | 0 | 无 |
1000 0000B | Get Interface(0AH) | 0 | 接口 | 1 | 可选的接口 |
0000 0000B | Set Interface(0BH) | 可选配置 | 接口 | 0 | 无 |
1000 0010B | Synch Frame(0CH) | 0 | 端点 | 2 | 帧标号 |
描述符类型
描述符类型 | 数值 |
设备 | 1 |
配置 | 2 |
字符串 | 3 |
接口 | 4 |
端点 | 5 |
特殊选择符
特殊选择符名称 | 接收方 | 数值 |
设备远程唤醒 | 设备 | 1 |
禁止端点 | 端点 | 0 |
转载于:https://blog.51cto.com/lancelot/269441