4. USB PD 协议发展历程与版本差异

说起 USB PD 协议啊,从最早的雏形到现在已经进化了十来年。我最早接触 PD 协议的时候,市场上还只有 USB 2.0 的 BC 1.2 充电标准。那时候给设备充个电,电流小得可怜,平板电脑都充不进去。嗯,正是这种尴尬才逼出了后来的 PD 协议。

为什么要了解发展历程?说白了就是为了避坑。很多工程师拿着新芯片去调旧设备,结果死活不通,其实就是版本兼容性问题。我个人习惯,做项目前先查清对方设备支持的 PD 版本,能省很多调试时间。

4.1 从 USB 2.0 的 BC 1.2 到 PD 1.0

早在 PD 协议诞生前,业界的快充方案基本靠各家自己搞。高通有 Quick Charge,联发科有 Pump Express,互不兼容。这时 USB-IF 坐不住了,他们觉得快充得有统一标准。

BC 1.2(Battery Charging 1.2)算是第一个官方充电标准,但它只解决了两件事:

  • 识别充电端口类型(DCP / CDP / SDP)
  • 把充电电流从 USB 2.0 的 500mA 提升到 1.5A

说实话,这点功率根本不够用。我记得那时候有款 10 寸平板,充电要五六个小时,用户反馈很差。于是 PD 1.0 在 2012年 正式发布,它第一次引入了通过 CC 线通信协商功率的机制。

关键里程碑:PD 1.0 定义的功率最高 100W(20V / 5A),这个标准直到今天还在沿用。不过实际落地非常少,因为那时 Type-C 接口还没普及,PD 1.0 用的是传统 USB Micro-B 连接器上的额外引脚。

4.2 PD 2.0:真正的革命

2014年,USB Type-C 接口发布。PD 2.0 随即跟上,这是真正意义上的大规模商用版本。为什么会成功?因为它和 Type-C 接口深度绑定——CC 引脚天然支持 PD 通信,不需要额外连接器。

PD 2.0 相比 1.0 做了几个核心调整:

特性 PD 1.0 PD 2.0
物理层 BMC over Vconn BMC over CC(兼容更好)
连接器 Micro-B + 额外引脚 USB Type-C 原生支持
电压范围 5V / 12V / 20V 固定 5V / 9V / 15V / 20V 固定
最大电流 5A(需 Marked Cable) 5A(需 eMarker)
双向供电 不支持 支持 DRP
商务协议 无 引入 SOP'/SOP'' 用于线缆通信

嗯,这里要注意。PD 2.0 最大的变化其实是增加了 eMarker(电子标记线缆)的沟通机制。我手头有一个项目就遇到了这个问题:客户买的 Type-C 线没有 eMarker,结果始终协商不到 3A 以上电流。查了半天才发现是线缆不支持 PD 2.0 的完整协议栈。

我的经验:调试 PD 2.0 设备时,我通常先确认 Source 和 Sink 的 Source_Capabilities 是否匹配。如果发现反复 Hard Reset,80% 的概率是电压或电流值超出了对方支持范围。

4.3 PD 3.0:更加智能和柔性的供电

2015年发布的 PD 3.0 增强版,说实话很多人觉得只是小改。但我告诉你,它引入了一个极其重要的概念——PPS(Programmable Power Supply)。

PPS 允许电压以 20mV 的步进调节,电流以 50mA 步进微调。这意味着设备可以实时调整充电电压,把效率拉到最高。你想想看,高通 Quick Charge 4 和联发科 Pump Express 4 后来都采用了 PD 3.0 PPS 作为基座,就是因为它太灵活了。

3.0 的其他改进还包括:

  • Fast Role Swap(FRS):在供电角色切换时,能在 5ms 内完成,保证不掉电。我做过一个手机投屏底座项目,切换 Source/Sink 角色时掉电重启,最后还是靠 FRS 解决。
  • 更丰富的 VDM(Vendor Defined Messages):厂家可以自定义数据包扩展功能
  • 优化了错误恢复机制,减少了 Hard Reset 次数

