本文主要是介绍USB3.2 摘录(12),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
系列文章目录
USB3.2 摘录(一)
USB3.2 摘录(二)
USB3.2 摘录(三)
USB3.2 摘录(四)
USB3.2 摘录(五)
USB3.2 摘录(六)
USB3.2 摘录(七)
USB3.2 摘录(八)
USB3.2 摘录(九)
USB3.2 摘录(10)
USB3.2 摘录(11)
USB3.2 摘录(12)
文章目录
- 系列文章目录
- 10 集线器、主机下游端口和设备上游端口规范
- 10.16 请求(Requests)
- 10.16.1 标准请求(Standard Requests)
- 10.16.2 特定于类的请求(Class-specific Requests)
- 10.16.2.1 清除 Hub 功能(Clear Hub Feature)
- 10.16.2.2 清除端口功能(Clear Port Feature)
- 10.16.2.3 获取 Hub 描述符(Get Hub Descriptor)
- 10.16.2.4 获取 Hub 状态(Get Hub Status)
- 10.16.2.5 获取端口错误计数(Get Port Error Count)
- 10.16.2.6 获取端口状态(Get Port Status)
- 10.16.2.6.1 端口状态位(Port Status Bits)
- 10.16.2.6.2 端口状态更改位(Port Status Change Bits)
- 10.16.2.6.3 扩展端口状态位(Extended Port Status Bits)
- 10.16.2.7 设置集线器描述符(Set Hub Descriptor)
- 10.17 主机根(下行)端口
- 10.18 外围设备上行接口
- 10.19 Hub 章节参数说明(Hub Chapter Parameters)
- 11 互操作性和功率传输
- A Gen1 符号编码(Gen 1 Symbol Encoding)
- B 符号扰乱(Symbol Scrambling)
- C 电源管理(Power Management)
- D 示例数据包(Example Packets)
- E 中继器(Example Packets)
10 集线器、主机下游端口和设备上游端口规范
10.16 请求(Requests)
10.16.1 标准请求(Standard Requests)
集线器对请求处理时间的限制比 Section 9.2.6 中规定的标准设备更严格,因为它们对于连接到 USB 的所有设备的 “可用时间” 至关重要。下面列出了最坏情况的请求计时要求(它们适用于标准请求和 Hub 类请求):
- 无数据阶段的请求的完成时间: 50 ms
- 有数据阶段的标准请求的完成时间:
- 从设置数据包到第一个数据阶段的时间: 50 ms
- 每个后续数据阶段之间的时间: 50 ms
- 最后一个数据阶段和状态阶段之间的时间: 50 ms
由于集线器在总线计数中起着如此关键的作用,因此建议所有请求的集线器平均响应时间小于 5 毫秒。
表 10-6 概述了各种标准设备请求。
集线器需要接受所有 “标准” 请求,而不会出错。集线器不应对格式良好的 SET_ISOC_DELAY 请求响应请求错误。集线器不需要保留或处理延迟值。未实现的可选请求应在请求的 Data stage 或 Status 阶段返回 STALL。
10.16.2 特定于类的请求(Class-specific Requests)
hub 类定义 hub 响应的请求,如表 10-7 中所述。表 10-8 定义了 Hub 类请求代码。下表中除 SetHubDescriptor() 之外的所有请求都是必需的。
表 10-9 给出了 hub 类的有效功能选择器。有关功能的说明,请参阅 Section 10.16.2.1 和 Section 10.16.2.8 。
10.16.2.1 清除 Hub 功能(Clear Hub Feature)
此请求将重置 hub status 中报告的值。
发送清除请求将禁用该功能;请参阅表 10-9 了解作为接收者应用于 Hub 的功能选择器定义。如果功能选择器与状态更改相关联,则清除该状态更改将确认该更改。此请求格式用于清除 C_HUB_LOCAL_POWER 或 C_HUB_OVER_CURRENT 功能。
如果 wValue 不是表 10-9 中列出的功能选择器,或者 wIndex 或 wLength 不是上面指定的,则为请求错误。
如果未配置 Hub ,则 Hub 对此请求的响应是 undefined。
10.16.2.2 清除端口功能(Clear Port Feature)
此请求将重置端口状态中报告的值。
端口号应为该集线器的有效端口号,大于零。port 字段位于 wIndex 字段的位 7…0 中。
发送清除请求将禁用该功能或启动与该功能关联的进程;有关功能选择器定义,请参阅表 10-9。如果功能选择器与状态更改相关联,则清除该状态更改将确认该更改。此请求格式用于清除以下功能:
- PORT_POWER
- C_PORT_CONNECTION
- C_PORT_RESET
- C_PORT_OVER_CURRENT
- C_PORT_LINK_STATE
- C_PORT_CONFIG_ERROR
- C_BH_PORT_RESET
- FORCE_LINKPM_ACCEPT
清除 PORT_POWER 功能会导致端口处于 DSPORT.Powered-off-reset 状态,并且可能会根据集线器的电源切换方法的限制,导致端口的电源断开。当处于 DSPORT.Powered-off 或 DSPORT.Powered-off-detect 或 DSPORT.Powered-off-reset 状态时,当此端口为接收方时,唯一有效的请求是获取端口状态 (请参阅 第 10.16.2.6 节) 和设置端口功能 (PORT_POWER) (请参阅 第 10.16.2.10 节)。
清除 FORCE_LINKPM_ACCEPT 功能会导致端口置低 Set Link Function LMPs 中的 Force_LinkPM_Accept 位。如果端口上未断言 Force_LinkPM_Accept 位,则集线器应将此请求视为功能性无操作。
如果 wValue 不是表 10-9 中列出的功能选择器,如果 wIndex 指定的端口不存在,或者 wLength 不是上面指定的,则为一个错误请求。请求尝试清除已清除的特性(feature)不是一个错误(集线器应将其视为功能性无操作)。
如果未配置 Hub ,则 Hub 对此请求的响应是 undefined。
10.16.2.3 获取 Hub 描述符(Get Hub Descriptor)
此请求返回 Hub 描述符。
Hub 类描述符的 GetDescriptor() 请求遵循与标准 GetDescriptor() 请求相同的使用模型(请参阅第 9 章)。标准 Hub 描述符使用第 10.15.2.1 节中定义的值 bDescriptorType 表示。所有 Hub 都需要实现一个 Hub 描述符,描述符索引为零。
如果 wLength 大于描述符的实际长度,则仅返回实际长度。如果 wLength 小于描述符的实际长度,则仅返回描述符的第一个 wLength 字节;即使 wLength 为零,也不会将其视为错误。
如果 wValue 或 wIndex 与上面指定的不同,则为请求错误。
10.16.2.4 获取 Hub 状态(Get Hub Status)
此请求返回当前 Hub 状态以及自上次确认以来已更改的状态。
Data 的第一个字(2 字节)包含 wHubStatus 字段(参见表 10-10)。Data 的第二个字包含 wHubChange 字段(参见表 10-11)。
如果 wValue、wIndex 或 wLength 与上面指定的值不同,则为错误请求。
这些状态位没有定义的功能选择器值,它们既不能被 USB 系统软件设置也不能清除。
集线器可能允许使用 SetHubFeature() 请求设置这些更改位,以便支持诊断。如果集线器不支持设置这些位,则应将 SetHubFeature() 请求视为请求错误或功能性无操作。设置后,这些位可以由 ClearHubFeature() 请求清除。设置已设置的功能或清除已清除的功能的请求无效,Hub 应将其视为功能无操作。
10.16.2.5 获取端口错误计数(Get Port Error Count)
此请求返回集线器在 wIndex 指示的端口上检测到的链接错误数。每当设备经历 Reset (请参阅 Section 7.3) 或在上电时,此值将重置为零。
端口号应为该集线器的有效端口号,大于零。
如果 wValue 或 wLength 不是上面指定的,或者 wIndex 指定的端口不存在,则会出现请求错误。
10.16.2.6 获取端口状态(Get Port Status)
此请求返回当前端口状态和端口状态更改位的当前值。
PORT_STATUS 或 EXT_PORT_STATUS 数据的第一个字包含 wPortStatus 字段(参见表 10-13)。PORT_STATUS 或 EXT_PORT_STATUS 数据的第二个字包含 wPortChange 字段(参见表 10-14)。EXT_PORT_STATUS 请求应返回包含 dwExtPortStatus 字段的附加数据 dword(请参阅表 10-15)。
wPortStatus 和 wPortChange 字段中的位位置在适用时以一对一的方式对应。
wValue 字段以低序字节指定 Port Status Type(请参阅表 10-12),高序字节被保留。
如果端口状态类型等于 EXT_PORT_STATUS 且集线器未定义 SuperSpeedPlus USB 功能描述符,或者端口状态类型等于保留值,或者 wValue 或 wLength 不是表 10-7 中指定的值,或者 wIndex 指定的端口不存在,则为请求错误。
10.16.2.6.1 端口状态位(Port Status Bits)
PORT_CONNECTION
当端口处于 DSPORT.Enabled 状态时,此位设置为 1。在 DSPORT.Resetting 或 DSPORT.Error 状态中,它保持先前状态的值。
SetPortFeature(PORT_CONNECTION) 和 ClearPortFeature(PORT_CONNECTION) 请求不得被 USB 系统软件使用,并且应被集线器标记为无操作请求。
PORT_ENABLE
当下游端口处于 DSPORT.Enabled 状态时,此位设置为 1,否则设置为 0。
请注意,增强型 SuperSpeed 集线器不支持 USB 2.0 ClearPortFeature (PORT_ENABLE) 请求,USB 系统软件也不能使用它来禁用端口。
PORT_OVER_CURRENT
当端口上存在过流情况时,此位设置为 1,否则设置为 0。
如果此端口上的电压受另一个端口上的过流条件影响,则此位设置为 1 并保持设置为 1,直到影响端口上的过流条件被消除。当影响端口上的过流条件被移除时,该位设置为零。
如第 10.12 节所述,自供电集线器需要过流保护(在总线供电集线器上是可选的)。
SetPortFeature (PORT_OVER_CURRENT) 和 ClearPortFeature (PORT_OVER_CURRENT) 请求不应由 USB 系统软件使用,并且可能被集线器视为无操作请求。
PORT_RESET
当端口处于 DSPORT.Resetting 状态时,此位设置为 1。此位在所有其他下游端口状态中都设置为零。
如果满足第 10.3.1.6 节中的条件,则 SetPortFeature(PORT_RESET 或 BH_PORT_RESET) 请求将启动 DSPORT.Resetting 状态。
ClearPortFeature (PORT_RESET) 请求不应由 USB 系统软件使用,并且可能被集线器视为无操作请求。
PORT_LINK_STATE
此字段反映链接的当前状态。
SetPortFeature (PORT_LINK_STATE) 请求可随时由 USB 系统软件发出,但仅具有第 10.16.2.10 节中指定的效果。
ClearPortFeature(PORT_LINK_STATE) 请求不应由 USB 系统软件使用,并且可能被集线器视为无操作请求。
PORT_POWER
此位反映端口的当前逻辑电源状态。无论是否存在实际的端口电源交换设备,此位在所有端口上实现。
当此位为零时,端口处于 DSPORT.Powered-off 状态、DSPORT.Powered-off-detect 状态或 DSPORT.Powered-off-reset 状态。同样,任何导致此端口进入这三种状态中的任何一种的因素都将导致此位设置为零。
SetPortFeature(PORT_POWER) 会将此位设置为 1,除非 C_HUB_LOCAL_POWER 和 Local Power Source(在 wHubStatus 中)都设置为 1,在这种情况下,请求被视为功能性无操作。
PORT_SPEED
仅当 PORT_ENABLE 位设置为 1 且 Port Status Type 设置为 PORT_STATUS 时,此字段中的此值才有效。此字段中的值为零表示已附加增强型 SuperSpeed 设备。此字段中的所有其他值都是保留的。
系统软件可以通过使用 Get Port Status 请求来确定设备运行的实际速度,请求时将其 Port Status Type 设置为 EXT_PORT_STATUS(请参阅 Section 10.16.2.6.3)。
此字段只能由 USB 系统软件读取。
10.16.2.6.2 端口状态更改位(Port Status Change Bits)
端口状态更改位用于指示端口状态位的更改,这些更改不是请求的直接结果。可以通过 ClearPortFeature() 请求或集线器重置来清除端口状态更改位。集线器可能允许使用 SetPortFeature() 请求设置状态更改位以进行诊断。如果集线器不支持设置状态更改位,则它可能会将请求视为请求错误或功能性无操作。表 10-14 介绍了 wPortChange 字段中的各个位。
C_PORT_CONNECTION
当 PORT_CONNECTION 位更改时,此位设置为 1。
此位应通过 ClearPortFeature(C_PORT_CONNECTION) 请求或在逻辑端口电源关闭时设置为零。
C_PORT_OVER_CURRENT
当 PORT_OVER_CURRENT 位从 0 变为 1 或从 1 变为 0 时,此位设置为 1。如果由于另一个端口上的过流情况而将端口置于 DSPORT.Powered-off-reset 状态,则也会设置此位。
此位应由 ClearPortFeature (C_PORT_OVER_CURRENT) 请求设置为零。
C_PORT_RESET
当端口从 DSPORT.Resetting 状态转换为 DSPORT.Enabled 状态以进行任何类型的重置时,此位设置为 1。
此位应通过 ClearPortFeature (C_PORT_RESET) 请求设置为零,或者在逻辑端口电源关闭时设置。
C_PORT_BH_RESET
当端口从 DSPORT.Resetting 状态转换为 DSPORT.Enabled 状态时,此位设置为 1,仅用于热重置。
该位应由 ClearPortFeature(C_PORT_BH_RESET) 请求清除,或者在逻辑端口电源关闭时清除。
C_PORT_LINK_STATE
当端口的链路由于 SetPortFeature(Port_Link_State) 请求而完成从 U3 状态到 U0 状态的转换时,或者完成到 Loopback 状态或 Compliance 或 eSS.Inactive 的转换(如果存在 Rx 终止)时,此位设置为 1。由于在面向下游的端口上接收到远程唤醒信号,因此从 U3 到 U0 的转换,因此此位未设置为 1。
该位将通过 ClearPortFeature(C_PORT_LINK_STATE) 请求或在逻辑端口电源关闭时清除。
C_PORT_CONFIG_ERROR
如果无法成功配置连接到端口的链路,例如,如果两个仅支持下行的端口相互连接,或者无法完成链路配置,则此位设置为 1。此外,发生这种情况时,端口应转换为 DSPORT.Error 状态。
此位将通过 ClearPortFeature(C_PORT_CONFIG_ERROR) 请求或在逻辑端口电源关闭时清除。
10.16.2.6.3 扩展端口状态位(Extended Port Status Bits)
仅当 Get Port Status 请求的 Port Status Type (端口状态类型) 设置为 EXT_PORT_STATUS 时,才会返回扩展端口状态位。
请注意,对于增强型 SuperSpeed 设备,“端口速度” 是链路速度乘以通道数。
TX_SUBLINK_SPEED_ID and RX_SUBLINK_SPEED_ID
仅当 PORT_ENABLE 位设置为 1 时,此字段中的值才有效。通道速度(即单个通道的比特率)是通过评估 SuperSpeedPlus USB 功能描述符中子链路速度属性的参数来确定的,其子链路速度属性 ID 值与子链路速度 ID 值匹配,例如,如果子链路速度属性 LSE 和 LSM 字段分别等于 3 和 10,则链路以 10 Gb/s 的速度运行。Sublink Speed Attribute 未引用的所有值都将被保留。
此字段只能由 USB 系统软件读取。
TX_LANE_COUNT and RX_LANE_COUNT
此字段中的此值仅在 PORT_ENABLE 位设置为 1 时有效。端口的速度是通过将 Sublink Speed(由 SUBLINK_SPEED_ID 定义)乘以 Lane Count 来确定的。
此字段只能由 USB 系统软件读取。
10.16.2.7 设置集线器描述符(Set Hub Descriptor)
此请求将覆盖 Hub 描述符。
Hub 类描述符的 SetDescriptor 请求遵循与标准 SetDescriptor 请求相同的使用模型(请参阅第 9 章)。标准 Hub 描述符使用第 10.15.2.1 节中定义的值 bDescriptorType 表示。所有 Hub 都需要实现一个描述符索引为零的 Hub 描述符。
此请求是可选的。此请求将数据写入特定于类的描述符。主机提供在控制事务的数据传输阶段要传输到集线器的数据。此请求一次写入整个 Hub 描述符。
Hubs 应缓冲从此请求接收的所有字节,以确保已从主机成功传输整个描述符。成功完成总线传输后,集线器将更新指定描述符的内容。
如果 wIndex 不为零或 wLength 与主机发送的数据量不匹配,则为请求错误。不支持此请求的 Hub 在请求的 Data 阶段使用 STALL 进行响应。
如果未配置 Hub ,则 Hub 对此请求的响应是 undefined。
10.17 主机根(下行)端口
Host Root (Downstream) Ports 。
10.18 外围设备上行接口
Peripheral Device Upstream Ports 。
10.19 Hub 章节参数说明(Hub Chapter Parameters)
11 互操作性和功率传输
Interoperability and Power Delivery 。
A Gen1 符号编码(Gen 1 Symbol Encoding)
B 符号扰乱(Symbol Scrambling)
C 电源管理(Power Management)
D 示例数据包(Example Packets)
E 中继器(Example Packets)
☆
这篇关于USB3.2 摘录(12)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!