1. PD协议概述:USB PD 3.1标准演进、PD协议在快充生态中的位置、Source与Sink角色定义
大家好,我是你们的讲师。今天咱们正式开讲PD协议的第一课。说实话,每次带新人入门,我都会先问一个问题:你手头的充电器,到底是怎么跟手机“商量”出该充多大功率的?
很多人觉得,插上就能充,这有什么好聊的?其实不然。这里面门道很深。我当年刚接触PD协议时,也以为就是简单的电压电流匹配。直到有一次,我调试一个Type-C口,设备死活不升压,折腾了两天,最后发现是角色定义搞反了……嗯,从那以后,我再也不敢小看这第一步了。
1.1 USB PD 3.1标准演进:从5V到240V的跨越
先聊聊标准本身。USB PD,全称USB Power Delivery。它不是什么新东西,但这些年变化巨大。
最早期的USB,大家都有印象吧?5V,0.5A,充个手机慢得像蜗牛。后来有了BC 1.2,能到1.5A,但还是不够。直到USB PD 1.0出现,才真正把功率推到了100W。
我个人习惯把PD的发展分成三个阶段:
- PD 1.0(2012年):基于BMC编码,走CC线通信。最大20V/5A,100W。那时候主要是给笔记本充电用。
- PD 2.0(2014年):跟Type-C接口深度绑定。你想想看,Type-C的CC引脚就是专门为PD设计的。这个版本把协议栈规范化了,引入了结构化VDM。
- PD 3.0(2015年):增加了PPS(可编程电源),快充协议开始“大一统”。我做过一个项目,手机端要求3.3V-11V的PPS调压,当时调试了好久才稳定。
- PD 3.1(2021年):这才是重头戏。它把电压范围扩展到了48V,功率直接飙到240W。说白了,以后连大功率游戏本、显示器、甚至电动工具都能用Type-C供电了。
核心变化点:PD 3.1引入了EPR(扩展功率范围)。原来的20V叫SPR(标准功率范围),新加的28V、36V、48V叫EPR。注意,EPR需要特殊的线缆和连接器,不是随便一根Type-C线都能跑的。
为什么会这样?因为USB-IF协会想把Type-C做成“万能接口”。你想想看,一个口子能传数据、能投视频、还能充240W的电,这得多方便。但代价就是协议复杂度直线上升。
1.2 PD协议在快充生态中的位置
现在市面上的快充协议,说实话,有点乱。高通有QC,联发科有PE,华为有SCP/FCP,OPPO有VOOC,还有各种魔改的私有协议。
但PD协议的位置很特殊。它是USB-IF官方标准,是所有Type-C设备必须支持的基础协议。我打个比方:私有协议就像各家饭店的招牌菜,PD协议就是米饭——你可以不吃菜,但米饭总得备着。
在实际生态中,PD协议扮演了这几个角色:
- 基础供电协议:所有Type-C设备,哪怕不支持快充,也得能跑5V/3A的PD基础档位。
- 快充协商平台:很多私有协议其实是在PD的基础上“加料”。比如高通的QC4+,底层就是PD协议,只是加了私有报文。
- 系统级电源管理:在笔记本、显示器这类设备上,PD不光管充电,还管角色切换、数据角色协商、甚至固件升级。
我的经验:做嵌入式开发时,千万别只盯着PD协议看。你得把PD、Type-C状态机、CC逻辑、甚至VBUS的路径管理一起考虑。我曾经在一个项目里,PD通信完全正常,但VBUS就是不出电,最后发现是路径管理芯片的使能引脚没拉高——这种坑,踩一次就记住了。
1.3 Source与Sink角色定义
好,到了最基础也最容易搞混的部分:角色定义。
PD协议里,设备分为两种角色:
| 角色 | 英文 | 通俗理解 | 典型设备 |
|---|---|---|---|
| Source | 供电方 | 往外送电的 | 充电器、充电宝、扩展坞 |
| Sink | 受电方 | 从外面取电的 | 手机、笔记本、耳机 |
听起来很简单对吧?但实际开发中,有个坑:角色不是固定的。
举个例子:你的手机插上充电器,手机是Sink,充电器是Source。但如果你把手机插到电脑上,手机可能变成Source,给电脑反向充电——这就是DRP(双角色端口)。
注意:在PD协议栈里,Source和Sink的代码逻辑完全不同。Source要负责广播能力、响应请求、控制VBUS输出。Sink则要监听广播、发起请求、管理本地充电。我见过有人把Source的代码直接复制给Sink用,结果通信完全乱套——这俩的状态机是镜像对称的,不是一样的。
另外,PD 3.1还引入了AVS(可调电压源)的概念。在EPR模式下,Source可以输出一个范围内的任意电压,而不是固定档位。这对Sink端的电源管理芯片要求更高了。
我个人习惯,在项目初期就把角色定义写死在配置表里。如果是DRP设备,我会单独做一个角色切换模块,跟PD协议栈解耦。这样调试起来清爽很多。
小结
这一节我们聊了三个事:
- PD标准从1.0到3.1的演进,核心是功率从100W飙到240W
- PD在快充生态里是“基础协议”,所有Type-C设备都得支持
- Source和Sink是供电和受电的两端,角色可以互换,但代码逻辑完全不同
下一节,我们会深入CC引脚,看看Source和Sink是怎么通过电阻来“握手”的。嗯,那个Rp和Rd的电阻值,很多人第一次看都会懵——别急,我到时候给你画个图,一看就明白。