其他分享
首页 > 其他分享> > 9.2 通用usb设备操作

9.2 通用usb设备操作

作者:互联网

所有usb设备都支持一系列如下的通用操作:

  1. 热插拔
    主机在检测到设备时启用连接设备的集线器端口,这也具有重置设备的效果。复位USB设备有以下特点:
    响应默认USB地址
    未配置
    没有被挂起

  2. 地址分配
    当USB设备被连接时,主机负责为该设备分配一个唯一的地址。这是在主机重置设备,并且设备连接的集线器端口已经启用之后完成的。

  3. 配置
    USB设备必须配置后才能使用其功能。主机负责配置USB设备。主机通常从USB设备请求配置信息,以确定设备的功能。
    作为配置过程的一部分,主机设置设备配置,并在必要时为接口选择适当的备用设置。
    在单个配置中,一个设备可以支持多个接口。接口是一组相关的端点,它们向主机提供设备的单一特性或功能。用于与这组相关端点通信的协议,以及接口中每个端点的用途,可以作为设备类或特定于供应商的定义的一部分指定。
    此外,配置中的接口可能具有重新定义关联端点的数量或特征的替代设置。如果是这种情况,设备必须支持GetInterface()请求来报告指定接口的当前备用设置,以及SetInterface()请求来选择指定接口的备用设置。
    为了支持能够管理相关USB设备组的自适应设备驱动程序,设备和接口描述符包含类、子类和协议字段。这些字段用于识别USB设备提供的功能和用于与设备上的功能通信的协议。一个类代码被分配给一组相关的设备,它被描述为USB类规范的一部分。一类设备可以进一步细分为子类,并且,在一个类或子类中,协议代码可以定义主机软件如何与设备通信。

  4. 数据传输
    数据传输发生在usb设备端点和主机之间,存在四种方式。在不同的设置中,端点可能用于不同的传输类型。

  5. 远程唤醒
    USB设备在配置描述符中报告其支持远程唤醒的能力。如果一个设备支持远程唤醒,它也必须允许使用标准USB请求启用和禁用该能力。

  6. 请求处理
    除了SetAddress()请求,设备可以在设置完成后返回ACK后开始处理请求。

  7. 请求处理时间
    usb设备处理任何命令时间上限为5秒,但设备应该尽量在最短时间内完成请求。

  8. 恢复时间
    端口复位或恢复后,usb系统将提供一个10毫秒的恢复时间。在此期间,可忽略数据传输,但在之后必须接受数据。

  9. 设置地址处理
    恢复间隔后,如果设备收到SetAddress()请求,设备必须能够在50ms内完成该请求的处理,并成功完成该请求的状态阶段。在SetAddress()请求的情况下,当设备发送零长度的状态包或当设备看到响应状态阶段数据包的ACK时,状态阶段成功完成。

  10. 标准设备请求
    对于不需要数据阶段的标准设备请求,设备必须能够完成请求,并且能够在收到请求后的50毫秒内成功完成请求的状态阶段。这个限制适用于对设备、接口或端点的请求。于要求数据阶段传输到主机的标准设备请求,设备必须能够在收到请求的500毫秒内将第一个数据包返回给主机。对于后续的数据包(如果有的话),设备必须能够在成功完成前一个数据包的传输后500毫秒内返回它们。然后,设备必须能够在返回最后一个数据包后的50毫秒内成功完成状态阶段。
    对于要求数据阶段传输到设备的标准设备请求,适用5秒限制。这意味着,如果主机以设备可以接受的最大速率提供数据,设备必须能够接受来自主机的所有数据包,并成功地完成状态阶段。由主机引入的数据包之间的延迟增加了设备完成请求所允许的时间。

  11. 特殊类请求
    所有类特定的请求必须满足标准设备请求的时间限制。如果类别文件提供了豁免,豁免只能在逐项要求的基础上指定。类文档可能要求设备响应比本节中指定的更快。对于标准的和特定于类的请求,可能需要更快的响应。

  12. 速度相关的描述符
    hight-speed设备既可以以高速运行也可以以全速运行。在正常运行时不提供速度切换,除非更改配置。
    两个描述符允许具有高速能力的设备报告关于其他操作速度的配置信息。这两个描述符是(other_speed) device_qualifier描述符和other_speed_configuration描述符。
    具有高速能力的设备必须将其描述符的bcdUSB字段中的版本号设置为0200 h。这表明这些设备支持usb2.0定义的other_speed请求。描述符版本号小于0200H的设备如果收到了other_speed请求,应该会导致请求错误响应。

  13. 请求错误
    当设备接收到的请求不是为设备定义的,不适合设备的当前设置,或者值与请求不兼容时,则存在请求错误。设备通过返回STALL来表示没有能力处理这种请求。

参考:https://www.usb.org/

标签:通用,USB,主机,描述符,usb,设备,数据包,9.2,请求
来源: https://blog.csdn.net/weixin_44031074/article/details/115803547