![为什么通过 USB 为移动设备充电这么慢?](https://linux22.com/image/1508630/%E4%B8%BA%E4%BB%80%E4%B9%88%E9%80%9A%E8%BF%87%20USB%20%E4%B8%BA%E7%A7%BB%E5%8A%A8%E8%AE%BE%E5%A4%87%E5%85%85%E7%94%B5%E8%BF%99%E4%B9%88%E6%85%A2%EF%BC%9F.png)
我正在开发应用程序,所以我经常连接移动设备,有时电池会耗尽,我想知道为什么会发生这种情况。我在想为什么没有 USB 集线器快速充电。 我猜测这是由不同的“USB 模式”引起的,在充电时无法与设备通信。
我读到过一些文章说 USB 3.1 可以给设备充电 100W,这个功率已经够大了。但是我找不到任何可靠的来源来让我了解它的工作原理。这真的意味着我可以传输数据和充电吗?如果是的话,“充电器”和“接收器”需要什么样的认证或功能?USB-PD 中有定义吗?
如果有人能告诉我充电内部是如何运作的,以及制造商的缺陷在哪里,我会非常高兴。
答案1
所有信息均可在 www.usb.org 上找到。
设备充电速度取决于三个因素:
设备可以理解哪种充电器特征,以及
USB 端口提供什么样的签名。
嵌入设计的特定电池的充电限制是多少。
不久前,USB 端口还被要求遵守所谓的电池充电规范,即最新的 BC1.2。如果端口提供此 BC1.2 签名,并且设备支持此签名,则充电电流可高达 5A。但这通常不会发生。而且,端口仍然可以传输所有 USB 数据。这个标准几乎已经失效了。
较新的充电协议在 Type-C 连接器的专用 CC 输入上使用各种上拉电阻,可在 5V 电压下提供高达 5A 的电流。但设备必须使用 Type-C 连接器才能做出此决定。
最新的充电规范称为“Power Delivery v2.0”,它使用同一个 CC 引脚上的串行协议。该协议可以协商高达 20V 的 VBUS 电压和高达 5A 的电流。PD 的第一个修订版本尝试通过 VBUS 传达功能,现在这种方法已被放弃。这种解决方案尚未完全上市,而且可能永远不会上市。
对于您的特定情况,通常情况下,常规端口 (500mA) 的标准供电不足以维持移动处理器的全部功能并同时为其电池充电。因此,电池会在开发/通信过程中耗尽。
现在,您特定问题的解决方案取决于您的移动设备是在主机模式下使用还是在设备模式下使用。
如果处于设备模式,某些 USB 端口上有支持 BC1.2 规范的集线器。如果您的设备理解 BC1.2 协议,它们应该提供足够的电流能力。您的设备可能只使用 USB2 端口,因此它无法理解 USB3 功能,并且仅消耗 500mA 以下的电流。
如果您的设备不理解 BC1.2 协议,那么您就会遇到麻烦,因为决定要吸收多少电流的是设备,而不是主机端口。
如果你的设备在主机模式下运行,解决方案就是所谓的配件充电适配器。