当前位置 博文首页 > dadalaohua的博客:【USB笔记】 标准请求 设置接口Set Interface

    dadalaohua的博客:【USB笔记】 标准请求 设置接口Set Interface

    作者:[db:作者] 时间:2021-07-27 17:46

    USB笔记 标准请求 设置接口 Set Interface

    格式

    bmRequestTypebRequestwValuewIndexwLengthData
    00000001BSET_INTERFACEAlternate SettingInterfaceZeroNone

    功能

    这个请求用于主机为指定的接口选择替代设置(alternate setting)。

    bmRequestType

    bmRequestType00000001B
    ??bmRequestType.Recipient0b00001(Interface)
    ??bmRequestType.Type0b00(Standard)
    ??bmRequestType.Direction0b0(Host-to-Device)

    接收端:接口(Interface)

    类型:标准(Standard)

    方向:主机到设备(Host-to-Device)

    bRequest

    SET_INTERFACE: 0x0b

    wValue

    选择的替代设置(alternate setting)。

    这里的值是接口描述符 (Interface Descriptor)中的bAlternateSetting字段。

    wIndex

    接口的编号。

    这里的接口号是接口描述符 (Interface Descriptor)中的bInterfaceNumber字段。

    wLength

    wLength字段固定为0x0000。

    如果wLength不为零,则无效,不指定设备的行为。

    Data

    无数据阶段(Data stage)。

    说明

    有些设备配置的接口具有互斥设置。该请求允许主机选择所需的替代设置(alternate setting)。如果设备只支持指定接口的默认设置,那么在请求的状态阶段(Status stage)可能会返回一个STALL事务包(STALL Transaction Packet)。这个请求不能用于更改配置的接口集合,如果需要更改则应使用SetConfiguration()请求代替。

    如果接口或替代设置(alternate setting)不存在,则设备将以请求错误来响应,返回STALL。

    如果wLength不为零,则不指定设备的行为。

    这个请求会将bulk, interrupt, isochronous 的data toggles重置为DATA0 (USB 2.0)、Sequence Numbers重置为零(Enhanced SuperSpeed) 和重置增强型超高速批量端点(Enhanced SuperSpeed bulk endpoints)的突发大小(burst size)。

    支持的状态

    支持配置状态(Configured state),具体如下:

    默认状态(Default state):未定义设备处于默认状态时接收到该请求时的设备行为。

    地址状态(Address state):设备应该响应请求错误。

    配置状态(Configured state):当设备处于配置状态时,这是一个有效的请求。

    示例

    Set Interface
    Setup packet
    Set Interface2

    [参考资料]

    Universal Serial Bus Specification Revision 2.0

    Universal Serial Bus 3.1 Specification

    Universal Serial Bus 3.2 Specification

    USB Complete, 5th Edition


    本文链接:https://blog.csdn.net/u012028275/article/details/112045449

    cs