1. 项目概述与背景
最近在做一个基于USB Type-C接口的扩展坞项目,核心需求是让它能作为电源,给连接的笔记本、平板或者手机进行快速充电。这就必须遵循最新的USB Power Delivery(PD)协议。一开始,我直接参考了TI官方的TPS65982评估板(EVM)设计,它用的是PD 2.0 v1.1规范里的“电源描述文件”,只支持5V、12V和20V输出。但当我深入研究最新的PD 2.0 v1.2和PD 3.0规范时,发现事情变了——新的“电源规则”要求供电源必须能提供5V、9V、15V和20V这四档电压。
这个变化看似只是电压值调整,背后其实是协议为了更精细、高效地管理从0到100W的功率范围。比如,给手机快充,9V可能比12V更合适;而一些轻薄本,15V或许就是最佳平衡点。直接用老方案的12V去凑合9V和15V?协议不答应,很多新设备也无法正确握手充电。所以,硬件必须跟着升级。
我的任务,就是基于TPS65982这颗独立的USB Type-C和PD控制器,设计一套新的电源电路,让它能精准、稳定地输出这四档“电源规则”电压。这不仅仅是换个电阻那么简单,它涉及到如何让控制器智能地控制外部电源电路,以及如何选择最合适、最经济的DC-DC架构。经过一番折腾,我最终选定并实现了一套基于LM3489可变降压控制器的方案,实测下来非常稳定。下面,我就把整个设计思路、硬件选型、电路实现以及调试中踩过的坑,毫无保留地分享给大家。
2. 核心需求与方案选型解析
2.1 新旧规范对比与设计挑战
在动手之前,必须搞清楚我们到底要解决什么问题。USB PD协议的本质,是通过CC(Configuration Channel)线进行双向通信,协商出一个双方都同意的供电合同(PD Contract)。这个合同的核心就是电压和电流。
- 旧规范(PD 2.0 v1.1 - Power Profiles):电压档位是固定的5V, 12V, 20V。设计相对简单,比如我的旧方案,就是用三个独立的DC-DC降压芯片(如TPS54335A)分别产生12V和20V(5V通常由控制器内部或另一个固定DCDC提供),然后通过MOSFET开关选通到VBUS上。
- 新规范(PD 2.0 v1.2/PD 3.0 - Power Rules):电压变为5V, 9V, 15V, 20V。这个变化直接让旧方案“失效”。你不可能指望设备把12V认成9V或15V。
挑战在于:如何用最少的成本和复杂度,让一个电源电路动态输出这四个电压?TPS65982控制器本身并不产生这些高压,它只负责通信和决策。它需要告诉后级的电源电路:“现在请输出9V”。这就是我们设计的核心——搭建一个能被TPS65982“指挥”的智能电源。
2.2 可选方案深度剖析
当时我主要评估了两种主流架构,它们各有优劣,适用场景不同。
方案一:电源多路复用器这个思路最直接。既然需要4个电压,那我就准备4路独立的DC-DC电路,分别产生5V、9V、15V、20V。然后,用一个由MOSFET构成的“多路选择开关”(多路复用器),根据TPS65982的指令,把对应的一路电压连接到最终的VBUS输出路径上。
- 优点:
- 性能最优:每路电源都是独立优化、固定输出的,电压精度和瞬态响应最好。
- 易于扩展:在多端口(比如双Type-C口)设备中优势明显。两路9V、15V、20V的电源可以共享给两个端口使用,总体的电源芯片数量可能比方案二更少。
- 缺点:
- 成本高、面积大:需要4个DC-DC芯片及其外围电感、电容,BOM成本和PCB面积是硬伤。
- 控制逻辑稍复杂:需要额外的逻辑电路或更多GPIO来控制多路MOSFET开关,确保任何时候只有一路导通。
方案二:可变DC-DC转换器这个方案更巧妙。我只用一个DC-DC降压电路,但它的输出电压不是固定的,而是可以通过改变其反馈网络的分压电阻来动态调整。TPS65982通过控制连接到反馈引脚的不同电阻,来“命令”这个DC-DC电路输出9V、15V或20V。
- 优点:
- 成本与面积优势巨大:这是它最核心的吸引力。对于单端口设备,只需1个可调DC-DC芯片(代替原来的2-3个固定输出芯片),极大节省了成本和PCB空间。
- 控制接口简单:通常只需要2-3个GPIO引脚,通过控制模拟开关(如小信号MOSFET)切换电阻即可。
- 缺点:
- 存在切换延时:输出电压切换时,DC-DC环路需要重新稳定,会有几毫秒到几十毫秒的过渡过程。需要仔细评估协议允许的电压变化时间。
- 对DC-DC芯片有要求:芯片必须支持宽范围输入输出,且反馈基准电压(Vref)稳定。更重要的是,要输出20V时,如果输入也是20V,芯片必须能支持100%占空比操作(即开关管常开,直通输入电压),否则无法输出满幅的20V。
实操心得:如何选择?对于我的单口扩展坞项目,可变DC-DC方案是毫无疑问的赢家。成本、面积是消费类产品的生命线。虽然多路复用器在性能上略胜一筹,但可变DC-DC的性能对于充电应用来说已经完全足够。唯一需要攻克的难点,就是找到一颗支持100%占空比、适合用电阻网络调压的DC-DC控制器。这也是我最终选择LM3489的关键原因。
2.3 TPS65982的GPIO事件:控制逻辑的核心
无论选择哪种方案,都需要TPS65982来发号施令。这颗芯片的固件提供了一个非常强大的功能:可配置的GPIO事件。
在TI提供的配置工具(TPS6598X-CONFIG)里,我们可以将任何一个GPIO引脚映射到一个预定义的“事件”上。对于电源控制,最关键的是这两组事件:
- 离散事件:例如
Source PDO 1 Negotiated,Source PDO 2 Negotiated... 当芯片协商成功某个电压档位(PDO)的供电合同时,对应的GPIO就会输出高电平。我们可以用这个高电平直接去控制一个MOSFET开关。 - 真值表事件:例如
Source PDO Negotiated Truth Table, Bit 0。这组事件会将协商成功的PDO索引,以二进制位的形式映射到多个GPIO上。比如用GPIO0和GPIO1两个引脚,可以表示4种状态(00, 01, 10, 11),从而控制一个支持数字编程的电源芯片。
对于我们的可变DC-DC方案,使用离散事件就足够了。我们为9V、15V、20V(5V通常是默认路径)各分配一个GPIO。当协商到15V合同时,对应的GPIO变为高电平,触发外部电路改变DC-DC的反馈电阻,输出电压随之变为15V。
3. 可变DC-DC方案详细设计与实现
确定了可变DC-DC的路线后,接下来就是具体的电路设计与器件选型。这里面的每一个细节都关系到系统的稳定性和可靠性。
3.1 核心器件选型:为什么是LM3489?
选择DC-DC控制器是第一步,也是最重要的一步。我需要一个能满足以下所有条件的芯片:
- 宽输入电压范围:覆盖适配器常见的12V-24V输入。
- 输出可调:能通过外部电阻精确设定在9V、15V、20V。
- 支持100%占空比:这是输出20V的关键。当输入为20V时,芯片必须能让上管(通常是PMOS)持续导通,实现输入到输出的直通,压降仅为MOSFET的导通压降。
- 驱动外部PMOS:为了处理可能高达5A(100W@20V)的电流,需要外置大电流MOSFET。
- 封装与成本:易于焊接,性价比高。
TI的LM3489完美契合了这些要求。它是一款迟滞控制(Hysteretic)的PFET控制器。迟滞控制本身是一种简单可靠的架构,而它驱动外部PFET的特性,天然支持100%占空比——当需���输出接近输入电压时,它只需让PFET一直开启即可。相比之下,很多常见的同步降压控制器(采用上N下N MOS)在100%占空比时会有体二极管导通的问题,导致效率下降或无法输出满压。
3.2 电压反馈网络设计:精密的电阻舞蹈
可变输出的秘密,全藏在反馈网络里。DC-DC控制器通过FB引脚检测输出电压的分压,并与内部基准电压(Vref, LM3489为0.8V)比较,来调节输出。
基本公式:Vout = Vref * (1 + Rtop / Rbottom)
对于固定输出,我们只需计算一对Rtop和Rbottom。但对于可变输出,我们需要一个可变的Rbottom。
我的设计思路:
- 设定一个基础电压(例如9V):选择一组固定的Rtop和Rbottom1,使输出为9V。
- 并联电阻切换至其他电压:当需要输出15V时,通过一个MOSFET开关,将另一个电阻Rbottom2并联到Rbottom1上。并联后的总阻值
Rbottom_total变小,根据公式,Vout就会升高。 - 20V的特殊处理:当需要20V且输入也是20V时,我们实际上希望DC-DC停止开关动作,直接让输入通过PFET到达输出。这可以通过将FB引脚电压拉高到远超0.8V(例如通过一个很小的Rbottom)来实现,迫使控制器进入100%占空比状态。在我的电路中,这是通过一个特定的GPIO控制一个更小的电阻并联实现的。
具体计算示例(以9V和15V切换为例):
- 假设
Vref = 0.8V,Rtop = 100kΩ。 - 目标9V:计算
Rbottom_9V = Rtop / (Vout/Vref - 1) = 100k / (9/0.8 - 1) ≈ 100k / 10.25 ≈ 9.76kΩ。我选用标准值9.53kΩ。 - 目标15V:计算
Rbottom_15V = 100k / (15/0.8 - 1) = 100k / 17.75 ≈ 5.63kΩ。 - 计算并联电阻:我们需要一个电阻
R_add,使得9.53kΩ // R_add = 5.63kΩ。解得R_add ≈ 13.3kΩ。我选用13.32kΩ。
这样,当控制9V的GPIO有效时,反馈网络只有100kΩ和9.53kΩ。当控制15V的GPIO有效时,一个13.32kΩ的电阻会通过MOSFET并联到9.53kΩ上,总阻值变为约5.63kΩ,输出即变为15V。
注意事项:电阻精度与温漂反馈电阻的精度直接影响输出电压精度。务必使用1%甚至0.5%精度的薄膜电阻。同时要注意电阻的温漂系数,尤其是应用环境温度变化大的场合。选择温漂系数低的电阻(如25ppm/°C)可以保证在全温度范围内输出电压稳定。
3.3 完整电路架构解析
结合LM3489和TPS65982,整体的电源架构框图如下(基于TI应用报告SLVA782):
20V DC输入 (Barrel Jack) | | [LM3489 Variable Buck Converter] | | | | | +---> FB引脚 <- [电阻网络] <- [TPS65982 GPIO0,1,2,3控制] | | | +--->VIN VOUT (9V/15V/20V) | | | | [固定5V DCDC] [路径选择与驱动] | | +------+--------+ | [TPS65982 功率路径管理] |(内部FET:PP_5V0, PP_HV) | USB Type-C Connector VBUS- 输入:来自DC插座的20V直流电。
- 主可变电源:LM3489电路,产生9V/15V/20V。其FB引脚连接由精密电阻和MOSFET开关组成的网络,受TPS65982的GPIO0-3控制。
- 固定5V电源:另一个独立的DCDC(如TPS54335A)产生系统所需的5V,同时也作为PD协议的5V源。
- 路径管理:TPS65982内部集成了功率路径管理FET(PP_5V0用于5V, PP_HV用于高压)。根据协商结果,它会自动导通相应的内部FET,将正确的电压连接到VBUS。
- 使能与泄放电路:一个关键的细节是LM3489的EN(使能)引脚。我将其连接到TPS65982的另一个GPIO(如GPIO6),该GPIO映射到“连接事件”上。只有当Type-C线缆插入时,DC-DC才被使能,这避免了空载损耗和意外上电。同时,这个GPIO还控制一个LED(如D7)。这个LED不仅是指示灯,更是一个重要的泄放负载。当从高电压(如20V)切换到低电压(如9V)时,输出电容上的电荷需要快速释放以符合PD协议规定的电压下降时间。这个LED提供了约50mA的固定负载,能帮助电容快速放电。
3.4 PCB布局与散热考量
高功率DC-DC的布局至关重要,糟糕的布局会导致效率低下、噪声大甚至不稳定。
- 功率环路最小化:LM3489的VIN、SW(开关节点)、GND以及输出电容构成的环路面积要尽可能小。使用宽而短的走线,以减小寄生电感和电阻,降低开关噪声和损耗。
- 反馈走线:连接FB引脚的电阻网络走线要远离噪声源(如电感、开关节点)。最好采用“星型”连接,将敏感点直接引回FB引脚,避免在噪声路径上引入压降。
- 散热处理:外置的PFET和电感是主要热源。PFET应选用低Rds(on)的型号,并为其提供足够的铜皮面积散热,必要时可添加散热过孔连接到背面或内层的地平面。电感的饱和电流和温升电流需留足余量。
- 地平面分割:模拟地(反馈网络、芯片AGND)和功率地(PGND)应单点连接,通常连接在输出电容的负端下方,以防止功率地的噪声干扰敏感的模拟信号。
4. 固件配置与调试要点
硬件设计好了,还需要正确配置TPS65982才能让它“聪明”地工作。
4.1 使用TPS6598X-CONFIG工具
TI提供了图形化的配置工具,这是配置固件的关键。
- 导入基础配置:可以从EVM的配置文件开始修改。
- 设置Source Capabilities:在“Power”或“PD Policy”部分,定义你的电源能力(Source PDOs)。你需要添加四个Fixed Supply PDO,电压值分别为5V、9V、15V、20V,并设置每档电压下你设备能提供的最大电流(例如5V/3A, 9V/3A, 15V/3A, 20V/5A)。
- 映射GPIO事件:这是核心步骤。进入GPIO配置页面。
- 将GPIO0映射到事件
Source PDO 1 Negotiated(假设PDO1是9V)。 - 将GPIO1映射到
Source PDO 2 Negotiated(假设PDO2是15V)。 - 将GPIO2映射到
Source PDO 3 Negotiated(假设PDO3是20V)。 - 将GPIO6映射到
Connection Event(用于使能DC-DC和泄放LED)。 - 确保这些GPIO被配置为推挽输出模式。
- 将GPIO0映射到事件
- 生成并烧写固件:工具会生成一个二进制配置文件,通过I2C或SPI接口烧写到TPS65982外挂的EEPROM(如W25Q80)中。上电后,芯片会自动加载配置。
4.2 系统上电与协议协商流程
一个完整的工作流程是这样的:
- 设备上电:TPS65982初始化,加载固件配置。
- 线缆插入:TPS65982检测到CC引脚上的连接,GPIO6输出高电平,使能LM3489,泄放LED点亮。
- 广播能力:TPS65982通过CC线向连接的设备(Sink)发送Source Capabilities消息,告知对方“我能提供5V、9V、15V、20V”。
- 请求与协商:Sink设备根据自身需求,回复一个Request消息,例如“请给我20V/3A”。
- 接受并执行:TPS65982接受请求,建立PD合同。同时,固件触发事件,使对应20V的GPIO2输出高电平。
- 控制电源:GPIO2的高电平控制MOSFET,将对应20V的反馈电阻接入LM3489的FB网络。LM3489调整输出至20V。
- 导通路径:TPS65982内部相应的PP_HV高压路径FET导通,将20V送至VBUS,开始为设备供电。
- 电压切换���如果设备断开并重新连接了一个需要9V的设备,TPS65982会先通过内部电路和泄放LED将VBUS电压快速拉低,然后协商新的9V合同,切换GPIO0,改变LM3489输出,最后导通路径。
4.3 调试与验证实录
调试阶段是最容易踩坑的,下面是我遇到的一些典型问题及解决方法。
问题1:输出电压不准,或切换后电压飘移。
- 排查:首先用万用表静态测量反馈电阻的阻值,确认是否与计算值一致。然后上电,在空载和带载(用电子负载)情况下分别测量各档位电压。
- 可能原因与解决:
- 电阻精度或焊接问题:更换为高精度电阻,检查虚焊。
- MOSFET开关导通电阻影响:小信号MOSFET(如2N7002)的导通电阻(Rds_on)可能达到几欧姆,如果与反馈电阻串联,会引入误差。确保你使用的模拟开关(如SI8409)或MOSFET的导通电阻远小于反馈电阻(至少小两个数量级)。
- FB引脚寄生电容:连接到FB节点的长走线或开关管的寄生电容可能影响环路稳定性。尽量缩短走线,并在FB引脚到地之间按芯片手册建议放置一个小的补偿电容(如10pF)。
问题2:电压切换时,输出出现大幅过冲或跌落。
- 排查:使用示波器在输出电容两端观察切换瞬态。
- 可能原因与解决:
- 环路补偿不足:LM3489是迟滞控制器,本身环路稳定,但反馈电阻的突然变化相当于给环路一个阶跃扰动。可以尝试在反馈电阻上并联一个小电容(如100pF),与电阻形成一个低通滤波,减缓反馈电压的变化速度,从而“软化”切换过程。
- 泄放能力不足:从高电压切换到低电压时,如果输出电容存储的电荷无法快速释放,电压下降太慢,可能导致协议超时。确保泄放LED(或专用泄放电阻)的电流足够大。计算一下:
放电时间 ≈ (C * ΔV) / I_discharge。例如,从20V放到9V,ΔV=11V,输出电容C=100µF,泄放电流I=50mA,则理论时间约为22ms,这在协议允许范围内。
问题3:20V档位输出达不到20V,只有19V左右。
- 排查:测量输入电压、LM3489的SW节点波形、以及PFET的栅极驱动。
- 可能原因与解决:
- 未进入100%占空比:这是最常见的原因。检查控制20V档位的反馈电阻是否足够小,确保FB引脚电压被拉得足够高,迫使控制器进入全开模式。用示波器看SW节点,在20V输出时,应该是一条稳定的高电平直线,没有任何开关波形。
- 路径压降:即使DC-DC输出了20.0V,经过PCB走线、TPS65982的内部FET(PP_HV或PP_EXT)后,到VBUS端口也会有压降。特别是当电流较大时(如5A),走线电阻和FET的Rds_on会产生可观压降(可能达0.1-0.2V)。解决方案是优化功率路径布局,使用更宽更短的走线,并确保TPS65982的散热,防止内部FET因过热而Rds_on增大。
问题4:连接某些设备无法充电或反复断开。
- 排查:使用USB PD协议分析仪(如Ellisys, Total Phase)监控CC线上的通信报文。
- 可能原因与解决:
- PDO顺序或属性错误:在配置工具中,确保Source PDO的顺序符合协议要求(通常按电压升序排列)。检查每个PDO的电流能力是否设置合理,是否勾选了“Unconstrained Power”或“Dual Role Power”等不该勾选的选项。
- VBUS放电时间不满足:协议要求Source在合同失效后,必须在规定时间内(如tVBUSDischarge)将VBUS放到安全电压(通常<5V)。如果泄放电路太弱,可能导致放电超时,被Sink设备视为异常。加大泄放电流或电容值。
- EMI/噪声干扰CC通信:如果DC-DC的开关噪声耦合到CC线上,可能导致通信错误。确保CC走线远离功率电感和大电流路径,并做好屏蔽。可以在TPS65982的CC引脚附近增加滤波电容(需谨慎,容值太大会影响信号边沿)。
经过上述系统的设计、实现和调试,最终得到的板卡能够可靠地支持USB PD “电源规则”的全部四档电压。这个方案在成本、复杂度和性能之间取得了很好的平衡,特别适合单Type-C端口的电源适配器、显示器、扩展坞等产品。在整个过程中,深刻体会到电源设计与协议栈配合的重要性,任何一个细节的疏忽都可能导致整个系统无法正常工作。希望这份详细的总结,能给正在攻关USB PD设计的工程师们带来实实在在的帮助。