Chapter 9 USB Device Framework 摘要1

usb2.0 规范

Revision 2.0

April 27, 2000

9.1 USB Device States

Visible Device States

usb 设备有可视和非可视状态,非可视状态只对设备可见,设备的可视状态如下

开始未连接到usb总线时设备没有任何状态。

连接到usb 总线,首先是Attached 状态,然后经过一定时间的稳定是powered 上电状态,上电之后总线给设备复位,进入Default默认状态,然后主机给设备一个总线上可用地址,进入Address可寻址状态,通过这个设备地址,主机配置设备,进入最终的Configured 已配置状态。

这其中任何阶段的如果总线发起suspend,设备进入Suspended状态。

Powered状态

不管是自供电还是总线供电,VBUS加电到设备才能称为进入Powered状态。

如果设备使用两种供电态,必须对齐两种状态的功耗max值,如果只支持一种状态,必须注意状态强行切换会导致的状态从配置,可寻址回退到上电状态。

完整上电时序参考(主机→设备)
  1. 主机端上电

    • 主机先给 VBUS(VCC)输出稳定 + 5V(误差 ±5%),此时 D+/D - 通过主机内置的 15kΩ 下拉电阻保持低电平;
    • 主机检测 VBUS 电压是否稳定,确认总线供电正常。
  2. 设备端响应上电

    • 设备检测到 VBUS 电压超过阈值(通常 > 4.75V),启动内部电源管理;
    • 设备根据自身速率(低速 / 全速 / 高速),在 D + 或 D - 上拉 1.5kΩ 电阻:
      • 全速 / 高速设备:D + 上拉 1.5kΩ → 主机检测到 D + 高电平,识别为全速设备(高速需后续复位协商);
      • 低速设备:D - 上拉 1.5kΩ → 主机检测到 D - 高电平,识别为低速设备;
    • 设备进入「上电状态(Powered)」,等待主机发起复位。

Default 状态

设备被reset操作后,进入该状态后,可以使用相应的速率模式和主机通信。

低速/全速模式由设备的终端电阻决定。

高速传输设备可以选择 reset使用的速率模式,在全速环境,使用全速的速率reset。

usb的复位实际时序参考

  • 主机将 D + 和 D - 同时拉低(≤0.3V),保持至少 10ms(复位时长);
  • 设备检测到 D+/D - 持续低电平≥2.5μs,判定为复位触发;
  • 复位结束后,主机释放 D+/D - 下拉,设备重新上拉 D+/D-,进入「默认状态(Default)」。

Address

设备被指定为一个总线唯一的地址,后续以这个设备地址和主机通信。当被suspend,设备也必须维持这个地址。

未被指定前,设备使用默认地址0 和主机进行通信。

Configured

设备在正常可以使用前,必须被正确的配置。配置一个设备到其他备选配置会导致设备的所有状态接口端点配置值,切换到默认状态。

Suspended

当设备挂起时,设备必须持续之前所有的状态和配置

Bus Enumeration

设备插入总线后

1 设备插入端口所在的hub通过一个状态变化管道 通知主机 一个reply回应。设备此时进入Powered状态。

2 主机通过查询hub 确认具体的变化

3 主机直到具体的端口插入一个新的设备,然后等待100ms完成,给设备加电且使稳定。主机发送一个端口使能和reset命令给这个端口。

4 主机对该端口执行reset 过程直到完成,此时设备进入Default 状态,可以从从总线的VBUS获取100ma的电流,所有内部寄存器和状态都被复位,切以默认地址0和主机通信。

5 主机给设备一个空闲总线地址,使设备进入Address状态

6 在设备接受唯一地址前,设备以0地址和主机通信,主机通过默认管道读取获得该管道的最大数据负载尺寸

7 主机读取设备的配置信息,从0到最后一个,这将花费数毫秒的时间

8 基于配置信息和设备如何被使用,主机选择一个配置给设备。设备进入Configured状态,所有配置端点进入描述的状态,设备或许可能获取选定配置描述符的描述VBUS 功耗,设备此时可以正常使用了。

当usb 设备被拔除,hub 发送一个notification给主机,禁止使能拔出设备的端口。主机收到信息,更新本地的拓扑信息。

9.2 Generic USB Device Operations

所有的usb设备支持共同的设置操作

