5、标准的USB请求

5、USB Device Requests

所有的USB设备都会响应来自于主机默认控制管道的请求的,这些请求是使用控制传输发送的,请求和请求的参数在Setup packet包含,每个Setup packet都有8个字节.
5、标准的USB请求5、标准的USB请求
着重说一下wIndex和wLength,前面两个根据上表可以很容易理解.

  • wIndex

当bmRequestType的Recipient字段为接口或端点时,wIndex域用来表明是哪一个接口或端结。

图9-2显示了用于指定端点时的wIndex格式。
5、标准的USB请求Direction位(bit7)设置为零以指示具有指定端点编号的OUT端点,并指定一个以指示IN端点。 对于控制管道,请求应将Direction位设置为零,但设备可以接受Direction位的任一值。

图9-3显示了用于指定接口时的wIndex格式.
5、标准的USB请求

  • wLength

此字段指定在控制传输的第二阶段传输的数据的长度。数据传输的方向(主机到设备或设备到主机)由bmRequestType字段的方向位指示。如果该字段为零,则不存在数据传输阶段。
对于输入请求时,设备绝不能返回超出wLength值指示的数据的数据。但它可以返回的更少。
对于输出请求,wLength将始终指示主机要发送的确切数据量。如果主机发送的数据多于wLength中指定的数据,则设备行为未定义。

5.1 标准设备请求

USB设备必须响应标准设备请求,即使设备还没有被分配一个地址或没有被配置。
在USB2.0协议规范里面规定了如下的请求.
5、标准的USB请求

5.2 标准请求码(bRequest)

5、标准的USB请求

5.3 描述符类型

5、标准的USB请求

5.4 常用请求
  • GET_DESCRIPTOR
    5、标准的USB请求

    1. wValue见表9-5
    2. wIndex为0时表示其他描述符,为语言ID时,表示为字符串描述符
    3. wLength表示返回的数据长度
  • SET_ADDRESS
    5、标准的USB请求

  • SET_CONFIGUARTION
    5、标准的USB请求