USB PD 协议概述:从 5V 到 48V 的进化之路
你可能已经注意到了,这几年手机、笔记本的充电头越做越小,功率却越来越大。从早期诺基亚的 5V/1A,到如今笔记本标配的 100W 甚至 240W,背后其实就一个协议在撑腰 —— USB PD。我最早接触 PD 是在 2016 年,当时给一款 Type-C 接口的平板选充电方案,发现市面上全是私有快充协议,互不兼容,搞得用户出一趟差得背三四个充电器。嗯,从那时起我就意识到,USB PD 要干的事绝不仅仅是"充得快"。
1.1 为什么需要 USB PD?
说白了,传统 USB 的供电能力太弱了。早期的 USB 2.0 只能提供 5V/500mA,算下来才 2.5W,给四节 AA 电池充电都嫌慢。你想想看,要是用这个功率给一台 50Wh 的笔记本充电,得充 20 个小时,谁能忍?
传统 USB 供电的几大痛点:
- 功率天花板低 —— USB 2.0 最大 2.5W,USB 3.0 也才 4.5W。
- 电压固定 —— 只有 5V,没法做高压快充。
- 协议分裂 —— 各家搞各的快充,高通 QC、联发科 PE、华为 SCP……互不握手。
- 角色固定 —— 只有 Host 给 Device 供电,不能反向充电。
2010 年左右,平板电脑和智能手机的电池容量冲上 3000mAh,市场急需一个统一的大功率供电方案。我记得当时业内其实有好几个候选方案,但最终 USB-IF 决定在 Type-C 物理层之上重新设计一套供电协议,这就是 USB PD 的由来。
1.2 USB PD 的发展简史
从 USB 2.0 到 USB PD 3.1,供电能力的跃升可以用"夸张"来形容。我把关键节点按时间线列了出来:
- USB 2.0 (2000) —— 5V/500mA,纯粹的数据总线,供电只是"顺便"。
- USB BC 1.2 (2010) —— 把充电电流提高到 1.5A,但电压还是 5V。
- USB PD 1.0 (2012) —— 引入了独立的 CC 通道,供电不再走 D+/D-,功率提升到 10W。
- USB PD 2.0 (2014) —— 里程碑版本!电压升到 20V,电流 5A,功率直接冲到 100W,还支持双向供电。
- USB PD 3.0 (2017) —— 在 2.0 的基础上增加了 PPS (可编程电源),实现了毫伏级调压,对手机快充特别友好。
- USB PD 3.1 (2021) —— 推出 EPR (扩展功率范围),最大电压 48V,功率 240W,连显示器、电动工具都能带了。
我在项目中踩过一个坑:PD 2.0 时代有些充电器号称支持 100W,但用的 E-mark 线缆只支持 3A,结果插上 100W 负载后线缆直接过热保护。所以看版本还不够,线缆的电流能力也得盯紧。
1.3 关键版本对比
| 版本 | 最大电压 | 最大电流 | 最大功率 | 关键特性 |
|---|---|---|---|---|
| USB 2.0 | 5 V | 0.5 A | 2.5 W | 基本供电 |
| BC 1.2 | 5 V | 1.5 A | 7.5 W | 充电端口识别 |
| PD 1.0 | 5 V | 2 A | 10 W | 独立 CC 通道 |
| PD 2.0 | 20 V | 5 A | 100 W | 双向供电、替代模式 |
| PD 3.0 | 20 V | 5 A | 100 W | PPS、快充协议统一 |
| PD 3.1 | 48 V | 5 A | 240 W | EPR、SPR 共存 |
看到没?从 2.5W 到 240W,整整翻了 96 倍。而且每次版本迭代,都伴随着 Type-C 生态的成熟。我个人习惯把 PD 2.0 称为"成年版",因为从它开始 PD 才真正有了和私有快充掰手腕的资本。
1.4 核心概念速览
学 PD 协议,有几个词你绕不开。我把它们列出来,你先混个脸熟,后面每章都会反复用到。
- Source / Sink —— 供电方和受电方。充电器是 Source,手机是 Sink。注意角色可以切换,这就是 DRP。
- PDO (Power Data Object) —— 供电能力描述符。Source 把自己能提供的电压/电流组合打包成 PDO 发给 Sink。
- RDO (Request Data Object) —— 请求描述符。Sink 看完 PDO 列表后,挑一个最合适的,用 RDO 告诉 Source。
- 协商 (Negotiation) —— Source 和 Sink 之间通过 CC 线做消息交换,最终确定供电配置。
- Capabilities 消息 —— Source 刚连上 Sink 时发的第一条消息,里面就是 PDO 列表。
说到抓 PD 通信,我在项目里吃过一次亏。当时一款充电器在客户那边经常充不上电,我抓了日志才发现,Source 发出的 Capabilities 里第一个 PDO 是 5V/3A,但客户的设备只支持 9V。设备遍历完所有 PDO 发现没有匹配项,就直接切回 5V 默认档了。问题不在协议,而是 PDO 列表没覆盖目标设备的需求。所以做 Source 端设计时,我建议至少保留 5V、9V、15V、20V 四组固定 PDO。