Dynamic Attachment and Removal

usb 设备可以在任何时候被插入和拔除。hub 提供负责报告端口状态的任何变化 的插入点或者端口

主机使能hub 上设备插入的端口,端口也负责复位设备。复位后的usb设置具有一下特征:

对默认usb地址回应

没有被配置

没有被挂起

当设备从hub 端口删除,hub 禁止设备插入的端口,且提示主机拔除

Address Assignment

当一个usb 设置被插入,主机负责指定一个单独的地址给设备,这在设备被主机reset之后,且插入设备的hub端口被使能才会被实施。

Configuration

usb 设备必须在使用之前被配置。主机负责配置usb 设备。主机典型的从usb 设备请求配置信息以确定设备的性能。

正如部分配置过程,之际设置设备的配置,这里必不可少的为接口选择合适的替换设置。

在一个单一的设置中,设备或许支持多个接口。一个接口是一组相关集合的端点,这些表示设备对主机的一个单一个特征或者功能。用来和相关集合的端口或者特定目接口内的每个端点的通信的协议,可能是被具体为设备类或者厂商定义的部分。

另外,一个配置内的一个接口,可能拥有替换设置,这重新一个接口的相关端点的数量和特性,如果是这种情形,设备必须支持GetInterface()请求来汇报特定接口的当前的替换设置,和SetInterface()请求来选择特定接口的替换设置。

任一配置内,每一个接口描述符包含能识别接口表你好和替换设置的字段。接口号从0开始到接口数量-1编号。特定接口的替换设置从0 到替换数量-1编号。初始配置的默认设置替换设置是0.

Data Transfer

数据可以在usb端点和主机之间用四种方式传输。一个端点可以在不同的替换设置中被使用为不同类型的数据传输。一旦一个替换设置被选定,USB设备端点只会使用一种数据传输方式直到一个不同的替换设置被选择。

Power Management

功耗分配

usb 总线电源是一个有限的资源,在设备枚举器件,主机评估设备的功耗需。如果一个特定配置的功耗需求,超过了设备的可用功耗,主机软件必须比选择这个配置。

USB 设备必须限制他们消耗的功耗,在VBUS的上或者下一个单位直到被配置。挂起的设备,无论配置与否,必须限制总线功耗。依赖于设备插入端口的功耗能力,usb设备可以在配置后在VBUS 上5个单位。

远程唤醒

远程唤醒允许一个挂起的usb 设备发信号给一个或许也被挂起的主机这提示主机,设备必须从挂起恢复。如果必须要,发起外部时间触发挂起usb设备发信号给主机。一个usb 设备在配置描述符中汇报他的支撑远程唤醒的能力。如果设备支持远程唤醒,它必须通过标准usb请求允许这种能力被使能或者禁止。

Request Processing

Request Error

当一个请求被设备收到,这类请求是 设备未定义的,或者对当前的设备的设置不合适的, 或者值不兼容于请求,就会存在请求错误。

设备处理这个请求错误,通过返回一个STALL PID 回应下一个数据阶段的交易或者在消息流的状态阶段。 推荐STALL PID 返回在下一个数据阶段的交易,可以避免不必要的总线上的活动。

相关推荐
ikkkkkkkl6 小时前
计算机网络:传输层
网络·计算机网络·udp·tcp·传输层
G_H_S_3_6 小时前
【网络运维】容器、容器架构与docker部署
运维·网络·docker·架构
fantasy_arch6 小时前
SVT-AV1帧类型决策-场景切换检测
前端·网络·av1
开开心心_Every6 小时前
无广告干扰:简单好用文字LOGO设计工具
xml·java·网络·数据库·华为od·华为云·excel
不染尘.7 小时前
传输层协议头分析
服务器·网络·tcp/ip·计算机网络·udp·tcp
松涛和鸣7 小时前
37、UDP网络编程入门
linux·服务器·前端·网络·udp·php
数字护盾(和中)7 小时前
BAS模拟入侵攻击系统:前置防控核心,守护企业网络安全
网络·安全·web安全
德迅云安全—珍珍7 小时前
游戏掉线使用游戏盾SDK能优化网络吗
网络·游戏
zbtlink7 小时前
4G与4G+路由器:技术与实际体验的差异
网络·智能路由器