可编程USB-C控制器CCG3PA:从协议碎片化到单芯片快充方案
做电源和嵌入式开发这行这几年绕不开的就是USB-C和快充协议。Cypress现在归入英飞凌正式发布了高度集成的可编程USB-C控制器EZ-PD CCG3PA这颗料原生支持Power Delivery 3.0和Quick Charge 4.0我拿到公开资料后的第一反应是早年做多协议充电器那种协议芯片MCU独立MOSFET采样电阻堆一板的方案终于可以收工了。这篇不打算念数据手册就从一个做产品的人的角度聊聊这颗芯片到底解决了什么问题、硬件上怎么搭、量产调试有哪些坑以及它发布背后反映出USB-C快充方案的哪些趋势。1. 为什么USB-C充电方案越来越需要可编程这颗药1.1 USB-C充电的协议碎裂困局先说说我当年做充电器遇到的实际问题。2017年前后市面上的快充协议已经开始分裂得不像话QC2.0/QC3.0、USB PD、华为FCP/SCP、OPPO VOOC、联发科PE、三星AFC、Apple 2.4A还有最基础的BC1.2。每个协议不仅电压电流档位不同连物理层的握手信号都不一样。D/D-上的电平翻转、频率脉冲、电流灌入模式各有各的规矩。你做一个双口充电器想让iPhone、安卓旗舰、平板、笔记本都满速充电就得把所有这些协议都识别一遍。更麻烦的是USB-C口以后充电器不只是输出固定电压还得跟设备在CC线上做完整的PD协商。CC线这个问题很多刚接触USB-C的硬件工程师会忽略。过去micro-USB时代D/D-只是数据脚充电识别靠电阻或短接。但USB-C天然带了两根配置通道CC1/CC2插头正反插就是靠它们识别方向PD通信也跑在这上面。设备插入后双方要在CC线上通过BMC编码做双向通信反复交换我能给出什么电压我能接受什么电压最终确定一个共同认可的工作点。这就带来一个本质变化充电芯片不再是一个简单的逻辑判断器它要跑一整套通信协议栈。而通信协议栈这玩意天生就是固件的活不是硬件逻辑能轻松搞定的。所以你会发现市场上真正好用的PD控制器无一例外都内置了MCU内核用软件去解析CC线上的报文。这就是可编程三个字的第一个含义——它有个大脑不是一颗死逻辑芯片。1.2 传统方案的无奈分立器件堆出来的兼容性在CCG3PA这类高集成芯片出现之前想做一个全协议兼容的多口快充硬件上是什么局面我举个例子。一颗协议识别芯片比如某些老牌识别IC负责D/D-的协议检测和诱骗它的输出可能只是一个GPIO电平或者I2C信号告诉主控现在应该输出9V还是12V。主控MCU再根据这个信号调整反馈环路。这中间还缺不了电流采样电阻和运放因为你要做恒流和限流保护采样电阻上的压降要放大后送进比较器。VBUS开关用一颗P-MOSFET或负载开关芯片。还要一颗LDO给整个控制回路供电。算下来一个单C口PD充电器控制部分就是六七八颗芯片占掉的PCB面积非常可观而且每一颗芯片都会引入一个故障点。兼容性是另一个痛点。软件协议栈分散在独立的MCU里那颗协议识别芯片的固件是写死的你没法升级。今天出了一台新的手机握手逻辑跟以前不太一样市场上会先出现一批识别不到快充的充电器只能等芯片原厂出新固件的型号你再改版。这种节奏在消费电子领域几乎没法接受。1.3 Highly-Integrated Programmable到底指什么Cypress给CCG3PA的定语是Highly-Integrated Programmable这八个字其实把产品内核说完了。Highly-Integrated意味着协议栈、MCU、Flash、电流检测、VBUS开关驱动、CC/CV环路、必要的保护逻辑能塞进去的都塞进去Programmable意味着你可以把固件当成产品的一部分来定制管脚定义了、PDO配置了、逻辑行为改了一个料号可以覆盖十几个SKU。这跟ECU调参很像同一台发动机通过刷不同的标定数据就能输出不同的功率特性同一颗CCG3PA通过写不同的配置就能让适配器变成纯PD输出或者走QC4或者兼容老式Apple 2.4A。产品经理不用再纠结这颗料支不支持AFC开发阶段就能动态调整而不是重新画板子。这一点对方案商和品牌商都是实打实的效率提升。2. CCG3PA的核心底牌PD 3.0与QC 4.0在芯片内部怎么握手2.1 协议支持矩阵不只是PD和QC先梳理一下CCG3PA在协议层面能覆盖多少场景。根据公开资料它不只是支持USB Power Delivery 3.0还通过固件配置覆盖了高通Quick Charge 4/4同时兼容BC1.2、Apple充电识别等老协议。对电源适配器来说常见配置下可以覆盖的协议包括协议类型通道典型应用USB PD 3.0含PPSCC线笔记本、手机、游戏机Quick Charge 4/4CC线基于PD PPS高通平台手机AFC三星D/D- 或自定义三星手机、平板FCP华为D/D- 或自定义华为/荣耀部分机型Apple 2.4AD/D- 分压iPhone、iPad老设备BC1.2D/D- 短接各种标准5V设备看到这个表可能有人会问QC4怎么就跑到CC线上去了这要从高通的产品策略说起。QC4/4和以前的QC3.0有本质区别它放弃了D/D-的传统A/B/C类握手改走USB PD协议里的PPS档位也就是可编程电源。简单说QC4继承的是PD的物理层和协议层高通只是定义了上层的一小套私有策略。所以业界经常说支持PD3.0PPS的芯片天然就具备了承接QC4/4的基础。CCG3PA这么做等于用一套PD协议栈同时满足了高通新平台的需求同时又给老协议留了兼容通道。2.2 PPS不是噱头是快充体验的分水岭很多人对PD3.0的印象还停留在5V、9V、12V、15V、20V那几个固定档位。实际上PD3.0引入的PPS可编程电源才是真正的技术分水岭。固定PDO像自助餐厅的固定套餐只有几种组合PPS则像自选餐台允许充电器和手机在通信过程中以20mV为步进细调电压、以50mA为步进细调电流。手机快充最怕的就是电压过冲造成发热PPS让SoC的充电管理单元可以实时给充电器下指令现在电池快满了电压往下调一点温度有点高电流降一档。CCG3PA对PPS的支持我理解是硬件和固件同时做了优化。电压环路不是简单数模转换器查表而是支持动态跟随目标值变化环路响应速度要够快否则PPS调压过程中很容易出现电压过冲。做适配器的人都知道环路响应和稳定性是一对矛盾补偿参数调不好轻则充电慢重则在某些负载下听到啸叫甚至输出振荡。这颗料把CC/CV环路做进芯片内部好处是补偿设计有官方参考可以直接抄不用再自己用分立运放慢慢调。我说一个可以放进固件配置里的典型PDO结构大家感受一下什么是PD3.0PPS的实际样子// 适配器PDO配置示意 PDO1: Fixed 5V / 3A // 基础档兼容所有设备 PDO2: PPS 3.3V-16V / 3A // 每20mV一步给手机快充分 PDO3: Fixed 20V / 2.25A // 给笔记本45W档位这种结构在配置工具里可以直接填。PPS档看起来像一个范围但设备会在这个范围内申请具体的电压电流点芯片跟着走就行。2.3 单芯片方案里到底集成了什么从官方框图看CCG3PA内部做了相当多的整合。它内置了一个ARM Cortex-M0内核和Flash存储这是跑协议栈的大脑还集成了VBUS端FET的栅极驱动电路可以直接推外部功率MOSFET省掉专门的驱动芯片内置了电流检测放大器配合外部采样电阻完成输出电流的监测不需要额外运放再往下CC1/CC2引脚上做了必要的协议收发器还有dead battery模式就是给没电的设备插入时芯片能在无系统供电情况下完成初始上电过程让设备立刻进入充电状态。这里面我最想强调两个容易看漏的点。第一个是VBUS放电电路。PD规范要求电压切换时VBUS要先放电到安全电压再升到新目标否则接口处可能出现危险电压。CCG3PA内部集成了放电通路的相关控制这对适配器整机的安规测试帮助很大。第二个是NTC温度检测通道。适配器过热保护通常需要一路热敏电阻采样很多分立方案要自己搭比较器这颗料直接支持NTC输入固件里配一下阈值就行。2.4 老协议、新协议并存时的调度逻辑很多工程师会忽略一个问题当一颗芯片同时兼容PD和Apple 2.4A时怎么决定当前该跑哪套协议答案是时序优先物理口区分。整套协商过程大体是设备插入→CC检测到上拉/下拉→等待一段固定时间看有没有PD的SOP报文→如果收到走PD流程如果超时没收到再退回D/D-上的传统识别流程。这个策略保证了老设备不会被晾在一边也保证了新设备能优先进入PD快充。这种调度逻辑在早期PD控制器里经常出bug有些芯片在CC线上误触发PD协商导致D/D-上已经握手的QC3.0被打断。CCG3PA的固件里有明确的时序窗口和优先级配置开发者甚至可以自己调整等待时长。遇到慢速识别的老旧设备时这一项调参经验非常实用。3. 一颗芯片能吃下多少场景适配器、车充、排插的典型设计3.1 电源适配器最标准的次级侧PD控制方案先看最典型的应用场景一个USB-C PD快充适配器。拓扑上用反激或者准谐振反激加同步整流输出端挂CCG3PA做协议协商和次级侧控制。CCG3PA放在次级侧通过光耦把恒压恒流误差信号送到初级侧的PWM控制器实现整个环路的闭环。很多人第一次看这个架构会困惑为什么充电器不干脆用一颗初级侧IC把PD协议一起做了答案很简单PD协议跑在次级侧要直接感知输出端的电压电流初级侧IC隔着变压器没法可靠完成协议通信和CC逻辑。这个架构里CCG3PA做的事情可以拆成三个环节。第一是协议协商在CC线上跟设备谈好档位第二是环路调节根据协议决定的电压电流目标动态调整反馈到初级侧的误差信号第三是保护逻辑实时监测输出过压、过流、过温异常时通过光耦拉低反馈让初级侧进入打嗝或锁定模式。做一个65W双口适配器的话次级侧主控加协议、保护全在这一颗芯片里占板面积比老方案小一半不是开玩笑。3.2 车充宽电压输入下的特殊考验车充是另一个CCG3PA能直接落地的场景但它有自己的特殊性。车载电源输入范围宽12V系统还要抗住抛负载时的瞬态高压输出级一般是降压拓扑。车充对协议芯片的要求主要有三点工作电压范围要够宽、静态功耗要低、保护要足够快。CCG3PA用于车充时一般接在降压电路输出端负责协议协商和CC/CV控制。汽车环境下最典型的坑是VBUS上的电压跌落和电磁干扰。点烟器座内部接触电阻大大电流充电时VBUS电压会被拉低如果协议芯片检测到电压异常就立刻断开那体验会非常糟糕。设计时需要在固件里配置合适的欠压/过压阈值还要在CC线上加必要的TVS管防止拔插瞬间的感应电压打坏协议引脚。车充产品的EMC测试比普通适配器严苛得多这一点别抱侥幸心理。3.3 多口排插与移动电源功率分配的用武之地多口快充排插这两年很火它的核心难点不是单口协议支持而是多口同时插入时的功率分配逻辑。CCG3PA如果用在多口方案里通常是一个主控带多个从芯片或者每口一颗独立做协商。功率分配怎么做一种简单做法是固定优先级第一个插口的设备拿满功率第二个插入时大家一起降档。高级一点的做法是通过固件动态计算可用总功率再按设备的需求做合理分配。移动电源场景则有些不同它需要协议芯片在升降压电路两侧都有信息电池侧的电压电流、输出侧的协议协商。CCG3PA的支持方式更多体现在高度可配置的I/O和ADC上它可以把电池电压、电流、温度都采回来由固件决定何时开启快充、何时降功率。对移动电源厂商来说一颗料做升降压控制和PD协议对BOM精简贡献不小。3.4 选型对比CCG系列之间怎么选做产品选型时很多人会问CCG3PA和同门CCG2、CCG3有什么区别从我理解的定位来看芯片型号定位典型场景特点CCG2早期USB-C PD控制器笔记本、手机配件集成度高但PD3.0/PPS支持有限CCG3高性能USB-C PD控制器复杂电源系统双口能力、多协议支持更强CCG3PA单芯片电源适配器方案快充充电器、车充、排插针对电源应用优化集成CC/CV、电流检测等选型时我的建议是如果做的是纯电源产品不去碰复杂的数据通路或USB4/USB3.x高速信号CCG3PA是目前比较顺手的方案如果要做显示屏、扩展坞之类需要同时处理高速数据和PD协商的产品老老实实选支持数据通道的型号不要试图用一颗PA芯片去包打天下。芯片选型最怕的是看着资源够用就上等画完板子发现少一路I2C或GPIO又得换方案重新layout。4. 从样片到量产CCG3PA开发调试里的坑与经验4.1 开发流程先从配置工具开始别一上来写代码CCG3PA是颗可编程芯片但它的开发方式和一般MCU不一样。它不是一个从头写裸机程序的项目而是在厂商提供的固件基础之上做配置和少量定制。我第一次接触这类带协议栈的芯片时犯过傻差点想去自己写USB PD协议栈后来发现完全没有必要。推荐路径是先用EZ-PD配置工具打开一个参考工程按自己的输入功率、目标协议、PDO档位去改配置生成hex文件然后烧进芯片在demo板上验证协议。这里要提醒一下PDO的配置一定要认真规划。比如你做的是20W充电器却把20V/2.25A这个PDO也配进去了芯片在协商时会向设备上报这个根本不存在的档位有些设备收到后会尝试申请高功率触发适配器的过载保护表现就是插上就重启。别笑这个问题在量产样品里真不少见全是配置没有对齐造成的。4.2 硬件设计最容易翻车的五个细节第一电流采样电阻的布线。CCG3PA内置了电流检测放大器但检测精度取决于外部采样电阻的接线方式。采样电阻要用开尔文接法直接从电阻两端拉独立走线到芯片的检测引脚千万不要在采样电阻正下方铺地也不要让采样线经过其他高电流走线附近。很多工程师习惯把采样电阻当成普通贴片电阻处理结果大电流时采样误差可以达到5%以上快充功率越多越明显。第二CC1/CC2引脚的ESD防护。USB-C口是裸露在壳体外的接口插拔静电瞬间就能灌进引脚。CC线不能只靠芯片内部的ESD管外部加TVS是必要措施。但注意TVS的寄生电容不能太大否则会影响PD信号的边缘导致通信误码。选USB信号专用、容值在1-2pF左右的TVS比较稳妥。第三NTC热敏电阻的摆放。如果要做过温保护NTC要贴在发热最严重的位置通常是变压器或同步整流管附近而不是随意放在板边。固件里设定的保护阈值要留出热余量因为在壳体内温升比开放环境高很多按60℃触发保护可能正常使用就误触发。第四光耦反馈的环路稳定性。CCG3PA的恒压恒流误差信号通过光耦传给初级侧这个环路中光耦的电流传输比离散性会影响环路增益。量产前一定要做不同批次光耦的环路测试否则可能出现一批充电器啸叫、一批充电器纹波偏大的怪问题。第五电容放电的问题。因为CCG3PA支持快速VBUS放电但如果你在输出端放了大容量电解电容放电时间会被拉长。PD协议切换电压时如果放电超时设备会拒收新的电压档位。这个在调试时容易忽略表现为从一个档位切到另一个档位时偶尔失败需要实测放电时间必要时调整放电电阻值。4.3 协议兼容性测试没有EDT就别谈量产做PD控制器开发USB-IF的PD测试工具EDT基本是标配。它能模拟各种PD设备行为验证芯片的协议符合性。比如PD3.0规范里有个Get Source Capability重发逻辑你手动发一个报文看芯片回不回、回得对不对这种用真机很难测但用EDT一键就能跑。除了协议符合性测试真机兼容性测试更不能省。我给自己列过一个最低真机测试清单iPhone至少两代老机型最新型号、一台支持PD的安卓旗舰、一台支持QC4的高通平台手机、一台三星触发AFC、一台华为触发FCP、一台带USB-C供电的笔记本、一台老款iPad触发Apple 2.4A。每次固件改动先跑EDT再跑真机清单哪个环节回归出了问题都好定位。还有一个特别容易踩的坑不要把测试手机插着充电一晚上就以为没问题。快充协议里有大量超时机制有些握手失败只在特定时序下出现需要在连接状态下反复插拔、切换功率、待机唤醒把异常场景都压一遍。我见过一个充电头在手机充到80%后切换档位时偶发断充测了三天才定位到是PPS调压步进里的一个时序边界问题。4.4 固件版本管理一旦可编程就要当软件项目来管CCG3PA可编程之后很多硬件团队会低估固件版本管理的复杂度。芯片里跑的固件已经是一个小型软件项目但它往往和硬件版本强耦合。比如A版PCB的NTC电阻是10kB版换成了100k如果固件里没改温度曲线B版开机十分钟就过热保护。我的实践经验是把固件版本号和硬件版本号绑定每次打板都生成一套对应的配置包。不要一个配置包通吃所有硬件版本否则出现同一个芯片固件有的板子正常有的板子异常这种问题排查起来极其痛苦。另外量产后如果要做协议升级一定要保留回滚能力避免新固件跟某款设备不兼容又没法退回。5. 发布会之外的信号协议收敛对硬件工程师意味着什么5.1 QC4主动兼容PD说明底座协议开始收敛高通在QC4上做了一个值得玩味的决定放弃基于D/D-的传统握手改为在USB PD的PPS基础上做上层策略。这个决定背后其实是行业趋势的反映——USB PD已经成了USB-C接口的底层语言各家的私有协议可以继续做差异化但物理层和基本会话层越来越趋向统一。这对硬件工程师是个好消息。以前做一个多协议充电器支持三四种私有协议已经焦头烂额未来只要PD底子扎实很多新设备会自动兼容。CCG3PA这种芯片的价值恰恰在于把PD底座做实同时用固件去兼容老协议。做产品时你可以更从容新型号设备大概率走PD老设备靠兼容逻辑兜底。5.2 集成度提高工程师的能力模型也得跟着变一个现实的变化是像CCG3PA这种高集成芯片把硬件工程师传统上擅长调试的东西——分立运放、比较器、驱动电路——大量收进了芯片内部。板级调试的重点从抓波形看振荡逐渐转向看协议日志、调寄存器、改配置。很多老工程师第一次接触PD开发时很不适应觉得看不到信号流了其实这只是调试工具变了。我自己的体会是做电源开发不能只盯着模拟环路还得把USB PD报文分析能力补起来。买一个带PD分析功能的协议分析仪把CC线上的通信抓下来从头到尾读一遍很多疑难问题都能迎刃而解。这篇文章如果非要提炼一句话那就是USB-C供电开发已经从模拟电路时代进入协议电源时代芯片再能打也得你会用工具把通信过程看明白。