最近在帮朋友评估一款多协议快充方案,拿到FS312BL的规格资料时,我盯着描述看了好几遍:一边写着“支持QC协议,最高支持12V电压输出”,另一边又写着“支持PD3.1协议”。当时第一反应是这型号是不是标错了,PD3.1在规范里都干到48V了,怎么会跟12V的QC放在同一颗芯片里。后来把协议栈和外围电路从头顺了一遍才反应过来,这个组合不但不矛盾,反而是现在快充方案里非常讨巧的一种设计思路。
这篇文章想把这颗芯片背后的逻辑讲清楚:QC和PD到底是怎么同时存在的,12V这个档位为什么值得单独拎出来说,PD3.1的“协议支持”和实际输出能力之间差了什么。不管你是在做充电器、车充、排插还是移动电源,只要涉及协议芯片选型,这篇内容应该能帮你省不少排查时间。
1. 为什么一颗芯片要同时啃QC和PD3.1
1.1 快充协议的本质:设备与电源之间的“谈判语言”
快充这件事,本质上是设备(手机、平板、游戏机)和电源(充电器、车充、移动电源)之间的一场谈判。设备要先告诉电源“我支持快充,我最高能承受多少伏”,电源确认之后,才敢把默认的5V抬上去。这个“告诉”的过程,就是协议在起作用。
但不同阵营的“告诉方式”完全不一样。QC协议走的物理通道是USB接口里的D+和D-两根数据线,靠不同的电平组合和时序来表达电压请求;PD协议走的物理通道则是USB-C接口里的CC线,用BMC编码方式做双向通信。一个是方言,一个是普通话,设备说方言的时候电源如果只会普通话,那就只能干瞪眼,老老实实输出5V。
这也是为什么早年间的充电器在兼容性上翻车频繁:有的手机走QC,有的平板走PD,还有一堆老设备只认BC1.2。你不可能在充电器里放两颗协议芯片,更不可能让用户去手动切换。FS312BL这类多协议芯片的价值就在于:一颗芯片同时听懂两种语言,设备用哪套规则来谈,它就切换到哪套规则去响应。
1.2 单协议方案的真实痛点
我以前做过一版只支持QC协议的快充板,样品阶段发现问题特别典型。用支持QC的手机测试,9V档位一切正常,但换一台只认PD协议的设备插上去,输出直接回落到5V,而且设备端偶尔还会出现充电断续的情况。原因是设备发现你没法在CC线上响应PD的握手请求,它就会认为这是一个普通充电口,甚至在某些场景下会反复尝试重新协商,导致VBUS电压抖动。
反过来,如果只做PD协议,也会错过大量还在使用USB-A接口的老设备。这些设备数量庞大,尤其是一些工业设备、老款平板、便携音箱和车载配件,它们只懂QC或者连QC都不懂,只认最基础的D+/D-短接识别。市面上的消费者可不会管你用的是哪家的协议芯片,他们只关心一个问题:插上去能不能快充。如果充不了,差评和退货就会教做人。
所以一颗芯片同时支持QC和PD,不是功能堆砌,而是兼容性层面的刚需。FS312BL把两套协议栈都做进一颗芯片里,硬件上省掉了一颗独立芯片和对应的外围电路,软件上也只用一套配置就能管理两种协议的切换逻辑,从BOM成本和开发周期两个角度看都是划算的。
1.3 FS312BL在电源系统中的位置
首先要明确一个很容易被忽略的认知:协议芯片本身不输出功率。FS312BL不是那种把功率管和协议解析集成在一起的超级单芯片,它做的事情更接近一个“翻译官外加调度员”。它检测到设备接入之后,通过DP/DM引脚或者CC引脚完成协议握手,然后输出一个控制信号给后级的电源转换部分,让电源把输出电压调整到设备请求的档位。
也就是说,完整的快充系统至少由三部分构成:负责电压转换的电源主控(比如AC-DC控制器或DC-DC控制器)、负责握手鉴权的协议芯片FS312BL、以及负责输出保护和电流检测的外围电路。FS312BL在这一环里做的是“信息处理”,真正输出12V能量的是后级电源。
理解这一层之后,“支持PD3.1”和“最高只输出12V”之间的矛盾就自动消解了。PD3.1是芯片能够理解的协议语言,但协议语言的版本高低,不代表电源系统就能真的输出到48V。这就好比一个人懂八国语言,不代表他随身带着八国货币。FS312BL懂PD3.1的谈判规则,但你的电源系统设计能力到12V,那最终输出就是12V封顶。
2. 深入拆解QC协议:12V档位是怎么被“谈”出来的
2.1 QC电压协商的基本流程
QC协议自诞生以来经历了多个版本,FS312BL支持的QC 2.0/QC 3.0属于目前兼容性最好的区间。整个握手过程大致是这样的:
设备接入后,FS312BL先正常输出5V,此时D+和D-处于空闲状态。设备检测到电压后,开始在D+或D-上施加特定的电平序列,相当于敲门。FS312BL识别到有效的电平模式后,根据不同的组合来判定设备想要的电压档位。最常见的两个大档是9V和12V,对应DP/DM上不同的电平状态或脉冲时序。
到了QC 3.0阶段,协商方式变得更灵活。QC 3.0增加了INOV(智能电压协商)能力,设备可以通过D+上的连续脉冲来让电源以200mV为步进微调电压。比如设备想要9.2V,它就可以在9V的基础上请求继续增加,FS312BL识别到递增脉冲后就调整反馈基准,让输出抬升200mV。这种方式比固定档位更精细,对电池的充电效率更有好处。
实操中我很想提醒的一点是:QC协议虽然看起来只是电平组合,但对时序要求很敏感。电平维持时间、脉冲宽度、切换间隔都有明确窗口,FS312BL内部是硬逻辑检测还好,如果你们用的是GPIO模拟去解析DP/DM信号,很容易因为时序抖动导致误判。尽量用带硬件协议引擎的芯片,别自己用MCU去靠软件轮询电平,踩过坑的人都懂。
2.2 12V档位为什么值得单独强调
QC协议里的电压档位并不是一起提供的。QC 2.0时期分了Class A和Class B两个档位组,Class A包含最常见的5V、9V、12V,Class B则把上限推到了20V。很多芯片虽然标着支持QC 2.0,但实际只开了Class A,FS312BL写的“最高支持12V电压输出”,本质上是明确告诉你它把Class A档位完整支持到头了。
12V这个档位在实际产品里非常有存在感。一方面,大量老一代的快充设备和车载配件都跑在12V档,比如某些便携显示器、车载吸尘器、老款平板的充电底座;另一方面,12V匹配的是QC协议里性价比最高的功率区间,假设电流能做到2A,那就是24W的功率,给常规手机快充已经完全够用,但发热和成本又比20V档可控得多。
另外一个容易被忽略的点:12V上限对电源拓扑的选择影响很大。如果方案只需要输出到12V,那么后级可以用成本更低的Buck降压方案,不必做升压,更不必做升降压。很多车充直接用输入12V到24V的宽压范围做Buck,输出到12V以内,这正好跟FS312BL的QC档位匹配。如果你硬要选一颗QC支持到20V的芯片,后级电源的成本和PCB面积都得跟着涨,散热压力也会大,方案整体竞争力反而下降。
2.3 12V上限带来的设计余量与限制
跟一颗宣称支持QC 20V的芯片相比,FS312BL把上限卡在12V,从安全性角度看其实是更理性的选择。协议握手只是第一步,握手成功后VBUS会从5V抬升到12V,此时整个功率回路上的器件都要承受12V的工作电压,算上瞬态波动和纹波尖峰,实际耐压选择通常要留30%以上的余量。
在选料环节,VBUS路径上的输出电容、TVS管、MOS管都要按这个电压等级来选。常规做法是选择25V耐压档位的电容和TVS,MOS管的Vds至少选30V以上。如果芯片宣称支持到20V,这些器件的耐压档位就得往上跳一档,成本差异立刻体现出来。所以“最高12V”不仅是协议层面的档位声明,也等于在帮你划定了整个功率系统的电压应力边界。
但也要说清楚限制:12V上限意味着你没办法通过QC握手获取更高的电压给那些需要高压供电的设备使用,比如一些工业检测设备或者大功率电动工具电池。这时候就必须考虑把负载走PD通道,或者换一颗QC Class B的芯片。选型之前想清楚你要服务的终端设备是哪些,再决定是否需要更高的QC电压档位,不要盲目追高。
3. PD3.1不是“48V专用协议”:重新理解协议支持范围
3.1 PD3.1相比PD3.0的变化
PD3.1是USB PD规范在PD3.0基础上的扩展,最明显的改变是引入了EPR(扩展功率范围)。PD3.0时代的电压上限是20V,最大功率100W;PD3.1在原有SPR(标准功率范围)的基础上,向上扩展了28V、36V和48V几个固定电压档,同时引入了AVS(可调电压电源),让设备可以在一个连续电压区间内按步进请求电压,最大功率从100W直接翻到240W。
PD3.1对协议芯片的影响是结构性的。芯片不仅要认识更多的PDO类型,还要处理更长的数据消息,EPR模式下还涉及更复杂的电源状态切换和故障处理。如果一颗芯片说自己支持PD3.1,通常意味着它的协议引擎对EPR的报文格式、状态机和时序要求都能正常解析和响应。
但这里要特别注意一个常见误区:协议栈支持PD3.1,不等于这颗芯片被配置成一定会向外广播48V的PDO。PD3.1规范定义了芯片能做到什么,工程师配置决定它实际做什么。FS312BL支持PD3.1,只代表它在协议层可以正确完成PD3.1版本范围内的通信和数据解析,而在PDO配置环节,你可以通过配置手段把允许广播和响应的电压范围限制在12V以内,这样就算设备是支持48V EPB的旗舰设备,在你这个方案上也只能请求到最高12V。
3.2 一颗芯片既能QC又能PD3.1,靠的是“物理隔离”的通信链路
有人会想不通:QC和PD两套协议完全是八竿子打不着的东西,凭什么能塞进同一颗芯片里?答案其实很朴素,因为两套协议走的物理链路完全不同。
QC走DP/DM数据线,PD走CC线。在物理层面这就是两组独立的引脚,互不干扰。FS312BL内部相当于配了两间独立的协议处理室:一间负责监听DP/DM上的电平序列,解析QC请求;另一间负责处理CC线上BMC编码的PD报文。设备通过USB-A口接入时,只有DP/DM有信号,CC线根本没有连接,芯片自动走QC逻辑;设备通过USB-C口接入时,CC线建立连接,芯片自动切换或同时准备PD协商。
实际应用中也存在同一颗芯片同时驱动USB-A和USB-C两个端口的场景。USB-A口只能走QC,USB-C口同时具备QC和PD能力。FS312BL的DPDM引脚连接到USB-A口的数据线,CC引脚连接到USB-C口的CC1/CC2,两套协议在芯片内部共享同一个电源控制逻辑。无论哪个口有设备接入,芯片通过接口检测逻辑判断应该启用哪套协议解析引擎,最终统一通过FB引脚或者I2C/模拟控制信号去调整后级电源的输出电压。
3.3 配置PDO才是决定输出能力的最后一环
收到样片之后,第一件事就是看这颗方案在PDO配置上怎么处理。PDO的全称是Power Data Object,可以简单理解为电源对外公布的“报价单”。报价单上写了支持哪些电压、每个电压能出多少电流,设备接入后会拿这个报价单做匹配,找一组符合自己要求的PDO再发起请求。
FS312BL这类芯片通常支持通过寄存器或外部配置引脚来设置PDO。假设你的后级电源设计能力就是12V/2.5A,那么PDO应该这样配:
PDO配置参考: PDO1: 5V / 3A PDO2: 9V / 3A PDO3: 12V / 2.5A完成这样配置之后,虽然芯片的协议引擎支持PD3.1,甚至具备识别EPR报文的能力,但它向外广播的时候只广播这三个PDO,设备就算对PD3.1熟门熟路,也只能在5V、9V、12V三档里选。而且12V档电流限制在2.5A,也就不会再发生设备以更高功率请求导致后级过载的问题。
这就是为什么“支持PD3.1”和“最高12V输出”能够真实且合理地同时出现在同一颗芯片的描述里。前者说的是协议引擎的解析能力,是软件的、逻辑层面的;后者说的是系统方案的功率设计,是硬件的、电源层面的。把这两个概念分开看,很多关于协议芯片的配置问题都能迎刃而解。
4. 用FS312BL搭建双协议快充模块的实操指南
4.1 系统框架:协议芯片只是“翻译官”
如果现在给你一个任务,基于FS312BL做一个双协议快充模块,第一步不是急着画原理图,而是先把系统框架在脑子里理清楚。一个完整的模块大致包含:输入电源处理、后级电压转换、FS312BL协议握手、输出保护和线缆补偿。
输入部分取决于你的产品形态:如果是AC-DC适配器,前面是整流桥和高压电容,后级的反激或原边反馈电源负责隔离降压;如果是DC-DC车充,输入是车载12V/24V电源,后级用Buck方案直接降出需要的电压。FS312BL不管你的拓扑是什么,它只负责在低压侧告诉电源控制芯片“现在把输出调到多少伏”。
在这个框架里,FS312BL的反馈控制方式很关键。一般它的输出引脚会连接到电源控制器的反馈回路,通过拉低或调整反馈基准来改变输出电压。比如默认电源输出5V,QC握手后需要输出9V,FS312BL就会将反馈引脚的电平拉到某个指定值,电源控制器检测到反馈变化后把输出电压抬升到9V。如果你对电源控制器的工作模式不熟,建议先用集成FB引脚的DC-DC芯片做小功率验证,把协议部分调通之后再迁移到AC-DC平台,排查问题会容易很多。
4.2 外围电路关键节点与参数选择
FS312BL的外围电路在原理图层面并不复杂,但有几个节点必须仔细核对,任何一个接错都会导致握手失败。
先说CC引脚。当FS312BL作为Source端(供电方)应用时,CC1和CC2的角色是检测Sink设备是否接入,芯片内部通常会提供上拉电流源或者需要配合外置上拉电阻。这时候千万别在CC上外接5.1kΩ下拉电阻,那个是Sink设备端才用的。正确的做法是让芯片的CC内部上拉完成连接检测,外部只在必要时加ESD保护和滤波电容。如果你反而接了5.1k下拉,USB-C设备接入时会发现Source端的特征不对,直接不建链,输出永远是0。
再说DP/DM引脚。这两根引脚要连接到USB-A口的D+和D-上,路径上建议串联22Ω左右的电阻,同时加上TVS管做ESD保护。如果这个USB-A口还兼顾数据传输功能,那就要加模拟开关把DP/DM在“数据通路”和“协议检测通路”之间切换。只做纯充电口的话,DP/DM可以直接连到FS312BL,省掉开关。
最后是VBUS采样和反馈回路。FS312BL需要实时知道VBUS的当前电压,通常会从输出端用分压电阻采样进来。这个分压电阻的精度建议用1%或者更高,因为QC 3.0的INOV是200mV步进,如果你的采样精度不够,反馈基准偏差可能直接把请求电压偏出允许窗口,设备端会认为电源异常而中止快充。
表里是我在实操中比较常用的一个参考参数,具体值要以选型电源方案和FS312BL的官方手册为准:
| 节点 | 参考器件/参数 | 作用 | 备注 |
|---|---|---|---|
| CC1/CC2 | 芯片内置上拉,外部加ESD | Source端连接检测 | Sink应用时改接5.1k下拉 |
| DP/DM | 22Ω串阻 + TVS | QC握手信号滤波、防静电 | 支持数据时加模拟开关 |
| VBUS采样 | 1%精度分压电阻 | 实时反馈输出状态 | 注意采样点远离热源 |
| FB输出 | RC滤波到电源反馈脚 | 改变输出电压档位 | RC时间常数不宜过大 |
| 输出电容 | 22uF 陶瓷电容 + 电解电容 | 稳压和纹波抑制 | 耐压选25V以上 |
4.3 典型配置流程与寄存器思路
拿到一颗FS312BL,除了硬件连接之外,还需要完成一组逻辑配置。一般这类协议芯片会提供一个配置接口,通过I2C或者一次性烧录来设定工作模式。配置项大致包括协议开关、PDO列表、DPDM模式和保护阈值。
我习惯按下面这个顺序来配置:
- 设定工作模式为Source端,禁用Sink相关功能,避免误触发。如果做的是双向充电宝,需要同时支持Sink,那就要单独配置双角色模式,复杂度会明显增加。
- 配置DPDM模式为QC 2.0 + QC 3.0 + BC1.2。BC1.2也要开,很多设备用它来做普通充电识别的兜底,不开的话部分设备连5V普通充电都会拒绝。
- 设置PDO列表。按后级电源的实际能力填写,确保每个PDO的最大电流不超过后级转换的持续输出能力。
- 设置过压保护阈值。比如最大输出电压是12V,OVP可以设在13V左右,太低会被线缆压降误触发,太高又保护不了异常情况。
- 配置FPOM引脚的极性。这个要看后级电源反馈引脚是高有效还是低有效,接反了会导致电压反向调节,严重情况下会烧后级电路。
配置完成之后,用我常用的评估板测一遍基本的握手流程,再进入整机验证。要记住,寄存器配置只决定了芯片“愿意”做什么,最终输出能力是硬件拓扑和电源管理策略决定的,两者匹配好,系统才稳定。
4.4 从样板到量产的验证流程
协议芯片的验证,不是“插上手机能充就行”那种级别的验证。我在样板阶段会做一套固定动作,缺一不可。
先用电子负载接在输出端,默认情况下应该看到5V输出。然后用QC诱骗器依次请求9V和12V,观察输出电压是否切换到匹配档位,同时用示波器记录切换瞬间的波形,看看有没有过冲或者跌落过多的情况。再用PD诱骗器模拟PD3.1设备,先查看芯片广播出来的PDO列表是否跟配置一致,再依次请求每个PDO档位,确认实际电压电流没有偏差。
这个过程中最值得花时间的测试,是不同协议之间的切换。比如一个设备先以QC协议请求了12V,然后拔掉,另一个设备又以PD协议接入,请求9V。此时FS312BL必须从QC状态完全退出,再进入PD状态,不能残留上次的电压状态。如果发现切换后电压还在12V,说明状态机复位逻辑有问题,要查配置和固件行为,而不是单纯去调电源。
量产阶段还要加一项线缆兼容性抽样测试,因为不同线缆的内阻和屏蔽质量差异很大,尤其是长线缆在高压高电流下会产生明显压降。如果芯片内置了线缆补偿功能,需要把补偿量控制在合理范围,补得太多,空载电压会超过目标值,违背协议规范;补得不够,线缆末端电压达不到设备要求,照样被判定为不合格电源。
5. 调试实录:握手失败、掉压、死机的排查方法
5.1 接入设备后VBUS一直为0
这是最常遇到的故障,现象是设备插上去完全没反应,用万用表量VBUS始终是0V。很多人第一反应是FS312BL坏了,但其实概率最大的是Source端没有正确完成“连接检测”这个动作。
排查第一步,量CC1和CC2上的电压。正常接上Sink设备后,Source端CC被Sink的5.1k下拉电阻分压,CC电压会降到某个特定区间。如果电压接近0V或等于VPULLUP,说明CC链路上根本没设备等效电阻,要检查USB-C插座焊接是否有虚焊,或者芯片的CC引脚有没有正常配置成Source模式。
如果CC电压正常但VBUS还是0,那就把目光放到芯片的使能脚和反馈脚上。有些方案需要把EN引脚拉高,芯片才会允许把输出使能打开。另外检查后级电源的反馈回路是否处在闭合状态,如果反馈回路悬空或者基准异常,电源主控会认为输出反馈异常而进入锁死状态。我遇到过一次很典型的情况:CC检测正常,VSET也正常,但DC-DC的反馈电路电阻虚焊,导致电源主控一直在打嗝保护,表面上看就像协议芯片没工作。
5.2 QC握手成功但电压不对或带载跌落
QC握手成功后输出电压比请求值偏低0.3V到0.5V,这个现象在不带线补的方案里很常见。原因是VBUS采样点如果选在了PCB的输出端,而负载电流在导线和连接器上产生了压降,芯片实际采样到的电压是经过压降之后的数值,自然比设备端目标值低。
解决思路是调整采样点位置。把FS312BL的VBUS采样线尽量引到输出连接器的正极焊盘附近,这样采样电压更接近设备端实际看到的水平。如果PCB布局没法改,就可以利用芯片的线损补偿功能,按负载电流做一个正反馈补偿,让空载电压比目标值略微高一点点,加载之后正好压降到目标值。
但线补参数一定要严格测试。我试过把补偿系数调得偏高,结果空载时输出电压到了目标值以上约0.5V,手机插上去确实能快充,但设备内部的OVP电路检测到电压异常,直接拒绝充电。这种问题最坑,因为“电压高”在万用表上看不出来,只有协议分析仪能看到设备确实发过警告报文。调试线补时的建议是循序渐进,每加一档补偿就测一次全负载范围,直到电压曲线平直为止。
5.3 协商到高电压档时芯片异常重启
PD协议协商到12V或者QC切换到12V的瞬间,FS312BL突然重启,VBUS掉电再恢复。这个问题的根子往往不在协议芯片上,而在后级电源的动态响应。
电压档位从5V跳到12V时,后级电源需要重新调整分压反馈,输出电压瞬间变化,如果电源环路设计得比较紧,很容易在这个瞬态过程中出现震荡。震荡会在VBUS上形成较大的电压尖峰,尖峰又沿着FS312BL的VBUS采样引脚灌进芯片供电引脚,导致芯片内部复位。
处理办法有几个方向。首先是加强FS312BL电源引脚的滤波,在VDD引脚就近放一个0.1uF陶瓷电容再加一个4.7uF储能电容,吸收高频尖峰。其次是检查VBUS采样电阻的阻值是否过大,导致采样引脚输入阻抗太高容易耦合噪声,可以适当降低阻值并在采样点加一个小RC滤波。最后就是调整后级电源的环路补偿参数,让瞬态响应更平滑。我处理过一块板子,最终是把反馈电容加大到原来的3倍,重启问题才彻底消失。
5.4 兼容性排查速查表
把我在调试中遇到过的典型问题整理成了一张表,按现象分类,大家可以直接照着查:
| 现象 | 可能原因 | 排查方法 | 解决方向 |
|---|---|---|---|
| VBUS为0V,CC电压异常 | Source模式配置错误、CC引脚虚焊 | 量CC电压、查寄存器模式 | 重配Source模式、补焊CC引脚 |
| VBUS为0V,CC正常 | 电源反馈没闭合、EN脚未拉高 | 查FAULT脚状态、量EN电平 | 修复反馈回路、检查使能逻辑 |
| QC握手成功但电压偏低 | 采样点位置不对、线损压降 | 量输出端和连接器端电压差 | 移动采样点、启用线补 |
| QC握手成功但瞬态掉压 | 负载动态响应差、环路不稳 | 示波器看VBUS波形 | 调整环路补偿、加大输出电容 |
| PD协商时芯片重启 | 供电被尖峰干扰 | 示波器抓VDD和VBUS同时波形 | 加强VDD滤波、降低采样阻抗 |
| USB-C正反插有一面不工作 | CC1/CC2某一路未连接 | 检查CC对地波形 | 补全两路CC接线 |
从实际经验看,很多“灵异问题”最后都落在接插件和PCB走线这种不起眼的环节上。协议芯片本身的逻辑相对固定,倒是在电源功率部分引入的不确定因素更多。调试时养成一个习惯:先把电源部分用固定电压跑稳,再去调协议切换,分而治之能省下大量时间。
就拿FS312BL这个案子来说,我自己最大的体会是别被协议名词唬住。支持PD3.1的芯片不一定非要输出48V,支持QC的芯片也不是档位越高越好,关键看你的产品到底想服务哪些设备、后级电源能稳定输出多少瓦。把协议芯片当作一个懂多门语言的谈判代表,把后级电源当成实际的产能工厂,二者能力匹配,产品才站得住脚。这个思路放之四海的快充方案都适用。