1. PD协议概述
大家好,我是你们的讲师。这一章我们来聊聊USB Power Delivery,也就是大家常说的PD协议。咱们先从它为什么会出现说起。
1.1 起源:为什么要有PD?
早几年的USB,说白了只能传数据,供电就是个附赠功能。USB 1.0/2.0时代,就5V、500mA,顶了天2.5W。那时候给手机充电,你还得找专门的充电头,USB口基本就是插电脑传文件用的。
后来设备功耗上来了,USB 3.0把电流提到900mA,可还是不够啊。BC 1.2出来了,1.5A、3A,但功率也就15W封顶。我印象特别深,2012年我做一个工业平板项目,电池容量大,用USB充电要充五六小时,客户天天投诉。那时候我就想,能不能把USB供电做得跟电源适配器一样?
这就是PD诞生的背景。它要解决三个核心问题:
- 功率太小——从2.5W直接飙到100W、240W
- 电压固定——不能调压,5V硬吃大电流发热严重
- 角色固定——Host只能供电,Device只能受电,不能双向
PD协议的本质:在USB Type-C的CC线上通过FSK/BMC编码,协商供电参数,实现动态调压、双向供电和更高的功率。
1.2 版本演进:从1.0到3.1
PD协议演进得很猛。我用一张表让大家快速看明白:
| 版本 | 发布时间 | 最大功率 | 关键特性 |
|---|---|---|---|
| PD 1.0 | 2012年 | 100W(20V/5A) | 基本供电协商,使用C型连接器,BC 1.2兼容 |
| PD 2.0 | 2014年 | 100W(20V/5A) | 引入Extended消息、双向供电、快速角色交换 |
| PD 3.0 | 2015年 | 100W(20V/5A) | 增加电源供应对象(PSO)、电池充电扩展、可编程电源(PPS) |
| PD 3.1 | 2021年 | 240W(48V/5A) | 扩展功率范围(EPR)、扩展消息、快速角色交换增强 |
你可能会问,版本之间兼容吗?嗯,这是个坑。PD 1.0和2.0不兼容,但2.0、3.0、3.1是向前兼容的。我自己在项目中踩过一次雷:当时用的PD 3.0芯片,和一台PD 3.1笔记本握手上,笔记本非要拉EPR模式,结果芯片不支持,双方折腾半天最后降级到5V/3A。所以,建议选型时一定看清版本号——PD 3.1和PD 3.0虽然兼容,但EPR模式需要专用芯片和线缆。
曾经我遇到过一台PD 2.0的显示器,接上PD 3.0的笔记本,显示器只供电不传视频。后来抓CC线波形才发现,显示器发的Source_Capabilities里没带DP Alt Mode的厂商VDM,笔记本就没输出视频。这类问题在混合版本环境中特别容易出,排查时一定要先确认双方支持的PD版本和可选功能。
1.3 典型应用场景
现在PD协议已经满天飞了。我给你们几个最典型的场景:
- 手机快充——从18W一路飙到240W(虽然手机很少用满)。几十瓦的快充,都靠PD调压。拿iPhone说,从iPhone 8开始支持PD,现在最高20W;安卓这边65W PD已经常见。
- 笔记本供电——这是PD的主战场。你想想,以前笔记本都带一个又大又重的电源适配器,现在一个很小的USB-C充电头,插上就能给笔记本充电,还能给手机、平板、耳机同时用。我自己出差就带一个100W的PD充电头,搞定所有设备。
- 显示器供电——现在的USB-C显示器很神奇:一根线同时传视频、USB数据和供电。显示器本身通过PD协议告诉笔记本“我能提供65W”,笔记本一边充电一边输出显示信号。
- 充电宝与大型设备——大功率充电宝(比如20000mAh)用PD输出60W给笔记本,还能双向快充自身。
我的建议:如果你在开发新产品,一定要考虑PD的Scenario。比如一个充电宝,如果只支持5V/2A,现在根本卖不动;支持PD 3.0 PPS才能适配主流手机。
1.4 PD协议的核心逻辑
聊完应用,我们得知道PD到底怎么工作的。说白了,就是两个设备通过CC线通信,协商出一个双方都满意的供电档位。
PD协议栈分三层:
- 物理层:在CC线上用BMC编码传信号,速率300kbps,半双工。
- 协议层:定义报文格式、重传、超时、GoodCRC确认。
- 策略引擎:决定角色(Source/Sink)、供电能力、是否支持Alt Mode等。
握手过程大概是这样:
- Source(供电端)检测到有设备插入,发送Source_Capabilities报文
- Sink(受电端)回复GoodCRC确认,然后评估自己的能力,发送Request报文
- Source收到后,回复Accept或Reject
- 如果Accept,Source发PS_RDY报文,表示电压已切换完成
- 之后双方进入稳定供电状态
这里我画了一张图,帮大家把这些层次和流程串起来:
这张图左边是协议栈层次,右边是典型的握手流程。你注意看物理层在最底下,上面是协议层,再上是策略引擎。真正控制充电档位逻辑的是策略引擎,它根据设备能力选择合适的电压和电流。
我们后面几章会逐一拆解每个报文的结构和比特位,包括PSK(电源供应对象)的详细解析。不过先记住一句话:PD握手的核心就是“我来问,你来答,双方满意就供电”。
一点点个人经验:调试PD握手时,我习惯先看CC线的电压。Source在空载时CC线电压约为1.8V(通过Rp电阻上拉),如果只有0.4V左右,说明Rd已经下拉,但此时如果Cable插反了或者线有问题,信号会乱。别急着抓数字报文,先排除物理层问题。