第二章 PD协议发展史:从BC 1.2到USB PD 3.1的演进之路
咱们这一章,聊聊USB PD的发展历程。说实话,我入行那会儿,充电协议还处在群雄割据的年代。各家手机厂都有自己的快充方案,互不兼容。用户出门得带一堆充电器,很痛苦。直到USB PD的出现,才真正把快充标准给统一了。
但PD协议也不是一天建成的。它从1.0走到3.1,经历了几个关键的迭代。我带你捋一捋,顺便聊聊它跟老前辈BC 1.2到底有什么区别。
2.1 BC 1.2:充电协议的“史前时代”
在讲PD之前,得先说说BC 1.2(Battery Charging Specification 1.2)。这是USB-IF在2010年发布的充电规范。你想啊,那时候大家都在用USB 2.0,标准的500mA电流充手机,简直是龟速。
BC 1.2的出现,就是为了解决这个问题。它的核心思路很简单——通过D+和D-上的电压,来识别充电器的类型。我最早用逻辑分析仪抓过BC 1.2的握手信号,说白了就是靠电阻分压来传递信息。
| BC 1.2模式 | D+电压 | D-电压 | 最大电流 | 典型应用 |
|---|---|---|---|---|
| SDP(标准下行端口) | 0V | 0V | 500mA(USB 2.0)/ 900mA(USB 3.0) | 电脑USB口 |
| CDP(充电下行端口) | 0.6V | 0V | 1.5A | 支持握手识别的电脑口 |
| DCP(专用充电端口) | 短接D+/D- | 短接D+/D- | 1.5A ~ 1.8A | 普通充电头 |
BC 1.2的硬伤:
- 电压固定5V:提高功率只能靠增加电流,但线缆和接口有物理极限
- 功率上限低:最大约7.5W(5V/1.5A),根本喂不饱后来的平板和笔记本
- 无数据通信能力:只做充电识别,没法实现更复杂的电源策略
我踩过的坑: 有一次项目里,用了BC 1.2的DCP模式,结果发现手机识别为SDP,充电电流只有500mA。排查了好久,才发现是D+和D-的短接电阻没选对,导致压降太大。嗯,硬件设计很多时候就是这样,差一点点就全盘错。
2.2 USB PD 1.0:从0到1的突破
2012年,USB PD 1.0横空出世。它最大的革命,就是把供电电压从5V拉高到了12V和20V。你想想看,同样的2A电流,20V下就是40W,比BC 1.2的5W多了8倍。
PD 1.0引入了几个关键概念:
- 电源角色(Source / Sink):谁供电,谁受电,定义了明确的角色
- VBUS电压可编程:不再是固定的5V,而是可以协商出5V、9V、12V、20V等多个档位
- CC线通信:用CC(Configuration Channel)线传输BMC编码的协议数据,取代了BC 1.2那种简陋的D+/D-模拟信号
不过,PD 1.0有个问题——它需要独立的通信线。那时候Type-C接口还没出来,用的是传统的USB Type-A或Type-B加额外引脚的方案。这在手机这种小设备上基本没法用,所以PD 1.0主要停留在笔记本和显示器上。
2.3 USB PD 2.0:伴随Type-C走向大众
真正让PD协议普及的,是2014年的PD 2.0。它跟USB Type-C接口深度绑定,利用Type-C的CC线来跑协议,才算真正解决了接口的物理瓶颈。
PD 2.0的关键提升:
- 功率上限拉到100W:20V / 5A,足够给大部分笔记本充电了
- 角色互换:Source和Sink可以在运行中交换角色。我遇到过用PD充电宝给笔记本充电的场景,反过来笔记本电池快没电时,也能临时给手机供电。这在2.0里就实现了
- 替代模式(Alternate Mode):PD协议不光管供电,还能协商DisplayPort、Thunderbolt等视频信号的复用方式。一个Type-C口能同时传视频、数据和电力
当时我调的PD 2.0协议栈,最头疼的是处理Hard Reset。有时候USB Hub或线缆的质量有问题,突然来个电压抖动,双方就会进入Hard Reset流程——所有角色和功率状态全部复位。要是芯片的复位时序没处理好,就容易死锁。我们当时在示波器上蹲了一整周,才把那个Bug复现并解决掉。
2.4 USB PD 3.0:给协议“上保险”
2015年发布的PD 3.0,核心改动在于协议层的可靠性和安全性。2.0版本其实存在一些潜在的风险,比如Source和Sink之间的电压协商如果被干扰,可能导致VBUS输出异常。
PD 3.0引入了几个重要特性:
- 电源协商进入“明确状态机”:协议从原来的单次Request/Response,变成了有状态的安全协商流程
- 电缆识别:eMarker芯片可以通过PD协议读取线缆的电流能力(3A还是5A),防止大功率设备在弱线缆上工作
- 快速角色交换(Fast Role Swap, FRS):当Source突然断开时,当前的Sink能在极短时间内反切为Source,给其他设备供电。这对笔记本这种自带电池的设备特别有意义
我的观察: PD 3.0其实修复了很多2.0时代因为“太灵活”而引入的歧义。很多设备在2.0时代的兼容性问题,在3.0后基本得到了解决。所以你看市场上的主控芯片,现在基本都支持PD 3.0了。
2.5 USB PD 3.1:迈向240W的EPR时代
2021年,PD 3.1来了,这是目前最新的版本。它最大的突破,就是支持了扩展功率范围(Extended Power Range, EPR)。
- 电压提升到48V:在标准的20V之外,新增了28V、36V和48V三个电压档位
- 功率上限达到240W:48V/5A,这意味着游戏本、高端工作站、甚至一些显示器,都可以用Type-C供电了
- 需要EPR线缆:普通5A线缆不能用于EPR,必须用带SPR(标准功率范围)和EPR双标记的线缆
这里我得提醒一句:EPR模式下,48V的高压对连接器的爬电距离要求更高了。我见过一些便宜的线缆,虽然在EPR模式下能用,但长期使用后接触点会氧化,导致接触电阻变大发热。千万别在小事上省钱。
2.6 PD与BC 1.2的核心区别(一张表说清楚)
| 对比维度 | BC 1.2 | USB PD(2.0/3.0/3.1) |
|---|---|---|
| 通信方式 | D+/D-模拟电压 | CC线BMC编码数字协议 |
| 电压范围 | 固定5V | 5V~48V(EPR),可协商多个档位 |
| 最大功率 | 7.5W(5V/1.5A) | 240W(48V/5A,EPR) |
| 角色切换 | 不支持 | 支持Source/Sink动态切换 |
| 数据能力 | 无,只做充电识别 | 支持协商替代模式(DP/Thunderbolt) |
| 电缆识别 | 无 | 通过eMarker识别线缆电流能力 |
| 适用接口 | USB Type-A/B | USB Type-C(强制) |
避坑指南: 我当初在做一个快充墙插的项目时,客户要求同时兼容PD和BC 1.2。结果发现PD协商失败后,回退到BC 1.2的逻辑很容易出问题。很多PD芯片在进入BC 1.2模式前,需要先断开CC线的连接,否则D+和D-上的电压会被CC线的上拉电阻拉到异常电平。记得要加一个切花开关,把CC和D+/D-的路径单独控制。这是实际踩过的坑。
2.7 本章知识结构图
2.8 结合实际看PD协议的真价值
讲完了历史,我简单总结一句。PD协议能成为主流,核心就两条:一是功率密度,二是协议灵活性。功率密度保证了它能给笔记本、显示器供电;协议灵活性则允许它跟视频、数据复用同一个接口。你想想看,一个Type-C口,既能给手机快充,又能外接4K显示器,还能传输USB 3.0数据,这在BC 1.2时代是完全不敢想象的。