做硬件这几年,一个特别直观的感受是USB PD的功率天花板正在快速抬高。以前给电池设备设计充电方案,做到100W基本到头了,毕竟PD 3.0时代的最大档位就是20V/5A。但这两年,支持EPR(Extended Power Range,扩展功率范围)的PD 3.1方案逐渐普及,28V、36V、48V三档高压直接把Type-C口的供电能力推到了240W。Diodes的USB Sink控制器在PD EPR方案里能做什么、设计时怎么选、有哪些坑,今天就把我实际做项目时积累的东西整理出来,给正在评估同类方案的硬件工程师一个参考。
1. 为什么EPR突然成了电池设备绕不开的话题
1.1 SPR与EPR:从100W到240W的本质差异
要理解EPR的价值,得先回顾一下USB PD协议在功率档位上的演进。PD 3.0时代的标准功率范围SPR(Standard Power Range)里,固定PDO集中在5V、9V、15V、20V这四档,最大电流5A,所以理论上限是20V*5A=100W。这个档位对手机、平板、便携显示器这类设备完全够用,但放到游戏本、无人机、电动工具、户外电源、机器人这些大功率电池设备上就有点捉襟见肘了。
PD 3.1引入EPR后,事情起了变化。标准里增加了28V、36V、48V三个高压档位,电流还是5A,但功率上限直接来到140W、180W、240W。这三档不是简单地把电压拉高,而是通过了一种特殊的工作模式:Sink端和Source端先完成EPR模式进入流程,之后才能请求EPR PDO(Power Data Object,功率数据对象)。普通SPR充电器和SPR设备之间是没法直接使用这些高压档位的,必须两端都支持EPR才行。
我给一个更直白的对比,方便你快速判断自己的产品需不需要EPR:
| 项目 | SPR(标准功率范围) | EPR(扩展功率范围) |
|---|---|---|
| 典型电压档位 | 5V、9V、15V、20V | 28V、36V、48V |
| 最大电流 | 5A | 5A |
| 最大功率 | 100W | 140W / 180W / 240W |
| 进入方式 | 上电直接协商 | 需要EPR模式进入流程 |
| 典型应用 | 手机、平板、小家电 | 游戏本、无人机、户外电源 |
| 对Source要求 | 普通PD充电器即可 | 必须支持PD 3.1 EPR |
一句话总结,EPR解决的是“超过100W的Type-C供电”问题。如果你的设备功耗超过80W,或者你想让充电速度有明显提升,EPR就是值得认真考虑的方向。
1.2 电池设备对大功率充电的真实需求曲线
我做过的电池设备项目里,有几个场景对功率的需求非常典型。第一个是高性能笔记本,尤其是带独显的型号,满载功耗轻松超过130W,如果用SPR 100W充电,边用边充时电池会持续掉电,体验很差。第二个是无人机和机器人,这类设备电池容量大,而且任务间隙充电时间短,充电功率直接决定出勤效率。第三个是户外电源和电动工具,电池动辄几百瓦时,没有高压快充的话,充满电要等大半天,放在现代工作流里根本没法接受。
但这里有个容易被忽略的点:这些设备并不是一直都在满功率充电。拿笔记本来说,待机时可能只需要20W-30W,渲染视频时突然跳到120W以上。如果Sink控制器只能固定请求一个最高档位,整个充电过程就会很浪费,甚至对电池寿命有害。所以Diodes这类Sink控制器在设计上特别强调“灵活配置”和“动态调整”,目的就是让设备根据当前负载和电池状态,随时请求最合适的电压电流组合。
从系统的角度看,EPR Sink控制器的存在价值不仅仅是“能把48V请求下来”,而是它能够在EPR、SPR、PPS(可编程电源)等不同模式之间平滑切换,适配各种来源的充电器。这一点对电池设备尤其重要,因为你永远不会知道用户会拿什么样的充电器插到你的产品上——可能是原装240W充电器,也可能是酒店床头那个5V/1A的老古董。
2. 拆解Sink控制器在PD充电链路里的真实角色
2.1 Sink与Source:谁在说话,谁在听话
很多人刚开始接触PD协议时,容易被Source和Sink这两个概念绕晕。我用一个生活化的类比来解释:Source是供电方,相当于发电厂;Sink是用电方,相当于你家里的电器。发电厂输出多少电压、多少电流,需要电器这边主动申请,而不是发电厂单方面决定。
在USB Type-C物理连接上,Source端的CC1/CC2引脚会通过上拉电阻Rp发出信号,Sink端则通过下拉电阻Rd(典型值5.1kΩ)来表示自己是一个Sink。连接建立后,Source会先发送Source_Capabilities消息,列出自己支持的所有PDO档位,相当于发电厂宣布:我能提供5V、9V、15V、20V,如果你支持EPR,我还能提供28V、36V、48V。
接下来就是Sink控制器的核心工作了:它要综合自己的需求和条件,从这些PDO里挑一个最合适的,然后发送Request消息给Source,Source确认后再把VBUS升到目标电压。在EPR场景下,这个流程还要多一步:Sink先发送EPR Request消息进入EPR模式,双方确认之后,Sink才有资格去请求28V以上的EPR PDO。整个过程看似简单,但涉及状态机、时序、错误重试、电压转换等一堆细节,靠MCU裸跑很难做得可靠,这也是专用Sink控制器存在的意义。
2.2 单芯片搞定协议栈:Diodes Sink控制器的硬件架构
Diodes这类型USB Sink控制器,内部集成度比我早期用MCU加分立器件搭方案时高太多了。一颗芯片内通常包含了BMC物理层收发器、协议引擎、状态机、VBUS放电路径控制、以及一系列保护功能。我只需要在外面放几个电容电阻,再加上一颗MOSFET做VBUS开关,就能搭出一条完整的PD Sink通路。
具体来说,芯片内部有几个关键模块。第一是CC接口逻辑,负责检测Rp/Rd状态、解析BMC编码信号,判断连接的Source电流能力。第二是协议引擎,自动处理PD协商流程,我不用自己去实现复杂的状态机,只需要告诉控制器“我希望请求多少伏多少安”。第三是电源路径控制,通过内部驱动电路控制外部MOSFET的开关,实现VBUS的通断和浪涌控制。第四是保护逻辑,包括过压保护OVP、过流保护OCP、欠压保护UVP等。
用单芯片方案还有一个很实际的好处——低功耗。电池供电设备对静态电流非常敏感,尤其在小电流待机状态下,如果Sink控制器本身就吃掉几十毫安,那整个系统的续航就会大打折扣。Diodes这类控制器在休眠模式下能进入极低功耗状态,有些能到几百微安甚至更低,这对便携设备来说是很关键的优势。
2.3 配置不只是选电压:SPR/EPR/PPS模式的取舍
实际设计里,最纠结的不是电路,而是模式配置。Sink控制器通常支持多种工作模式,你要根据产品定位决定是只支持SPR,还是SPR+EPR,还是再叠加PPS。
先说SPR Only的情况。如果你的设备最大功耗在80W以下,其实不太需要EPR,把20V/5A这档用好就足够了。SPR模式的好处是兼容性极好,市面上几乎所有的PD充电器都支持至少20V/3A,用户随便找一个Type-C充电器都能用。PPS模式我建议做锂电池直充时考虑,它能提供20mV一档的电压精细调节,适配电芯的恒流恒压曲线,省掉一级DC-DC转换损耗。
EPR模式则需要产品团队认真权衡。支持EPR意味着Sink控制器要处理更高的VBUS电压、更严苛的绝缘要求、更大的Layout体积,成本也会上升。如果产品确实需要120W以上的充电功率,EPR就是必选项;如果只是想要一个营销噱头,那就性价比不高了。我做过的比较合理的策略是:控制器本身支持EPR,但在固件里把EPR功能做成可选,出货时通过电阻配置或I2C烧录决定是否开启。这样同一套硬件可以覆盖不同SKU,备货压力小很多。
3. 基于Diodes Sink控制器的设计实操要点
3.1 最小系统电路:五分钟看懂参考设计
拿到一颗Diodes Sink控制器的参考设计,你会发现外围电路远比想象中简单。核心器件就几样:控制器本体、VBUS路径上的MOSFET、CC引脚的两个Rd下拉电阻(5.1kΩ)和ESD保护器件、电源去耦电容、以及用于配置状态的电阻或I2C接口。
我展开说一下关键节点的设计思路。首先是VDD供电,有些控制器直接从VBUS取电,内部做LDO稳压;有些则要求外部提供3.3V。用VBUS取电的优点是省一路电源,但要注意上电时序——VBUS从0V升到5V的过程中,内部LDO必须有足够的建立时间,保证芯片在最开始就能正确检测CC状态。如果上电太快,可能导致CC检测窗口错过,协商失败。
VBUS通路是EPR设计里最需要小心的部分。控制器通常不直接承载充电电流,而是通过外部N沟道MOSFET做开关,控制器输出的栅极驱动信号来控制MOSFET的开通和关断。选择MOSFET时,除了看导通电阻,更关键的是耐压。做48V EPR方案,MOSFET的VDS额定值至少选80V以上,40V的管子用在48V场景下余量太紧,一旦有尖峰就很容易击穿。
CC引脚的ESD保护也不能省。Type-C接口经常在用户插拔瞬间产生静电,CC引脚上如果没有TVS管,轻则控制器误动作,重则直接烧芯片。我一般会在CC1、CC2、VBUS、D+/D-这些引脚上都加上符合IEC 61000-4-2标准的TVS阵列,选型时注意结电容要低,避免影响高速通信和BMC信号质量。
3.2 PD协商的关键时序:从连接检测到EPR进入
PD协商看起来只是一次“请求-应答”,但里面有个时序细节直接影响用户体验:连接检测去抖时间。Type-C规范里,Sink端的CC检测有一个tCCDebounce时间,典型值在100ms到200ms之间。我在调试时遇到过一个问题:设备上电后,VBUS要过很久才稳定输出,用户感觉“插了没反应”。排查下来发现,是因为CC检测去抖时间设置得太长,控制器迟迟没有确认Source的存在,后续的协商自然被推迟。
正常协商流程走一遍大概是这样的:第一步,物理连接稳定,CC引脚检测到Rp上拉,确定Source存在。第二步,Source发送Source_Capabilities,Sink端收到后解析PDO列表。第三步,Sink控制器根据内部配置选择目标电压电流,发送Request。第四步,Source回Accept,接着发送PS_RDY,同时把VBUS抬升到目标电压。第五步,Sink检测VBUS稳定,打开VBUS MOSFET,开始取电。
进入EPR模式时,流程会多两拍。Sink先看到Source发来的Source_Capabilities里带有EPR PDO,然后发送EPR Request消息,Source确认后,双方进入EPR通信状态,这时候再重发Request去选择28V、36V或48V档位。这个“先进模式再请求档位”的流程很容易被初学者忽略,如果你跳过EPR Request直接去请求48V,Source会把这个请求当成非法消息直接丢弃,协商就会卡住。
3.3 让同一套硬件适配多种设备的配置思路
Sink控制器的很大一个卖点就是可配置性。同一个芯片,放在电钻里可以请求20V/5A,放在户外电源里可以请求48V/5A,放在小风扇里可能只需要5V/2A。这种灵活性是靠配置引脚和内部寄存器实现的。
设计中最常见的做法是使用电阻分压配置默认PDO。控制器的某个配置引脚上接一个电阻到地,不同的电阻值对应不同的请求电压电流组合。我在批量生产时会把配置电阻放在0欧姆电阻或精密电阻位,产线通过贴不同阻值的料来区分不同型号,这样主板上料流程统一,只是BOM略有差异。缺点是改配置要换电阻,不够灵活。
如果产品需要动态切换工作模式,I2C配置就更好用了。系统主控通过I2C总线读写控制器的寄存器,比如设置目标电压、使能PPS模式、调整OVP阈值、查询当前协商状态。我在做一款二合一平板时就是这么干的:Windows下性能模式请求20V/5A,平板模式省电状态请求15V/2A,甚至可以在检测到电池电量极低时,主动请求更低的PDO来保护电芯,这些逻辑全部由主控在后台实时调度。
3.4 与充电IC配合:Sink控制器不是充电管理器
这里必须澄清一个很容易混淆的概念:Sink控制器的职责是“向充电器申请合适的电压和电流”,但它本身不做充电管理。真正决定电池怎么充、恒流多大、恒压多少的是后级的充电IC或PMIC。
所以完整的链路是:充电器(Source) -> Type-C连接器 -> Sink控制器(协商PDO) -> 充电IC(充电管理) -> 电池。Sink控制器把VBUS稳定在20V,然后充电IC自己决定是用20V做Buck降压到8.4V给两串电池充电,还是用PPS直充模式通过Sink控制器的请求来调整Source输出电压。
我在设计里遇到过一种做法,把Sink控制器和充电IC之间用硬件握手信号连接,Sink控制器把“当前VBUS电压是否就绪”通过一个GPIO发给充电IC,充电IC再决定是否开始充电。这种硬线连接比I2C通信更可靠,尤其在系统主控还在启动阶段时,硬件信号能保证时序上不出现竞争。实际项目中,我会同时设计I2C状态读取和GPIO握手信号,两者互为备份,确保任何异常情况下系统都能安全退出。
4. 设计避坑指南:EPR设备设计里的真实教训
4.1 48V下的Layout与器件耐压不能照抄20V经验
第一次做48V EPR方案时,我最开始直接复用了一个20V PD方案的PCB Layout,结果打样回来出现两个问题:一是VBUS走线间距不够,高压爬电距离不足,48V下容易打火;二是旁路电容选的50V耐压,理论上够,但叠加纹波和尖峰之后余量太小,长期可靠性堪忧。
EPR设计里,PCB Layout有几个硬性要求。VBUS走线的电气间距要按照高压规则来,IPC-2221标准里有明确的铜箔间距要求,AC 48V对应爬电距离至少要留几百密尔。如果PCB空间紧张,至少要把VBUS走线的开窗和相邻信号线拉开,宁可在其他信号线上让出一点空间,也不能在高压通路上省间距。
其次是电容和MOSFET的降额。48V的VBUS上,旁路电容我建议选100V耐压或者至少63V,不要用50V的极限挡。MOSFET的VDS要降额使用,标称80V的管子实际工作48V大约只有60%的降额,这是我目前接受的下限。如果走线的寄生电感较大,开关瞬间产生尖峰,VDS超过额定值的情况我遇到过不止一次,所以有条件的话选100V的管子更稳妥。
4.2 充电器兼容性:EPR Sink会碰到哪些不配合的Source
EPR Sink控制器在实验室里和原装充电器测试一切正常,一到用户手里就各种“不能充电”“充电极慢”,这类问题我碰到太多次了。原因很简单:用户手上的充电器五花八门,很多压根不支持PD 3.1 EPR,甚至有些只支持PD 2.0,连EPR的概念都没有。
兼容性问题的核心在于Sink控制器要有一个合理的回退策略。检测到Source不支持EPR时,控制器应该自动回退到SPR模式,老老实实请求20V/5A,而不是一直卡在等EPR PDO的状态里。我用Diodes控制器做测试时,它的协议栈对这种情况处理得比较成熟,会主动降级到Source能力范围内的最高档位,整个协商过程对用户来说是无感的。
另一个容易踩的坑是私有协议充电器。很多国产手机充电器虽然Type-C口,但内部走的是VOOC、SCP这类私有协议,只在特定条件下才开启PD模式。如果Sink控制器固件里对PDO解析不够健壮,接收到某些非标PDO时可能会误判。我现在的做法是准备一个充电器兼容性测试矩阵,覆盖常见的PD 2.0、PD 3.0、PD 3.1充电器,以及几款典型的私有协议充电器,每版固件都要跑一遍整套用例。
4.3 排查工具与调试方法:抓包和量测是两条腿
调试PD协议问题时,工具选择很关键。USB PD分析仪是必备的,它能实时解析CC线上的BMC信令,把Source和Sink之间交互的消息一一列出来,哪些消息发了、哪些消息没回、错误码是什么,一目了然。我常用的调试流程是:先把分析仪串在充电器和设备之间,复现问题,抓取完整的协商日志,然后对照协议规范逐条分析。
除了PD分析仪,示波器也是排查硬件问题的利器。用示波器看CC引脚的BMC波形,能确认物理层通信是否正常,比如幅值够不够、时序对不对、有没有毛刺。有些协商问题其实是信号质量问题,不是协议逻辑问题。我还要强调一下VBUS电压的测量,EPR模式下VBUS跳变幅度很大,从20V跳到48V,示波器探头档位要提前设好,否则容易削波或者损坏探头。
调试中常见的问题和解决思路,我整理了一张速查表:
| 现象 | 可能原因 | 排查方法 |
|---|---|---|
| 协商失败,设备不充电 | Source不支持目标PDO | 换一台已知支持的充电器复测 |
| 电压请求成功但带载掉压 | VBUS走线过长或过细 | 量测VBUS端到端压降 |
| CC信号波形异常 | ESD器件寄生电容过大 | 换用低结电容的TVS |
| EPR进入请求无响应 | Source固件BUG或线缆问题 | 换线缆换Source交叉验证 |
| 过压保护频繁触发 | VBUS尖峰过高 | 加大输入电容或调整OVP阈值 |
| 休眠电流超标 | 控制器未进入低功耗模式 | 检查GPIO状态和配置 |
4.4 从20V到48V:一次典型的EPR切换测试实录
最后分享一个我调试EPR切换时遇到的典型案例。设备初始以20V/5A运行,系统检测到需要更高功率,于是Sink控制器发起EPR模式进入流程,请求切换到48V/5A。第一次测试时,切换瞬间VBUS产生了明显的过冲,电压峰值超过55V,把后级的充电IC输入保护触发了,整个系统直接掉电重启。
排查思路是分两步走。先看协议层面,用PD分析仪确认EPR请求和Source的响应时序都正常,协议确实走完了;再看硬件层面,用示波器抓切换瞬间的VBUS波形,发现过冲来自MOSFET关断时储能元件的反向电动势,以及Source端的输出电容和寄生电感形成的LC振荡。解决办法是增加了软启动时间,把Sink控制器发出的栅极驱动信号的上升斜率放缓,同时加大输入端的电容吸收尖峰。调整之后,切换瞬间的过冲被压到了50V以内,系统稳定通过测试。
这个案例给我的启示是,EPR设计不能只盯着协议栈,硬件电路对高压大电流的适配同样重要。Diodes这类Sink控制器提供了灵活的时序和驱动配置,但最终的系统稳定性还是取决于工程师怎么用这些配置去匹配实际电路。多做几轮调试、多积累几组波形,比什么参考设计都管用。