1. PD快充受电芯片是什么,解决什么问题
做硬件产品这几年,Type-C口基本是绕不开的存在。大多数开发者对PD快充的认知是从“充电头”开始的,也就是Protocol里的Source端,真正在一线做产品时,反而更容易被另一类芯片卡住:设备端的PD受电芯片,也就是PD Sink控制器。
受电芯片这个名字听起来很学术,说白了就是让设备自己会“开口要电”。一颗普通的Type-C口默认只有5V,充电头也只能先按5V供电。当你把一个12V驱动的筋膜枪、20V输入的便携显示器或者需要15V工作电压的机器人底盘接到普通Type-C口上,如果设备里没有受电芯片,它就只能老老实实吃5V,要么带不动,要么靠一个boost升压电路硬拉——不仅效率低,电流一大还容易发烫。
PD受电芯片干的事,就是在Type-C连接建立之后,通过CC线上的BMC信令和充电头做协商,告诉对方“我这边需要12V/3A”或者“请给我20V/5A”,充电头确认后把VBUS切到目标电压档位。整个过程中受电芯片只负责协议协商,不负责功率变换,这一点一定要先想清楚,不是把5V升到20V的芯片,而是让外部PD充电器把VBUS直接输出到20V的芯片。
这类芯片适合谁来用?我的经验是三类人最需要:
- 传统USB供电产品的硬件工程师,想把产品升级成PD输入,减少专用适配器依赖;
- 做Type-C生态设备的开发者,比如扩展坞、便携屏、智能小家电、电动工具、筋膜枪、无线充底座;
- 以及搞DIY、搞创客项目的个人开发者,想用手里一堆氮化镓充电器给非标设备供电。
受电芯片解决的本质问题,是把“供电来源”统一到PD适配器上。原来一个产品要配一个专用电源,现在只要设备端有一颗能协商的芯片,办公桌上的65W、100W氮化镓充电器就能通吃。这也是PD协议当前在消费电子领域渗透率这么高的核心原因。
不过“PD受电芯片”本身是个大类别,从几毛钱的诱骗芯片到几十块钱的高端可编程方案都有。选型并不是越贵越好,而是要看产品需要什么电压、什么功率、什么配置方式。下面我把这几年选型、画板、调试过程中总结的要点整理出来,给准备做PD输入的兄弟一个直接能用的参考。
1.1 USB PD协议的最小理解:source、sink与PDO/RDO
在展开选型之前,先把协议层面的几个概念说清楚,尤其是第一次接触PD的开发者,这几个词后面会反复出现。
USB PD通信发生在Type-C接口的CC引脚上。连接建立初,充电器作为电源提供方,也就是Source,会通过CC线上的广播消息告诉设备自己能输出哪些电压电流组合,这个组合叫做PDO(Power Data Object)。比如一颗65W氮化镓充电器,它的PDO常见是:5V/3A、9V/3A、12V/3A、15V/3A、20V/3.25A。
设备端作为耗电方,也就是Sink,在收到这些PDO之后,从中选出一个自己需要的组合,再发一个RDO(Request Data Object)回去,向充电头提出请求。充电头接受请求后,会把VBUS调整到对应电压,并维持最大电流约定。这套“广播-请求-确认”的流程,就是整个PD快充协商的基本骨架。
受电芯片要做的,就是代表设备完成Sink侧这套协商流程。芯片上电后,在CC线上通过内置的Rd电阻(通常5.1kΩ)告诉充电头“这里有一个设备接入”,然后监听充电头发来的PDO,再根据我们预设的电压需求发RDO。等到VBUS稳定后,芯片或者后级电路开始给负载供电。
关于PDO和RDO,我建议不要只停留在概念上。实际调试中很多“充不进电”“不升压”的问题,根因就是设备请求了一个充电头压根没广播的电压档位。比如有些充电器PDO只有5V、9V、15V,你把受电芯片配置成固定请求20V,那协商永远失败,系统只能停留在默认的5V。
1.2 哪些应用场景真正需要受电芯片
先举几个我实际接触过的场景,看一眼就知道自己属不属于目标用户。
第一个是便携显示器和一体式电脑屏幕。这类产品屏背光需要12V到20V供电,过去要么用外置DC适配器,要么用一个比较笨重的电源板。现在直接在Type-C入口放一颗受电芯片,接笔记本的PD充电器,就能把VBUS协商到20V给背光驱动供电,同时还能把DP信号一起走Type-C线进去,体验好很多。
第二个是电动工具、筋膜枪、小家电这类12V到24V供电的产品。传统设计是套一个降压电源模块或者锂电包,充电和放电分开。如果改用PD输入,产品内部只需要一个能承受20V输入的DC-DC降压到12V,配合一颗受电芯片请求12V档位,就可以直接用65W氮化镓充电器供电。原来那个体积不小的专用适配器直接省掉,BOM成本还有可能降低。
第三个是带电池的智能设备,比如TWS充电仓、电子烟充电仓、剃须刀、吸尘器。产品本身电池充电需要9V或12V的快充档位,用普通5V充电不仅慢,充电管理芯片的绝大多数快充算法也发挥不出来。受电芯片把VBUS提到快充电压之后,后续的Buck充电管理才能正常进入快充模式。
第四个是机器人底盘、云台、无人机地面站这类非标电压设备。由于工作电压不固定,有的要12V、有的要16.8V,如果用PD的固定档位不好匹配,就只能上带PPS功能的受电芯片,向支持PPS的充电头发起一个精确到0.1V或0.02V的电压请求,这在后面选型部分会重点讲。
简而言之,只要产品想从Type-C口取电,并且需求电压超过5V、或者需要动态调节电压,那么一颗PD受电芯片就是刚需。
2. 开发选型要点:五个关键判断
受电芯片选型不像选MCU那样拼资源拼主频,它更多是一道“匹配题”。把下面五个问题想清楚,基本就能锁定具体型号。
2.1 先算清楚功率,再定最高档位
我见过不少开发者上来就问“哪颗芯片支持PD3.1?”,“哪颗能请求28V?”,实际上大部分消费产品最高只需要20V。正确的顺序是先把设备的工作电压和最大电流算出来,再反推PD档位。
举例,一个设备额定输入是12V/2A,那它在PD协议里应该请求12V/3A档位吗?不一定。12V/2A只是典型工况,如果瞬时峰值电流有2.5A,那PDO里12V/3A是合适的;如果峰值只有1.8A,请求12V/2A档位也是可以的。这里有个容易忽视的点:RDO里上报的电流值会作为充电头的过流保护参考值,如果实际负载电流明显大于你请求的电流,部分充电头会判定过流并关闭输出。所以请求电流最好留出20%左右的余量。
再看最大电压档位。普通消费电子PD充电器最高档位几乎都是20V,少数PD3.1/EPR充电器会广播28V、36V、48V。对绝大多数设备来说20V完全够用,没必要为了“支持更高”去选支持EPR的芯片,因为你的设备内部电源设计要为此承受更高的耐压,成本会上去不少。
还需要考虑一个容易被忽略的点:受电芯片的VBUS耐压。芯片请求20V,仅仅是请求,不代表它本身要流过20V的大电流。但芯片需要对VBUS做电压检测,如果它的耐压只有16V,你把它放到20V环境里,上电瞬间就可能烧掉。选型时一定要看芯片的VBUS绝对最大额定值,至少要高于目标档位20%以上。
2.2 PD协议版本和PPS支持怎么判断
协议版本是选型的另一个核心维度。PD 2.0是最早普及的版本,支持5V、9V、12V、15V、20V这些固定档位。PD 3.0在2018年前后普及,新增了PPS(可编程电源)。PD 3.1则引入了EPR扩展功率范围,增加了28V、36V、48V以及AVS自适应电压档位。
绝大多数消费电子产品选PD 3.0芯片就够了,不需要盲目追PD 3.1。原因很简单:市面上65W和100W氮化镓充电器绝大多数最高只广播20V,即使你有28V档位也没地方请求。只有做游戏笔记本外设、大功率电动工具这类需要超过100W的产品,才需要考虑PD 3.1/EPR。
PPS反而是我更建议关注的特性。PPS和固定档位最大的区别在于,它允许Sink端在一个连续电压范围内按很小的步进请求任意电压,通常做到20mV一档,同时也支持精确的电流限制协商。对很多非标电压设备来说,这是救命功能。
举一个真实的项目例子。我做过一块机器人主控板,电池是4串联锂电,满电电压16.8V。如果用固定PD档位,15V不够高、20V又偏高,只能通过后级buck降压,效率损失比较大。后来改用支持PPS的受电芯片,向支持PPS的充电头请求16.8V,实测整机效率提升了大概3到4个点,而且充电头的PPS行为很稳定。
但PPS有个前提:充电头也支持PPS,并且PPS档位范围覆盖你的目标电压。很多65W充电头的PPS范围是3.3V到11V或者3.3V到21V,不同产品差异很大。选型时把这个范围列出来,和自己的需求电压做交集。如果交集没有,就老老实实走固定档位加DC-DC方案。
2.3 配置方式的取舍:硬件引脚、I2C还是固件
受电芯片的配置方式直接决定了你的开发成本和产线可维护性。
第一类是纯硬件引脚配置,典型代表是CH224K这类芯片。芯片上一般有2到4个配置引脚,通过拉高、拉低或者电阻分压组合出目标电压档位。好处是开发极快、不需要写固件、产线上电即用,坏处是电压档位固定,要想改一个电压档位得改电路或者换电阻,非常不灵活。适合需求清晰、批量大、电压档位长期不变的产品。
第二类是I2C/OTP配置。芯片内部有寄存器或NVM存储,主机MCU通过I2C总线写入PDO配置、RDO配置、甚至一些保护阈值。开发灵活度提升了很多,可以在量产前用一个统一固件适配不同批次产品的不同电压需求,不用改硬件。STUSB4500就是这类方案的典型代表,它支持通过I2C写入配置,之后芯片脱离MCU也能独立工作。
第三类是带完整固件和SDK的可编程方案,比如英飞凌的CYPD3175系列。这类芯片内部往往有一个小的MCU内核,可以通过官方IDE和SDK改写整个PD协议栈行为,支持更复杂的策略,比如动态PDO切换、多路电源路径管理、与外置MCU做深度联动。代价是开发门槛高,需要花时间熟悉厂商的工具链。
配置方式怎么选,我给出的判断标准很简单:产品电压需求是否会变?变的话,就选I2C或固件可配置方案。产品体量是否大到可以容忍每台单独刷写?可以的话,I2C或OTP是更稳妥的路线。如果只是做个Demo或者小批量创客项目,硬件引脚方案效率最高。
2.4 外围电路和BOM成本
受电芯片看着小,但它周边的东西往往比芯片本身更影响成本和面积。
首先要看芯片内部是否有完整的Type-C Rd。标准Type-C检测里,Sink端需要在CC1和CC2上各接一个5.1kΩ下拉电阻,让Source端识别到设备接入。很多受电芯片内置了这两个电阻,省一笔成本也省板面积。但也有芯片只提供CC接口,需要外接两个电阻,设计时容易漏掉,导致设备插上后充电头完全没有反应。
其次看芯片对VBUS电源路径的处理。低端诱骗芯片往往直接把VBUS信号送到芯片引脚做检测,但真正的负载电流是单独走线的,中间是否需要FET开关,取决于你是否需要“协议协商完成后再给负载通电”。如果不需要,那VBUS直接连负载端也行,但要注意热插拔瞬间的浪涌电流。高端芯片如STUSB4500和TPS65987D自带电源路径控制引脚,可以驱动外部PFET做负载开关,实现协商完成再接管。
第三是封装。量产电子产品对芯片封装很敏感。SOP8、SOT23-6这类小封装适合手工焊接和低成本SMT;QFN引脚间距小,但散热和EMI可能更有优势。选型时建议优先看自己产线常见的封装类型,能省不少工艺问题。
外层还要考虑过压保护、ESD防护和TVS。PD本身就是高电压切换,VBUS上瞬态过冲是常态,尤其是充电头从5V切到20V的瞬间。如果产品对可靠性要求高,建议VBUS入口加一颗耐压足够的TVS,并在芯片CC引脚上加ESD保护。
2.5 软件工具、开发模板与供应链生态
这一点很容易被忽视,但对开发周期影响巨大。同样标称支持PD3.0的芯片,有的配套了图形化配置工具,几分钟就能生成配置;有的只有一摞寄存器手册,得自己啃协议,试错成本很高。
比如ST的STUSB4500有专门的STSW-STUSB002上位机工具,通过USB转I2C直接在电脑上配置芯片内部NVM,改完即用。英飞凌的CYPD3175有Modus Toolbox和PD协议文档,对老手友好,但对新手来说学习曲线明显陡峭。沁恒这类国产芯片则更接近“上手就能跑”,但遇到兼容性问题往往要靠自己抓包分析,厂商支持相对有限。
供应链稳定性也要纳入考量。受电芯片不是高精尖器件,但它的供货情况直接影响量产。我个人习惯选型号时至少确认两个来源,一个是原厂直供或者代理商备货,一个是电商平台能快速买到的替代或兼容方案。即便贵一点,也值得为供货稳定买单。
3. 主流受电芯片横向参考
这一节直接给可落地的参考。我不打算把所有支持PD sink的芯片罗列一遍,那毫无意义,市面上能列出几十颗。我挑这几颗是基于两点:一是我实际用过的,二是在开发者社区里口碑和可获取性都比较好的。
3.1 代表型号对比表
| 芯片型号 | 主要协议 | 配置方式 | 电源路径 | 典型封装 | 适合场景 |
|---|---|---|---|---|---|
| CH224K | PD 2.0、PD 3.0、PPS | 硬件引脚 | 需外接或直连 | SOP8/QFN类 | 低成本诱骗、简单供电 |
| LDR6328 | PD 2.0/3.0兼容 | 硬件引脚 | 需外接 | SOP8类 | 小家电、便携屏、无线充供电 |
| STUSB4500 | PD 3.0、PPS | I2C/NVM/引脚 | 外接PFET | QFN | 独立运行、NVM固化配置 |
| CYPD3175 | PD 3.0、PPS | I2C+固件 | 可控 | QFN | 复杂策略、需要SDK开发 |
| TPS65987D | PD 3.0、PPS、DRP | 引脚/I2C | 内置+外部结合 | QFN | 需要复杂USB-C电源管理 |
这个表是我根据项目经验整理的一个起点,细节参数要以上市型号最新手册为准。真正选型时,还要看你买到的具体封装后缀,比如CH224K和CH224D就是不同封装、引脚数也不同。
3.2 低成本硬件配置方案怎么选
如果你做一个产品,需求电压很明确,比如固定12V,不想写固件,也不想让产线多一道烧录工序,那CH224K就是经典选择。这颗芯片最突出的价值是“零代码”和“低单价”。你可以通过几个引脚的电平组合直接设定请求电压,从5V、9V、12V、15V、20V里面选。上电之后芯片自动和充电头协商,达到目标电压后VBUS直接提供给后级。
LDR6328在市场上也很常见,尤其在一些PD诱骗模块里。它和CH224K定位类似,同样适合作为低成本方案,芯片可选自动请求模式,不需要外部配置,直接请求最高可用PDO。这个模式适合“接入就尽量吃高电压”的应用,但要注意,自动请求最高档位不一定是合理行为,如果负载不能承受20V,就不该用这个模式。
提一个坑:很多人以为这类芯片工作在PD模式,其实不少诱骗芯片还支持QC协议识别,也就是能兼容某些非PD的快充头。这听上去是好事,但兼容逻辑如果做得不好,也可能出现:接QC头识别到9V、接PD头识别到20V,行为不一致,导致产品稳定性问题。所以我建议只在明确需要兼容QC老充电头的产品里考虑这种“多协议诱骗”芯片,纯PD场景下用单协议芯片更干净。
3.3 I2C可编程和固件可编程路线怎么选
当产品电压需求不是固定一个档位,而是一个范围,甚至需要动态调整时,硬件引脚方案就不够用了。这时候优先看STUSB4500,它支持通过I2C把三组PDO配置烧到内部NVM里,之后芯片独立运行,不需要外部MCU参与。配置完一次,后续每次上电自动按NVM里的设定发起协商,非常适合量产设备。我甚至见过不少产品就是拿这颗芯片当一个“PD口到固定电压”的桥,上位机配置好就发货,整机没有MCU也能快充。
如果配置需求更复杂,比如要同时支持PPS精确调压、需要动态切换多个电压、需要自定义一些协议兼容策略,那就得上CYPD3175这类带固件可编程能力的芯片。它内部的CCG3PA控制器可以在PD协议栈之上做很多策略,而且和主机MCU通过I2C/SPI通信,能实现比较精细的电源管理。代价是SDK上手成本高,有些坑需要自己读协议规范解决。我建议只有当你明确需要PPS精细调压、并且不想外挂一颗独立MCU专门跑PD策略时再选这条路线。
TI TPS65987D是另一个常见选项,支持面更广,涵盖DRP、双口电源管理等。如果你的产品本身是那种“又充电又对外供电”的复杂Type-C设备,它比单纯受电芯片合适得多。但注意,这样选可能已经超出“PD受电芯片”的范畴,更像是在选一颗Type-C控制器了。
3.4 自研PD协议栈的路线适合谁
还有一条路,就是不用成品受电芯片,而是直接用一颗带UCPD外设的单片机自己跑PD协议栈。STM32G0系列、STM32G4系列、部分国产MCU型号都内置了USB PD的硬件PHY和控制器,开发者可以基于官方PD Stack二次开发。
这条路的好处是彻底,PD的每一步行为都掌握在自己手里。比如说你想实现某种特殊的Sink策略、想记录完整的协商日志、想深度联动产品自己的BMS,那外置受电芯片给不了你这种自由度。很多大厂在自研芯片平台上集成PD功能,也是类似的逻辑。
但这条路有明显的门槛。第一,PD协议栈本身有一定复杂度,要处理BMC信号解码、Hard Reset、软复位、错误恢复流程,开发周期至少以月计。第二,USB-IF认证和兼容性测试是个大工程,普通团队不一定愿意投入。所以我的结论是:除非你的产品MCU本身就需要一颗带UCPD的主控,否则没必要为了一个受电功能专门引入自研路线。多数项目用成品芯片,性价比远高于自研。
4. 一个完整实操:把12V设备改成PD快充输入
下面用一个我常举的实例走一遍完整流程:把一个原本用12V/2A专用适配器供电的设备,改成Type-C PD输入。整个过程可以套用到大多数类似项目里。
4.1 从需求倒推选型
先列需求:
- 输入:Type-C口,用普通PD充电器供电;
- 电压:请求12V;
- 功率:整机最大2.5A@12V,也就是30W;
- 成本敏感,优先考虑硬件引脚方案。
30W功率意味着适配器至少需要提供12V/3A的PDO。市面上大多数65W充电头都有12V/3A这个档位,所以这个需求非常常规。受电芯片直接锁硬件引脚方案,选CH224K,或者LDR6328如果希望兼容更多老充电头也可以。这里我以CH224K为例继续。
先确认封装和引脚配置。根据芯片手册,把配置引脚按目标12V电平组合接法处理,简单说就是某些引脚接VDD、某些接地。这个工作很枯燥但必须仔细,因为引脚电平设置错,芯片会请求一个完全不同的电压。
再确认外围。CH224K内部带了Type-C Rd,CC1和CC2可以直接连芯片引脚,不需要外挂5.1kΩ。VBUS检测脚接VBUS,并加一个小电阻做限流。输出端是否加PFET?我建议加。因为要实现“协商完成后才通电”,否则插上充电头瞬间,VBUS还是5V,如果设备内部电路按12V设计,直接通5V可能进入欠压状态,对一些电源管理IC来说并不友好。
4.2 硬件连接和注意事项
下面是我常用的一个最小连接思路,具体到引脚编号请严格按芯片手册来:
Type-C母座CC1连芯片CC1,CC2连芯片CC2。如果母座是16Pin的标准Type-C,记得CC引脚上一般还要加一个1kΩ左右的串联电阻,这个细节直接影响信号质量。
VBUS从母座出来后兵分两路:一路给芯片的VBUS检测脚,另一路走功率路径到外置PFET的源极,PFET的漏极再接负载。这样在PFET导通之前,负载是断电的。
PFET的栅极由芯片的输出控制脚驱动。不同芯片控制逻辑不同,有些是高电平开启,有些是低电平开启,接线时要注意电平匹配。
建议在VBUS入口放一个100μF左右的电解电容,吸收充电头切换档位时的瞬态能量。配合一个足够耐压的TVS管,可以很大程度避免热插拔瞬间把后级电路打坏。
如果产品对EMI敏感,在PFET栅极加一个10Ω电阻和一个10kΩ下拉,放缓开关速度,可以降低浪涌。
这是标准的“协议协商先通、功率路径后通”设计。虽然对诱骗板来说直连VBUS也能跑,但量产产品我强烈建议加PFET,热插拔的可靠性差距非常大。
4.3 I2C芯片的一次配置过程
如果换用STUSB4500这类I2C配置芯片,整个开发流程会多一道“烧配置”的步骤,但换来的是电压可改、策略可调。
以STUSB4500为例,配置流程大致如下:
- 用USB转I2C的适配器连接芯片的SCL/SDA引脚;
- 在STSW-STUSB002工具里,定义PDO1、PDO2、PDO3三组电压电流。比如PDO1设成5V/3A,PDO2设成9V/2A,PDO3设成12V/3A;
- 定义好RDO策略,也就是芯片优先请求第几个PDO。这点很关键,你可以让芯片首选12V,也可以让它按充电头实际广播顺序选择;
- 把配置写入芯片内部NVM,芯片重新上电后自动生效。
自己写代码配置也不复杂,核心就是通过I2C往NVM区块写DWORD类型的PDO寄存器。下面是一个用Python通过I2C适配器配置的伪代码思路,实际项目里我用的是类似逻辑:
import smbus bus = smbus.SMBus(1) dev_addr = 0x28 # STUSB4500的I2C地址 # 通过I2C写NVM的起始位置、长度、页地址 def write_nvm(start, data): bus.write_i2c_block_data(dev_addr, 0x00, [start & 0xff, (start >> 8) & 0xff, len(data)]) bus.write_i2c_block_data(dev_addr, 0x02, data) # 触发PID刷写命令 bus.write_byte_data(dev_addr, 0x05, 0x03) # 定义12V/3A档位PDO,具体字节格式需参手册 pdo_12v = [0x00, 0x87, 0x00, 0x03, 0x0C, 0x00, 0x00, 0x00] write_nvm(0x00, pdo_12v)这段代码只是示意,真实NVM格式比较复杂,不同芯片地址和寄存器完全不同。动手之前,务必找到对应芯片的“NVM programmer”章节,把每一位的含义吃透再操作。
4.4 测试验证要点
硬件和配置都做完,上电验证按这个顺序来:
- 用万用表测Type-C母座VBUS空载电压,插充电器前应该为0V;
- 插入充电器,测VBUS电压,应该先出现5V,然后瞬间跳到请求的12V;
- 观察CC1或CC2引脚电压,正常在0.3V左右,这个值代表Rd已经正常拉低,Source识别到了Sink接入;
- 用电子负载逐步增加电流,从0.5A到2.5A,确认VBUS电压稳定,没有明显跌落;
- 做热插拔测试,反复插拔充电器,确认每次都能正确切到12V,没有卡死在5V。
如果手里有PD协议分析仪,比如带抓包功能的USB-C分析仪,可以顺便看一下协商记录,确认PDO广播、RDO请求、Accept消息都是正常顺序。这个工具对排查兼容性问题帮助极大,后面调试部分会再说。
5. 调试实录:常见坑和排查方法
受电芯片调试不像MCU程序那样有明确的Log可以打印,出了问题往往表现为“电压不对”这一个现象,但背后原因五花八门。下面这几类是我在项目里反复踩过、也是社区里出现频率最高的问题。
5.1 充电头不升压,一直停留在5V
这是最典型的故障,而且新手特别容易中招。原因可以分成三种:
第一种是CC线上的Rd没生效。如果你用的芯片需要外接5.1kΩ电阻,而你又忘记接,或者PCB走线断开,Source端根本检测不到设备接入,自然不会进PD协商。排查方法是量CC脚电压,如果CC脚对地电压约为0V,那大概率是Rd没接好;如果是0.3V左右,通常说明识别正常。
第二种是芯片的配置脚不对。有些芯片配置脚是悬空也能工作的,但会进入默认模式,请求的电压可能不是你想要的。像CH224K这类芯片,配置脚必须按手册精确拉高拉低,任何一个脚悬空、误接到别的电平,都会导致请求错误档位。
第三种是充电头根本不是PD充电头。有些充电头是QC协议或者私有协议,虽然也是快充,但走的不是PD通信。受电芯片如果只支持PD,面对QC头就会协商失败,停在一个默认的5V。这也是我前面提到多协议兼容芯片适用场景的原因。拿一个你确定支持PD的充电头交叉测试,是最快的排除手段。
5.2 插拔后电压恢复慢,或者偶发性卡在旧档位
这个现象在高功率充电头上更明显。PD协议本身有严格的软复位和硬复位流程,如果Sink端在拔出瞬间没有正确响应复位信号,充电头可能停留在上一次协商的档位状态,下一次插入时行为异常。
排查思路是确认Sink端是否在检测到CC断开后主动释放CC线上的驱动,并让Ft恢复正常。部分低成本芯片在快速插拔时复位时序处理得不够快,就会出现偶发问题。解决方案可以是: 在外围增加一个CC放电电路、或者把复位检测做得更快。不过普通项目碰到这种问题,更实际的做法是换一颗兼容性更好的芯片测试,有时候纯硬件上的Rd电阻和走线寄生电容也会有影响。
另外,如果你用了外置PFET作为电源路径开关,当充电头已经切换电压、但PFET还没完全导通时,后级可能出现短暂的输出不稳定,表现为所有现象都正常,负载电流一拉就掉电压。这种情况不是受电芯片的锅,而是你电源路径开关时序没匹配好。
5.3 VBUS过冲把后级打坏
这个坑我吃过大亏。PD充电头在收到RDO请求后,内部会从5V升到12V/20V。切换的瞬间,VBUS上会产生一个比较明显的过冲,幅度取决于充电头的内部设计和后级容性负载。如果后级没有足够的吸收电容或者保护元件,这个瞬态过冲很可能打到电源管理芯片的耐压上限,直接烧掉。
解决方案有几层:第一,VBUS入口加大容量电容,100μF以上起步;第二,加TVS管,选一个耐压比目标档位高20%左右、钳位电压能保护后级的型号;第三,用受电芯片自带的电源路径控制引脚,让PFET在VBUS稳定之后再导通,避免浪涌直接灌入负载。还有就是PCB布局上,VBUS功率路径尽量宽、短,寄生电感过大反而会加剧过冲。
5.4 功率上不去,充电头发热严重
这种问题通常不是受电芯片本身造成的,而是整条供电链路效率不匹配。前面说了,受电芯片只是一个协议协商器,真正的电流路径是从充电头VBUS直接到你的后级电路。如果你在产品里做了一个5V转12V的boost,再用PD芯片请求12V,那等于多此一举,效率还低。
正确的做法是让PD芯片请求到目标电压之后,再用一个高效DC-DC降压到负载实际需要的工作电压。比如你的电机是12V,PD输入请求20V档位,再通过Buck降到12V,会比直接请求12V更高效吗?不一定。这里面有个最优解的问题。一般来说,如果PD充电头的12V档位电流余量足够,直接请求12V接Buck的输入,会少一轮变换损失。只有当你需要大功率,而充电头12V档位电流不够,20V档位才有优势。
功率上不去还有一个常见原因,是你请求的RDO电流值低于实际负载电流。前面2.1节提过,RDO电流是充电头过流保护参考,如果你的负载会瞬态拉到3A而RDO只报了2A,一些充电头会在瞬间判定过流,切回5V或者直接关闭输出。遇到这种情况,把RDO电流抬高,或者类型换成更高档位的PDO,往往能解决。
6. 我的选型心得与建议
说了这么多,最后讲点个人体会。
我是做智能硬件出身,早年项目里没少用“5V升12V”这种硬扛方案,效率低、发热大,后来被一个做电源的同事纠正,才意识到PD受电芯片才是现代设备供电的正确打开方式。这个转变之后,我所有需要快充输入的产品,基本都统一到了Type-C PD这套体系里。不是说传统适配器方案不能用,而是PD输入让供应链更简单、用户更友好,一根线走天下。
具体到选型,我的经验可以浓缩成一句话:先看电压电流,再看PPS,最后看配置方式。硬件引脚方案适合固定需求、大量量产;I2C/NVM方案适合需要灵活调电压、或者出厂前可能要改配置的产品;固件可编程方案适合要做复杂策略的玩家。不要一开始就冲着高端方案去,一颗几块钱的CH224K解决80%固定电压需求,真的没必要上几十块的可编程方案。
调试上,强烈建议备一个支持PD抓包的分析仪。很多“兼容性问题”其实通过抓包一眼就能看出原因,比如充电头广播的PDO和芯片请求的档位不匹配、Hard Reset反复触发、复位时序异常。没有抓包工具就只能盲猜,盲猜的效率极低。
最后一个实用技巧,很多开发者在做兼容性测试时只拿一两颗充电头验证,这远远不够。我自己的做法是准备一个“充电头兼容性测试矩阵”,把市面上主流的65W、100W氮化镓充电器尽量借几颗回来,每一颗都跑一遍上电协商、热插拔、满载测试,记录实测结果。PD协议兼容性这东西,真的只有实测才能让你心里有底。