⚠ 避坑指南:我曾经调试一个 PD 3.0 充电器时,发现它总是进入 PPS 模式后会输出异常纹波。后来检查才发现,PPS 模式下电压调节速度过快,超过了后端 Buck 电路的响应能力。所以做 PPS 设计时,一定要给电压变化留出足够的坡度(Slew Rate)。

4.4 PD 3.1:面向未来的扩展

2021年发布的 PD 3.1,引入了 EPR(Extended Power Range)。你可能会问:100W 还不够用吗?嗯,对于笔记本和显示器来说确实不够。PD 3.1 把电压扩展到了 28V、36V、48V,最高支持 240W 的功率。

电压档 标准 最大功率 应用场景
5V ~ 20V SPR(标准功率范围) 100W 手机、平版、笔记本
28V EPR AVS 140W(28V / 5A) 游戏本、投影仪
36V EPR AVS 180W(36V / 5A) 高性能工作站
48V EPR AVS 240W(48V / 5A) 显示器、大型设备

要注意,EPR 需要特定的 EPR 线缆,而且连接器也必须满足 EPR 的耐压和耐流要求。我见过有人用普通 SPR 线去跑 48V,结果接口烧得一塌糊涂,这就是没搞清楚版本的能力边界。

4.5 版本演进思维导图

好了,我们用一张图把 PD 协议二十年来的演进串起来。

USB PD 协议演进图谱 BC 1.2 2009 · 5V/1.5A PD 1.0 2012 · BMC over Vconn PD 2.0 2014 · Type-C 绑定 PD 3.0 2015 · PPS 引入 PD 3.1 2021 · EPR 240W DCP/CDP/SDP 端口检测 1.5A 最大 CC 通信 20V/5A Micro-B 接口 eMarker/DRP SOP'/SOP'' 双向供电 PPS 20mV FRS 5ms UDM ⚠️ 实际调试中,很多设备仅支持 PD 2.0 或 PD 3.0 子集 务必从 Source_Capabilities 确认版本能力

4.6 版本兼容性的实际考量

你可能会关心一个问题:如果我的设备只支持 PD 2.0,对接一个 PD 3.1 的充电器能工作吗?答案是——能,但只能工作在最基础的模式。

PD 协议向下兼容的大原则是:高版本 Source 必须能跟低版本 Sink 通信,但只提供低版本能理解的 PDO(Power Data Object)。也就是说,PD 3.1 充电器面对 PD 2.0 设备时,只会输出 5V/9V/15V/20V 固定电压,而不会尝试 PPS 或 EPR。

我的调试经验:如果遇到两个设备“握手失败”,我喜欢先用逻辑分析仪抓 GoodCRC 之后的 packet。如果一直收到 Reject 或 Wait,多半是你提供的 PDO 对方完全无法接受。这时候降低到 5V/3A 试试,通常能绕过协商问题。

另外一个实际坑:虽然 PD 版本向下兼容,但很多老芯片对 Soft Reset 或 Hard Reset 的处理很糙。我在一个项目中,PD 2.0 Source 每次收到 PD 3.0 的 Extended Capabilities 请求就直接 Hard Reset,搞了一天才发现是固件版本太旧,缺少跳过未知消息的处理逻辑。

4.7 小结与实用建议

好了,整理一下核心记忆点:

  • BC 1.2:5V/1.5A,只能充电,无数据协商
  • PD 1.0:定义了 100W 规格,但基本没落地
  • PD 2.0:Type-C 时代主力,支持 5V/9V/15V/20V 固定档
  • PD 3.0:加入 PPS 和 FRS,可微调电压/电流
  • PD 3.1:扩展到 48V/240W,引入 EPR 和 AVS

最后给新手工程师一个忠告:拿到一个新 PD 设备,别急着调协议栈。先花 10 分钟读它的 Source_Capabilities 或者 Sink_Capabilities,看看它真实支持哪些 PDO。我见过太多人浪费一整天,最后发现是不小心把 28V 的 PDO 发给了一个只支持 20V 的设备。