三、USB PD协议基础:从消息到功率协商
USB PD协议,说白了就是Type-C接口上的“功率谈判语言”。没有它,C口就只能跑5V/3A,也就是15W。但有了PD,你才能看到65W笔记本充电、100W显示器供电,甚至240W的EPR模式。
我个人觉得,理解PD协议有三个关键层次:它说什么(消息类型)、怎么说(协商过程)、以及怎么测(电气测试)。咱们一个一个聊。
3.1 PD消息类型:你说了啥?
PD消息分为两类——控制消息和数据消息。控制消息就像“打招呼”,数据消息才是“谈正事”。
| 消息类型 | 主要消息 | 作用 |
|---|---|---|
| 控制消息 | GoodCRC | 接收确认,类似TCP的ACK |
| Accept / Reject | 同意/拒方的请求 | |
| PS_RDY | 电源已准备好切换,可以改变电压了 | |
| 数据消息 | Source_Capabilities | 源端宣告自己能提供的电压/电流组合 |
| Request | 接收端请求一个能力 | |
| BIST | 内置自测模式,我调试时常用它做压力测试 | |
| Vendor_Defined | 厂商自定义扩展,PPS就靠它实现 |
我在项目中遇到过一种情况:设备一直发Reject,既不Source_Capabilities也不Request。后来发现是CC线上的电平时序没对上,协议层压根没握手成功。所以消息类型虽然简单,但底层的电气层一旦出问题,协议层就是空谈。
3.2 电源协商过程:从握手到供电
你想想看,一个充电器和一个手机插上之后,它们是怎么知道该跑5V还是20V的?这个过程就叫电源协商,一般分4步:
- 物理连接检测: CC1/CC2上的上拉/下拉电阻让设备知道自己是被插的一方还是插入的一方(源端/接收端)。这一步是硬件完成的,不涉及PD协议。
- 能力宣告: 源端发送Source_Capabilities消息,列出一组PDO(Power Data Object)。每个PDO就是一个电压/电流组合,比如5V/3A、9V/3A、15V/3A、20V/3.25A。
- 请求与确认: 接收端从里面挑一个,发Request消息。源端如果同意,回Accept,然后发PS_RDY。源端实际切换输出电压到目标值。
- 供电维持: 供电过程中双方持续发送GoodCRC确认,同时监测CC线上的状态。如果断开或异常,立即回退到5V。
3.3 PPS与EPR:两个进阶概念
PPS(可编程电源): 它是PD 3.0引入的功能。说白了,源端不再只提供几个固定档位,而是允许接收端精细调节电压和电流。比如一个手机在充电时,可以实时微调电压到5.2V、5.5V,以达到最高转化效率。PPS的实现靠的是Vendor_Defined消息,里面带了一个APDO(Augmented PDO)。
我调试PPS时踩过一个坑:某款手机在PPS模式下不停地改变请求电压,隔几百毫秒就发一次Request。一测发现源端的负载瞬态响应跟不上,输出电压出现振荡。最后在源端输出电容上并了一个22μF的陶瓷电容才解决。
EPR(扩展功率范围): 它是PD 3.1推出的,把功率上限从100W拉到240W,也就是48V/5A。EPR使用了特殊的CC逻辑——调整了上拉电阻的电压,让它比普通PD高出一倍。这要求EPR源端和接收端都使用耐压超过50V的器件。
3.4 电气层要求:BMC编码与电平
PD协议不是随便在CC线上发数字信号那么简单。它使用BMC(Bi-Phase Mark Coding)编码,也就是每个时钟周期内有一次翻转。0和1的区别在于翻转位置不同——1在周期开始就翻转,0在周期中间翻转。
电气参数要点:
- BMC位速率: 300 kbps ±0.5%
- CC线上的逻辑电平: 源端主动上拉,接收端下拉到地。BMC信号峰峰值约1.2V@3.3V系统,EPR模式下更高。
- 上升/下降时间: 要求≤150ns,太慢会破坏BMCD解码的眼图。
- 差分阻抗: 目标90Ω±15%,与USB 2.0/USB 3.x一致。
3.5 电压/电流阶跃测试
阶跃测试,就是看源端在响应Request切换电压时,输出波形好不好。规范要求每次电压阶跃(比如从5V跳到20V)时,输出电压的过冲要小于规定值,稳定时间要在限时内。
阶跃测试的典型判据:
| 参数 | 要求 | 测试工具 |
|---|---|---|
| 电压上升/下降时间(10%-90%) | ≤15ms | 示波器+差分探头 |
| 过冲/下冲 | ≤目标电压的±5% | 示波器+数学测量 |
| 稳定时间(进入±5%范围) | ≤5ms | 示波器+光标测量 |
| 电流阶跃(负载突变) | VBUS跌落≤500mV | 电子负载+示波器 |
我个人习惯用电子负载做一个“阶跃触发”:让负载从轻载突然切到重载,同时看VBUS波形。有一次测一个PD充电器,轻载到重载时VBUS跌了1.2V,超了规范。一查是输出滤波电容的ESR太高,换成低ESR聚合物电容就过了。
1. 示波器带宽至少500MHz,采样率2GS/s以上。
2. 探头用50Ω阻抗匹配,不要用×1衰减档。
3. VBUS和GND测量点选在Type-C座子处,尽量靠近被测设备。
4. 负载的电流阶跃速率要快于源端的瞬态响应,否则测不准。
嗯,这张图基本涵盖了本章的核心内容。消息类型是基础,协商过程是流程,PPS/EPR是扩展,电气层和阶跃测试则是验证手段。做PD产品时,这五个环节缺一不可。我个人建议研发阶段就先把电气层调好,再跑协议流程,最后才做阶跃测试——反过来容易浪费时间。