之前在一款 USB-C 供电的工业设备上做 PD 快充电源方案时,我差点被“功率”这两个字带偏。当时选的 PD Sink 芯片,规格书里最大能支持 20V/5A 的 100W 档位,我甚至觉得这就是照着参考设计抄作业的事。结果打样回来,往一个 65W 的适配器上一插,VBUS 协商出来的电压只有 12V,设备直接降频;更诡异的是,反复插拔后还会出现握手失败,非要重新上电才恢复。这个“看起来支持 100W、却连 65W 都跑不顺”的坑,让我前后调了两周,最后才意识到问题不在芯片功率,而在整条 PD 协商链路。也正是这段经历让我确信:做 PD 快充方案,选 PD Sink 芯片时如果只盯着功率,基本等于给自己埋雷。
1. 从一次“100W”翻车说起:PD Sink方案的真实复杂面
1.1 功率只是“耐压耐流”上限,不是协商结果
USB PD 快充和传统电源芯片最大的区别,在于它不是一个“输入多少、输出多少”的简单电路,而是一套协商协议。Source(充电器)端会维护一组 PDO(Power Data Object),每个 PDO 代表一个可用的电压/电流组合,比如 5V/3A、9V/3A、12V/3A、15V/3A、20V/3.25A。Sink(受电设备)端的 PD Sink 芯片要做的是:先读取这组 PDO,然后发送 RDO 请求其中某一个 PDO,Source 回复 Accept 并执行,VBUS 才会切换到目标电压。
很多工程师看到“支持 100W”就以为芯片会自动去协商最高电压,这是一个非常危险的误解。标称功率反映的是芯片内部逻辑能够承受的电压和电流范围,不代表它默认就会去要 20V。像我用的那颗芯片,默认配置其实不是最高档,而是 12V,因为它的“档位选择表”里优先选择了某个固定 PDO 的位置。插入 65W 适配器后,它规规矩矩地请求了 12V/5A,虽然适配器有这个档位,但远不是这个方案本该拿到的性能。所以说,功率只是“能力上限”,真正决定输出电压的是芯片的协商策略和外围配置。
这还没完。还有一种情况更隐蔽:如果芯片请求的电流超过了 Source 对应 PDO 能提供的电流,Source 会直接拒绝这个 RDO,整个协商就无法顺利完成。很多支持 100W 的芯片在拿不到 5A 电流时,并不会自动往下降档,而是会跳过一个错误周期,最后落在一个更低的固定档位。这就解释了为什么明明接了 65W 适配器,最后连 12V 都可能是“过渡档位”而不是我们想要的档位。选型时如果不把“PDO 读取能力、自动降级逻辑、默认请求策略”这三件事一起考量,功率参数就只是个参数而已。
1.2 Type-C和PD是两层,少一个下拉电阻都会翻车
PD 协商跑在 Type-C 的 CC 线上,但 Type-C 的连接检测是独立于 PD 协议的一层。作为 Sink,芯片必须在 CC1 和 CC2 引脚上提供 Rd 下拉电阻(典型值 5.1kΩ)。Source 内部的 Rp 上拉和这颗 Rd 分压后,CC 引脚上会出现一个几百毫伏的电平,Source 才能判断“这是一个受电设备”,然后打开 VBUS。
如果你选的芯片没有内部集成 Rd,而在 PCB 设计时又漏掉了这两颗 5.1kΩ 电阻,上电后 VBUS 可能一直是 0V。这种情况我见过很多次,工程师第一反应是“芯片坏了”,实际上只是基础握手没打通。另外,CC1 和 CC2 必须同时连到 Type-C 座子的两个 CC 引脚,因为 Type-C 线缆存在正反插方向。芯片内部如果做了“CC 自动选择”当然最好,否则反插时完全无法识别,你会觉得自己的硬件像抽风一样。还有一个很容易被忽略的点:CC 引脚上不要串电容,也不要加过大负载的滤波电容,否则 BMC 物理层信号会被破坏,导致 PD 消息收发不稳定。
2. PD Sink芯片选型时容易被忽略的四个核心维度
2.1 协议版本与PDO读取策略:PD2.0/3.0/PPS的分水岭
PD 协议已经演进到了 PD3.1,不只是“支持 PD 快充”几个字能概括的。PD2.0 时代固定电压档位是主流,PD3.0 加入 PPS(可编程电源),可以在基准电压上以 20mV 步进做精细调节,适合直充电池等需要精确电压的场合。PD3.1 又加入了 EPR 模式,支持 28V、36V、48V 甚至更高电压,输出功率能做到 240W。你选芯片之前必须先问自己:我的适配器是什么协议?我的产品真的需要 PPS 吗?
很多所谓的“PD Sink 诱骗芯片”只支持读取前几个固定 PDO,并不支持完整的 PPS 协商。如果你的充电器是 PD3.1 的 140W 适配器,它可能默认首先广播一个 28V/5A 的 EPR PDO,然后再广播 SPR 的几个固定 PDO。只支持 SPR 的芯片不会去请求 28V,因为物理层上它根本不识别 EPR 消息,最后会退回到 20V 档,这没问题。但如果你想要的是 28V,就必须选择明确支持 EPR 的 Sink 芯片。
PPS 则是一个更微妙的坑。PPS 的好处是能“按需调压”,但代价是协议流程更复杂:PPS 请求不仅要指定电压,还要指定电流,Source 会周期性发送 PPS_Status 消息,Sink 需要响应。如果芯片只是简单诱骗器,根本不会处理这些消息。反过来,如果系统并不需要 PPS,选一颗带 PPS 的芯片反而增加了误触发的概率——某些芯片在 I2C 配置错误时可能误进入 PPS 模式,导致输出电压和预期完全不符。结论很简单:协议版本必须精准匹配,而不是“最贵最全”就好。
2.2 触发/配置方式:电阻、GPIO还是I2C
PD Sink 芯片的“怎么决定要哪个档位”是一个容易被忽略的选择。市面上常见的三种方式:纯电阻配置、GPIO 组合配置、I2C/SPI 寄存器配置。
纯电阻配置最简单,成本也低。芯片通过一个或多个引脚的电阻值来编码目标电压,比如 0Ω、10kΩ、20kΩ 对应不同档位。这种方式适合“上电就要固定电压”的应用,比如把一个 12V 传感器模块挂到 PD 充电器上。缺点也是明显的:它缺乏实时性,想切换电压必须改电阻或者断电重来。而且电阻精度会影响档位识别,一定要用 1% 精度的电阻,不要为了省成本用 5% 的。
GPIO 配置类似,只是把电阻编码换成了电平组合,可以用 MCU 的 GPIO 动态切换。但注意,GPIO 切换的只是“请求目标”,真正生效还要等 PD 协商完成,这段时间内 VBUS 仍停留在旧电压。如果负载在电压切换瞬间不能断电,需要额外处理。
I2C 配置是灵活度最高的方式,典型的如 FUSB302 这类协议控制器,本身只是一颗物理层芯片,需要 MCU 跑协议栈。你可以完全控制 PDO 读取、RDO 发送、甚至主动发起软复位。代价是开发量大,调试复杂,协议栈出问题时很难排查。很多产品其实不需要这种灵活性,选它纯粹是给自己找罪受。选型的时候一定要清楚自己团队的软件开发能力和产品的实际需求。
2.3 封装、热阻和内部功耗模型
很多人选 Sink 芯片只看封装大小能不能贴,忽略了热阻。PD Sink 芯片本身一般不会承载很大电流,但芯片内部如果集成了 LDO 或线性稳压器,在输入电压很高的时候会有可观的功耗。举个例子,某芯片内部给数字核心供电需要 3.3V,如果它直接从 VBUS 取电,在 20V 输入下降压,压差就有 16.7V。假设静态电流 10mA,功耗就是 167mW;在 SOT23-6 封装下已经能让芯片摸起来有明显温度。如果产品还要工作在高温环境,长期可靠性会有问题。
选型时还要分清芯片是“纯协议控制”还是“集成功率路径”。如果集成 VBUS 开关,那么电流确实流过芯片,此时“支持 100W”就涉及导通电阻和热阻问题,必须做降额验证。如果芯片只是协议控制器,外部再用 MOSFET 做电源路径,那么芯片标称 100W 和你系统能跑多少瓦没有直接关系,真正决定功率路径的是你的 MOSFET 选型、PCB 铜皮宽度和散热设计。很多工程师把两者混为一谈,导致满载测试时芯片没热,外置 MOS 却热到烫手。
2.4 保护功能:ESD、浪涌和反接
Type-C 接口是外露接口,插拔频繁,ESD 防护不是可选项。CC 引脚上的电平都是低压模拟信号,如果芯片内部没有足够的 ESD 钳位,一个静电事件就可能让芯片进入闩锁状态,表现为“还能通信但怎么都协商不到高电压”。解决方案是在 CC1/CC2 到座子之间加低结电容 TVS 二极管,结电容尽量控制在 5pF 以下,避免影响 BMC 信号波形。
VBUS 的浪涌也值得注意。当充电器接通或断开瞬间,由于线缆电感,VBUS 上会产生过压尖峰。如果你选的芯片没有集成 OVP,就要在 VBUS 入口放 TVS 或做过压检测。另外一个实用建议:在 VBUS 到后级负载之间加一个负载开关或 PMOS 开关,让 Sink 芯片协商完成后再开启后级电源。这样不仅能避免上电瞬间浪涌,还能实现“先握完手,再上电”的安全时序,减少很多莫名其妙的故障。
3. 芯片参数背后的电路细节:从触发方式到供电流程
3.1 上电协商的每一步:从5V到目标电压
为了排查问题,你需要把 PD Sink 的上电过程拆成几个明确的阶段。插入 Type-C 线缆后,Source 首先通过 Rp 上拉检测到 Rd 下拉的存在,于是打开 VBUS,初始电压固定为 5V。这个过程不依赖 PD 协议,只是 Type-C 连接检测的自然结果。如果你在这个阶段量到 VBUS 是 5V,说明物理连接层面没问题。
接着 Sink 芯片开始在 CC 线上发送消息。典型的流程是:Sink 发送“Source_Capabilities”请求?其实准确来说,是 Source 会在检测到设备后主动发送 Source_Capabilities 消息给 Sink,Sink 收到后回复 GoodCRC,然后发送自己的 RDO。如果你用示波器抓 CC 线,能看到一连串突发脉冲,这就是 BMC 编码的 PD 消息。卡在这一步的常见表现是:VBUS 始终 5V,但 CC 线有脉冲,Source 就是不切换到目标电压。这时候要看 Sink 芯片的配置是否正确,以及它是否真正理解了 Source 广播的 PDO。我曾经在一个板子上发现芯片的 I2C 地址被上拉电阻设错,导致它根本没跑协议栈,CC 线上的脉冲只是物理层自动回复,并没有真正发起请求。
当 RDO 被 Source 接受后,Source 会发送 Accept,然后调整 VBUS。注意不是瞬间切换,而是有一个转换时间,典型值在几十到几百毫秒。Sink 芯片要能容忍这个过渡过程,不能在后端电路还没稳定时就强制开启大功率负载。所以我的经验是:设计系统时序时一定要在 Sink 芯片的“协商完成”信号后再使能后端 DCDC。
3.2 外围电路:最容易画的几个“隐藏坑”
画原理图时,除了阅读芯片手册的推荐电路,还要特别注意以下几项:
5.1kΩ 下拉电阻:这是 Sink 设备的“身份证”。要选 1% 精度,并且 CC1、CC2 各放一颗,不能因为觉得“反正只插一个方向”就省掉其中一颗。很多芯片内部已经集成了 Rd,但也有一些需要外部接,确认清楚再画。
VBUS 输入电容:我通常会在座子附近放一颗 10μF/50V 陶瓷电容,再加一颗 0.1μF 高频电容。电容容量太小,在 Source 切换电压瞬间会造成 VBUS 跌落,导致芯片工作不稳定;容量太大,则可能让拔出后的 VBUS 放电时间过长,影响下一次插入识别。
CC 引脚的 TVS 二极管:放在 Type-C 座子与芯片之间。选型时看结电容,越低越好,否则加在 CC 上会改变信号边沿。TVS 的钳位电压不能太低,否则正常插拔时的毛刺会误触发。
使能/复位引脚:不要悬空。悬空时芯片可能因为噪声进入错误的内部状态。按照手册接默认电平,或者在调试时预留焊盘。
电源路径开关:如果芯片只输出协议控制信号,务必在 VBUS 和后级之间设计开关。很多 Sink 芯片有“PG”或“协商完成”输出,用来控制这个开关,不要让后级电路直接暴露在 20V 下。
3.3 为什么不能把PD Sink芯片当普通电源芯片
普通电源芯片是“死”的,它只有反馈环路,输入输出关系固定。PD Sink 芯片是“活”的,它要和一个同样智能的 Source 做双向通信。通信就可能出错,出错就可能卡死。这就需要你在系统设计上给它留“后路”。
最常见的卡死场景是:协商过程中 Source 发送了 Hard Reset,Sink 芯片没能正确响应。比如某颗芯片在硬复位后没有重新进入“检测 Rd”的状态,要求它必须完全掉电才能恢复。设计时可以考虑在 VBUS 上增加放电电路,当检测到 VBUS 掉到 0.8V 以下时,把芯片的复位引脚拉低一段时间。很多量产产品会在固件里加一个看门狗,长时间没有收到 PS_RDY 就主动复位 Sink 芯片。这些都是普通电源设计里不会考虑到的。
另外,PD 协商是有时间窗口的。Sink 芯片要在一定时间内响应 Source 的消息,如果 MCU 被更高优先级的任务占用,导致 I2C 响应不及时,就会出现超时。所以当你用“MCU + PD Sink 协议栈”方案时,RTOS 的任务优先级设计非常关键。这一点在选型阶段就要想清楚:你是租一套现成的协议栈,还是自己维护?功能越全的方案,也越容易在某些角落给你埋雷。
4. 实测中常见的兼容性问题与排查手段
4.1 插上电源后电压只有5V:握手失败的排查链路
如果你遇到“插上充电器,VBUS 只有 5V”的情况,先不要急着怀疑芯片。按下面这个顺序排查,基本能覆盖绝大多数原因:
- 测 CC1/CC2 对地电压。正常应该在几百毫伏到 1V 之间,视 Source 的 Rp 而定。如果为 0V,大概率是 Rd 没接好,或者线缆方向对应的 CC 引脚没有连到芯片。
- 测 VBUS 电压。如果是 0V,说明 Source 根本没打开 VBUS,问题在连接检测层,而不是 PD 协商层。
- 用示波器抓 CC 线波形。看有没有 BMC 脉冲。如果完全静默,说明 Sink 芯片没有发起通信,可能是芯片没有进入 PD 模式,或供电不对。
- 如果能抓到脉冲但始终不升压,就要确认 Sink 芯片到底向 Source 请求了什么。理想情况下,你应该用一个支持消息解码的工具,直接看 Source_Capabilities 里有哪些 PDO,以及 Sink 发出的 RDO 选中了哪一个。没有这个工具也没关系,把芯片的配置引脚改到另一个目标电压再试,如果某个电压能成功,说明问题大概率就是“默认配置和适配器 PDO 不匹配”。
我自己排查时最常用的招数是:把同一个 Sink 芯片分别接到 5 个不同品牌的适配器上,记录各自的上电波形。只要有一款能升压,就说明芯片基本工作是正常的,剩下的就是兼容矩阵问题。如果 5 款都不升压,那就要回头查芯片的供电、时钟和复位。
4.2 电压能协商但带载后掉压:功率路径和Source能力
协商成功只是第一步,带载测试才是考验。如果发现 20V 能协商到,但一接负载电压就掉到 15V 甚至更低,检查方向应该分成两路:自己的功率路径和 Source 的真实能力。
自己的路径问题最常见的是线缆和 PCB。Type-C 线缆种类繁杂,有些线只有充电功能,内部线芯很细,5A 电流过去之后压降很大。建议在做最大电流测试时,直接从座子后面焊接引线,或用专门的 5A 线缆,排除线缆因素。PCB 这边,VBUS 走线要足够宽,至少 2mm 以上,并且要铺铜散热。如果 VBUS 经过了一个 MOSFET 开关,还要关注它的导通电阻,一个 50mΩ 的 MOS 在 5A 下的压降就有 0.25V,再加上座子接触电阻,掉压就很明显了。
另一个可能是 Source 虚标或过热降额。很多适配器标称 65W,但在高温环境下会自动降低输出电流。这时需要看 Source 端的保护机制是否触发了。建议用电子负载做阶梯测试:从 0.5A 起步,每档停留 5 秒,记录 VBUS 电压和 Sink 芯片温度。如果曲线在某个电流点突然掉压,并且此时 MOS 和 PCB 都不热,那就要怀疑适配器本身的能力或线缆不符合标准。
4.3 为什么这款充电器行、那款不行:兼容矩阵和PDO差异
PD 充电器的 PDO 列表并不是统一的。有些支持 5V/3A、9V/3A、12V/3A、15V/3A、20V/5A 五组完整档位;有些只有 5V/3A 和 20V/5A 两组;还有些在 5V/9V 之后就直接跳到 20V,没有 12V 和 15V。你的 Sink 芯片如果默认请求一个不存在的 PDO,协商就会失败。
还有一种容易被忽略的情况是 PDO 顺序。虽然 PD 协议理论上要求 Sink 读取全部 PDO 后再选择,但一些低成本的诱骗芯片为了简化,可能只读取前几个 PDO 或者只按 PDO 序号索引进行请求。比如芯片默认请求“第 3 个 PDO”,而某款适配器的第 3 个 PDO 是 12V,另一款适配器的第 3 个 PDO 是 9V,你就会看到完全不同的协商结果。
所以兼容性测试必须做成矩阵,而不是“拿一个充电器试一下能用就完事了”。我建议至少选三款主流适配器,分别覆盖多档位、少档位、带 PPS 三种类型。每一款记录 5 次热插拔表现:是否成功升压、升压到哪个档位、从插上到稳定花了多久。如果某一个适配器的表现异常,立即抓 CC 波形和 VBUS 波形,确认是芯片配置问题还是适配器 PDO 问题。
4.4 反复插拔后“锁死”:状态机复位与VBus处理
很多 PD Sink 方案的“锁死”其实就是状态机没有复位。最常见的诱因是拔出线缆后,VBUS 残压太高,导致芯片认为 Source 还在。USB PD 规范里对 VBUS 放电有要求,但你的设备侧如果并了很大的输入电容,放电时间会被拉长。解决方法是加一个放电电阻(比如 100kΩ 到 1kΩ?实际要平衡功耗和放电时间),或者用一个 PMOS 在检测到 VBUS 低于阈值时对地放电。
另外,有些 Source 在断开时会发送 Hard Reset,Sink 芯片如果没处理好,也会进入“假死”。遇到这种情况,可以给芯片复位引脚设计一个由“VBUS 跌落”触发的小电路:当 VBUS 从工作电压降到 0.5V 以下时,输出一个 100ms 低电平复位脉冲。这个方法在多个项目上验证过,能显著降低“必须重新拔插”的故障率。它不是一个必须的电路,但对于追求量产稳定性的产品来说,非常值得加。
5. 给后来者的选型思路与一套可复用的参考配置
5.1 先列出需求矩阵,再谈功率
我整理了一张简单的需求矩阵,每次选型前先填完这张表,再去看芯片规格书,基本不会踩大坑。
| 需求项 | 要确认的问题 |
|---|---|
| 最大输入电压 | 20V 就选 SPR,28V 以上必须选 EPR 方案 |
| 最大工作电流 | 3A 和 5A 对功率路径要求完全不同 |
| 是否需要动态调压 | 需要则选 GPIO/I2C,不需要就选电阻配置 |
| 系统是否已有 MCU | 有 MCU 可选协议栈方案,无 MCU 选自动协商芯片 |
| 是否兼容 QC/PD 双协议 | 适配器环境复杂时需要选择多协议芯片 |
| 工作温度范围 | 高温环境下注意热阻和降额 |
| 是否需要硬件复位能力 | 没有复位引脚会加大死锁风险 |
不要一上来就问“这芯片支持多少瓦”。这是完全错误的第一步。功率是需求明确之后的自然结果,而不是选型的起点。
5.2 一套无MCU参考配置(按BOM思路)
如果你的产品方案固定、不需要动态调压,无 MCU 的“PD 诱骗 + 外置电源路径”是最快落地的思路。当然,具体型号要以你手头的芯片手册为准。以我常用的方式为例,BOM 大致是这样的:
- PD Sink 芯片:选择支持 PD3.0、内部集成 CC 下拉、支持多档位电阻配置的芯片,比如 CH224K、LDR6328 这类。用电阻把目标电压配置成 20V,电流请求按芯片手册设定。
- VBUS 输入电容:10μF/50V + 0.1μF 并联,放在 Type-C 座子后。
- 功率路径:用一颗外置负载开关(Load Switch)或低导通电阻 PMOS 控制 VBUS 到后级 DCDC。负载开关通常自带 OVP 和过流保护,会省很多事。
- CC 保护:两颗低结电容 TVS 管,分别并联在 CC1、CC2 到 GND。
- VBUS 放电:一颗 10kΩ 电阻?实际要根据你的电容值算,原则是拔出后 1 秒内让 VBUS 降到 0.5V 以下。
这套配置上电后,芯片自动请求 20V,后级负载开关在收到“协商完成”信号后再打开。整个过程不需要 MCU,逻辑清晰,适合做固定电压的工业模块或小家电。
5.3 验证流程:用三个步骤确认选型正确
选型完成后不要急着量产,用下面三个步骤做验证:
第一步是上电时序测试。用示波器同时抓 VBUS、CC 波形、后级负载使能信号和最终输出电压,确认从插上到目标电压建立的时间,以及是否存在过冲。如果过冲超过 5%,需要调整负载开关的缓启动参数或增大输出电容。
第二步是功率阶梯测试。用电子负载从 0.1A 逐步加到目标最大电流,记录每个电流点的 VBUS 电压和芯片温度。重点看两个指标:电压维持在目标值 ±5% 以内;Sink 芯片表面温度不超过规格书建议值。如果有明显拐点,画一条“电压-电流曲线”,就能直观看到瓶颈在哪儿。
第三步是兼容性测试。至少准备三个不同品牌、不同 PDO 结构的适配器,每款做 20 次热插拔,协商成功率必须是 100%。如果出现一次失败,就记录失败时的波形,然后回头查芯片配置或调整放电电路。只有把这三步都跑完,我才敢把方案定稿。
最后还想分享一个心得:PD Sink 芯片的标称功率只是“耐压上限”,而不是系统能拿到的功率。拿到任何一个新板子,我都会先做一次“PDO 摸底”,把 Source 能输出的所有档位打出来,再确认芯片请求策略。这个习惯让我后来踩的坑少了很多。另外一个小技巧:调试时把 CC 线上的 BMC 信号用逻辑分析仪解出来,远比反复换芯片有效。希望这篇内容能帮你少走点弯路,尤其是别像我一样,因为功率参数而忽略了真正决定成败的协议细节。