ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

标称100W的PD快充芯片为何跑不满65W?——PD Sink协商机制与选型避坑

标称100W的PD快充芯片为何跑不满65W?——PD Sink协商机制与选型避坑 之前在一款 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充电器端会维护一组 PDOPower Data Object每个 PDO 代表一个可用的电压/电流组合比如 5V/3A、9V/3A、12V/3A、15V/3A、20V/3.25A。Sink受电设备端的 PD Sink 芯片要做的是先读取这组 PDO然后发送 RDO 请求其中某一个 PDOSource 回复 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还是I2CPD 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 消息给 SinkSink 收到后回复 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 ResetSink 芯片没能正确响应。比如某颗芯片在硬复位后没有重新进入“检测 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 ResetSink 芯片如果没处理好也会进入“假死”。遇到这种情况可以给芯片复位引脚设计一个由“VBUS 跌落”触发的小电路当 VBUS 从工作电压降到 0.5V 以下时输出一个 100ms 低电平复位脉冲。这个方法在多个项目上验证过能显著降低“必须重新拔插”的故障率。它不是一个必须的电路但对于追求量产稳定性的产品来说非常值得加。5. 给后来者的选型思路与一套可复用的参考配置5.1 先列出需求矩阵再谈功率我整理了一张简单的需求矩阵每次选型前先填完这张表再去看芯片规格书基本不会踩大坑。需求项要确认的问题最大输入电压20V 就选 SPR28V 以上必须选 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 信号用逻辑分析仪解出来远比反复换芯片有效。希望这篇内容能帮你少走点弯路尤其是别像我一样因为功率参数而忽略了真正决定成败的协议细节。
返回列表