USB Host 是否总是为 VBUS 供电?

电器工程 USB USB主机
2022-02-03 09:12:22

我对 USB 有一些了解,但由于某些原因,我自己无法回答这个问题。

USB 主机端口(比如说 USB 2.0)是否总是在 VBUS 引脚上提供 5V 电压?如果不是,它如何检测设备连接?

对于设备(总线供电的情况),很容易通过检测 VBUS 引脚来检测主机,但要使其正常工作,USB 主机应始终在 VBUS 引脚上提供 5V,这导致我提出了这个问题。

我能想到的一件事是它可以默认提供5V,100mA,只有在枚举成功后才能提供更多。但据我观察,笔记本电脑的USB端口默认启用5V VBUS,不限于100mA,所以我只是想从USB标准的角度来理解。

任何答复将不胜感激。

2个回答

标准的经典 USB 主机必须始终向下游端口提供 VBUS (+5V +- 10%),因此设备可以启动连接序列(将 D+ 或 D- 拉高)。端口必须至少提供 500 mA(2.0 版本)或 900 mA(3.0 版本),无论是否有任何通信或附件。这些是对经典 USB 2.0 和 USB 3.0“大功率端口”和有源集线器的“至少”要求,因此如果他们愿意,它们可以提供更多。USB 2.0 规范的第 7.2 节列出了这些要求。小型电池供电可能有一个例外。

注 1:即使在“睡眠”(挂起状态)模式下,主机也必须提供 VBUS。

--

注意 2:如果主机不将 VBUS 驱动为高电平,则不会/应该发生连接,即使设备有自己的电源。根据 USB 2.0 规范第 7.2.1 节,连接请求(D+ 或 D- 上拉)必须仅在存在 VBUS 时发生。因此,仅“拥有”上拉是违反规范的,上拉必须以 VBUS 为条件。

--

注意 3:因此,没有 VBUS => 没有通信。由于这条规则,没有 VBUS 就不可能有“部分”或“主机信号”模式。

500 mA 是 USB HOST的要求。此供应编号经常与作为消费者的 USB设备的要求相混淆。USB 设备在初始连接阶段消耗的电流不应超过 100 mA,并且只有在它被枚举并接收到“set_configuration ()”命令时才能消耗全部功率。在此初始“100mA”会话期间,USB 设备在设备描述符中报告其电源要求。如果主机已经用尽了它的功率预算,它可以停止枚举,有效地拒绝设备。

NOTE4:正如你所看到的,没有“谈判”,它要么是“我的 [主机] 方式”,要么是“高速公路”。

--

注意 5:USB 主机没有指定方法来监管其端口的实际功耗。USB 主机控制器没有任何可以测量/报告端口消耗的寄存器。因此,主机无法强制执行 100mA 限制来监控可能违反 100mA 规范的坏设备,除非发生端口过流的严重事件。符合 100 mA 限制被认为是 USB-IF 认证过程的级别。

简而言之,500 mA 和 100 mA 是不同 USB 实体的要求,一个用于主机和集线器,另一个用于设备,再次如第 7.2.1 节所述。从 USB 标准的角度来看,这就是它的工作原理。

现在,随着 Type-C 连接器的引入,情况有所不同。Type-C 设备(包括主机和外设)最初被禁止输出 VBUS因此,与其大胆地在 Type-C 端口上使用 VBUS 电源,不如仅当端口逻辑检测到电缆/设备的存在时,主机才必须打开 VBUS 源。它通过检测“CC”(通信通道)引脚上的电压电平来实现这一点。Type-C 主机在两个 CC 引脚上都有上拉电阻。设备(或旧式电缆组件)必须具有 5.1k 下拉。插入设备/电缆后,主机检测到 5.k 将其上拉下拉,此时主机有权使用 VBUS 电源,USB 通信开始。

除非它处于某种睡眠或过流故障模式,是的,普通(经典 1.0/1.1/2.0)USB 主机将始终为 VBUS 供电。

主机检测到 USB 设备是因为它们在其中一条数据线上有一个上拉电阻 -D-对于低速设备和D+全速设备(或高速设备;高速在信号中发现)。

虽然 USB 规范禁止外围设备在未经协商的情况下消耗超过 100 mA 的电流,但实际上许多(大多数)主机并未强制执行此操作。通常,它们具有某种 PTC 或主动过流保护,其启动电流高于 500 mA(少数,如原始 Raspberry pi 的限制较低,并且无法提供完整的 USB 规格电流)。

一些早期的智能手机具有不兼容的部分USB 主机功能,它们能够以主机信号角色运行,但不能将 VBUS 提供给外围设备。今天的大多数要么有一个电荷泵来提供 VBUS,要么根本不允许主机模式操作。