1. 项目概述:一颗芯片搞定系统供电与充电
在嵌入式系统,尤其是便携式设备的设计中,电源管理部分往往是最让人头疼的环节之一。你需要一个充电管理电路给电池充电,需要多个LDO给不同的模拟和数字模块供电,还需要高效率的DC-DC降压转换器来驱动主处理器和核心逻辑。把这些功能模块用分立器件搭起来,不仅占用宝贵的PCB面积,复杂的布局布线和时序控制更是对工程师的严峻考验。
TI的TPS65810系列电源管理芯片(PMIC)就是为解决这类问题而生的。它把线性充电器、多达9路的LDO、两路高效率同步降压转换器(Buck)、甚至一个10位ADC都集成在了一个QFN封装里。我第一次在项目里用这颗芯片时,感觉就像找到了一个“电源瑞士军刀”——系统所需的大部分电源轨和充电管理,都能通过配置这一颗芯片来实现,极大地简化了硬件设计和BOM管理。
它的核心价值在于“集成”与“可控”。通过I2C接口,你可以动态配置几乎所有关键参数:充电电流、充电电压、各路LDO的输出电压和开关、Buck转换器的工作模式(PWM/PFM)和输出电压,甚至还能用内置ADC监控电池电压和温度。这种灵活性,对于需要多电压域、且对功耗敏感的应用(比如基于Linux的便携式工控设备、手持数据采集终端)来说,是至关重要的。
接下来,我将结合手册内容和实际调试经验,为你拆解TPS65810的几个核心模块:充电与功率路径管理、LDO线性稳压器、以及支持PWM/PFM自动切换的同步降压转换器。我会重点讲清楚每个模块的工作原理、配置要点,以及那些数据手册上不会写,但实际调试中一定会遇到的“坑”。
2. 核心模块一:充电与功率路径管理
2.1 系统供电逻辑与外部元件选型
TPS65810的供电输入有三个来源:AC适配器(AC引脚)、USB端口(USB引脚)和电池(BAT引脚)。芯片内部有一个智能的“功率路径管理”逻辑,其核心目标是:优先使用外部电源为系统供电并为电池充电,无外部电源时则无缝切换至电池供电,且切换过程系统电压(OUT引脚)保持稳定。
从手册的框图和典型应用电路可以看出,要实现这个功能,外围必须连接几个关键元件:
- 输入电容(C1, 10μF):靠近AC和USB引脚,用于滤除输入电源的噪声和提供瞬时电流。建议使用低ESR的陶瓷电容。
- 系统输出电容(C2, 10μF):连接在OUT引脚。这是整个系统的“能量水池”,其稳定性直接影响系统电压的纹波。同样推荐低ESR的陶瓷电容。
- 充电电流设置电阻(R_SET, 1kΩ):连接在ISET1引脚和地之间。这个电阻决定了恒流充电阶段的电流大小。计算公式为
I_CHG = K / R_SET,其中K是一个由芯片内部决定的常数(典型值在数据手册中给出)。例如,要实现1A的充电电流,就需要根据公式计算并选取对应的电阻值。这里有个细节:电阻精度建议为1%,温度系数要好,否则充电电流会漂移。 - DPPM(动态电源路径管理)分压电阻(R_DPPM, 37.4kΩ):连接在DPPM引脚。这个电阻与内部电路共同设定了一个电压阈值(如示例中的4.3V)。当适配器电压因负载过大而下降时,一旦系统总线(OUT)电压低于此阈值,芯片会降低充电电流,优先保障系统供电。这是防止插着充电器却因为系统负载过大导致设备重启的关键机制。
- 电池温度检测网络(R_NTC, 50kΩ NTC + R_TMR, 49.9kΩ):通过TS引脚连接电池包内的NTC热敏电阻。这个网络用于监测电池温度,在温度过高(如>65°C)或过低(如<5°C)时暂停充电,确保安全。实际应用时,必须根据你选用的具体NTC型号的B值,来精确计算这两个电阻的阻值,以确保温度保护点准确。
2.2 充电流程与I2C寄存器配置
充电过程分为几个阶段,完全由芯片内部控制,但关键参数可通过I2C配置:
- 涓流预充(Trickle Charge):当电池电压低于一个安全阈值(通常约3.0V)时,芯片以小电流(例如快充电流的10%)对电池进行预充,唤醒深度放电的电池。
- 恒流快充(Constant Current - Fast Charge):电池电压上升到安全范围后,进入恒流充电阶段,电流大小为通过R_SET电阻设定的值。此时充电电流最大,电池电量快速上升。
- 恒压充电(Constant Voltage):当电池电压接近设定的充电终止电压(如4.2V或4.36V,通过I2C可调)时,转为恒压充电。电流开始逐渐减小。
- 充电终止(Charge Termination):当充电电流减小到快充电流的某个百分比(如10%,可通过I2C设置)时,芯片判定电池已充满,停止充电。
- 消流/维护充电(Maintenance):充电停止后,电池会因自放电而电压缓慢下降。当电压低于再充电阈值(通常比终止电压低100-150mV)时,芯片会重新开启一个小的充电周期,将电池补满。
所有这些阶段都由内部状态机管理,但你可以通过I2C寄存器进行精细控制。关键寄存器包括:
- 充电电流缩放(Charge Current Scaling):即使硬件电阻设定了最大电流,你仍然可以通过I2C将电流按比例(25%, 50%, 75%, 100%)缩放。这在系统发热严重或输入电流受限时非常有用。
- 充电安全定时器(Safety Timer):为了防止电池故障导致无限期充电,芯片内置了硬件计时器(如示例中的5小时)。如果充电时间超过定时器设定,充电将被强制终止。这是一个重要的安全特性,务必根据你的电池容量和充电电流合理设置。
- 充电使能/挂起(Charge Suspend):可以通过I2C命令随时暂停或恢复充电过程。
实操心得:调试充电功能时,最容易出问题的地方是电池温度检测电路。如果TS引脚上的分压值超出了芯片内部比较器的窗口范围,芯片会误判为温度故障而一直处于充电挂起状态。务必用万用表实测TS引脚电压,确保在常温下它处于手册规定的正常范围内(通常对应一个特定的电压区间)。另一个坑是DPPM阈值,如果设置得过低,系统稍有大负载就会触发DPPM,导致充电电流被限制,充电速度极慢;设置得过高,则可能起不到保护作用。需要根据你的适配器输出能力和系统最大功耗来权衡。
3. 核心模块二:九路LDO线性稳压器详解
3.1 LDO的分类与连接
TPS65810集成了9路LDO,看似复杂,但可以按功能和可配置性分为三类,理解后就清晰了:
固定输出LDO:
- LDO0:固定输出3.3V,最大150mA。通常用于给始终需要供电的低功耗外设或IO电平转换。
- LDO_PM:固定输出3.3V,最大20mA。它的使能是内部硬件连接的,只要检测到AC或USB电源插入,就会自动开启。非常适合用来给USB枚举电路或电源状态指示灯供电。
- RTC_OUT:固定输出1.5V,最大8mA。顾名思义,专为实时时钟(RTC)电路设计,在系统深度睡眠时也能保持供电,确保时钟不停。
- SIM:固定输出1.8V或2.5V(通过I2C选择),最大8mA。用于SIM卡供电。
可选电压LDO(LDO1, LDO2):
- 输出电流最大150mA。
- 输出电压可通过I2C在8个固定值中选择:1.25V, 1.5V, 1.8V, 2.5V, 2.85V, 3.0V, 3.2V, 3.3V。
- 这类LDO适合给那些需要特定电压,但电流需求不大的数字芯片或传感器供电,比如1.8V的I2C电平、2.5V的SDRAM等。
可编程电压LDO(LDO3, LDO4, LDO5):
- 输出电流最大100mA。
- 这是最灵活的部分,输出电压可通过I2C在1.224V至4.46V范围内,以25mV为步进,进行128级精细编程。
- 它们适合给模拟电路(如运放、ADC参考源)供电,因为你可以精确调出所需的电压值。
连接上需要注意:LDO1和LDO2共享一个输入引脚VIN_LDO12,LDO3、LDO4、LDO5共享另一个输入引脚VIN_LDO35。这两个引脚必须外接到系统的OUT电源总线上。当然,你也可以选择将它们接到SM1或SM2降压转换器的输出上,这样可以实现更高效的二级降压,但必须仔细规划上电时序,确保后级LDO的输入电压在其输出稳定前就位。
3.2 关键特性与配置技巧
- 使能控制与放电开关:除了LDO_PM,所有LDO都可以通过I2C单独开启或关闭。更棒的是,LDO1、LDO2、LDO3-5在关闭时,可以通过I2C启用内部的输出放电开关,将输出电容快速放电到地。这个功能对于需要快速下电复位的模块(如某些处理器核心)至关重要,可以避免因为残留电荷导致逻辑状态异常。
- 输出电容选择:手册给出了每路LDO推荐的输出电容值(如图中C3-C15)。强烈建议使用手册推荐的X5R或X7R材质的陶瓷电容,并且尽量靠近芯片引脚摆放。陶瓷电容的低ESR特性是保证LDO环路稳定的关键。如果使用电解电容等大ESR电容,很可能引起振荡。
- 电源轨监控(Power-Good):芯片内部有比较器持续监控LDO的输出电压。当输出电压低于设定值的90%时,会触发状态标志位,并可以配置产生中断通知主机。这为系统实现高级的电源故障检测和恢复提供了可能。
注意事项:在通过I2C动态切换LDO1/LDO2的输出电压时,要注意负载的瞬态响应。例如,从3.3V切换到1.8V,如果负载电路中有大的解耦电容,电压下降会有一个过程。如果后级电路对上下电时序有严格要求,最好先关闭LDO,等待其放电完成(或主动控制放电),再开启并设置为新电压。对于可编程的LDO3-5,虽然步进很小,但在改变电压时,芯片内部是有一个缓变的DAC在调整,通常不会产生电压毛刺,但敏感模拟电路仍需关注。
4. 核心模块三:高效率同步降压转换器(SM1 & SM2)
4.1 工作原理与模式自动切换
SM1和SM2是两个完全独立的同步降压(Buck)转换器,集成了上管(P-MOS)和下管(N-MOS),外围仅需一个电感和两个电容(输入输出各一),极大地简化了设计。
其核心优势在于支持PWM(脉冲宽度调制)和PFM(脉冲频率调制)两种工作模式,并能根据负载情况自动切换。
- PWM模式(重载/中载):固定1.5MHz开关频率。在此模式下,控制器通过调节每个周期内上管导通的时间(占空比)来稳定输出电压。优点是噪声频谱固定,易于滤波;输出纹波小。缺点是轻载时开关损耗占比大,效率低。
- PFM模式(轻载):当平均负载电流低于阈值
I_PFM(ENTER)时,芯片自动切换到PFM模式。在此模式下,转换器进入“突发(Burst)”工作状态:只有当输出电压跌落到设定值以下时,才启动一串开关脉冲,将电压提升到设定值以上,然后休眠等待电压再次跌落。PFM模式大幅降低了轻载时的开关次数和静态电流,从而显著提升了轻载效率。代价是开关频率不固定,输出电压纹波会比PWM模式大。
自动切换的阈值电流I_PFM(ENTER)和I_PFM(LEAVE)与输入电压VIN有关,计算公式在手册中给出(I = V(VIN) / 29Ω或39Ω)。这意味着切换点不是固定的,会随输入电压变化。理解这一点对评估系统在不同输入电压(如电池供电时电压会下降)下的效率表现很重要。
4.2 高级功能与寄存器配置
- 输出电压与斜率控制:两路Buck的输出电压都可通过I2C在宽范围内编程(SM1: 0.6-1.8V, SM2: 1.0-3.4V)。更实用的是输出电压摆率(Slew Rate)控制。当通过I2C改变输出电压时,你可以选择电压是“一步到位”还是以一个可控的斜率(SM1: 0.24-15.36 mV/μs)爬升。这对于给处理器核心电压(Vcore)上电至关重要,可以控制浪涌电流,避免对输入电源造成冲击。
- 相位控制(Phase Control):当SM1和SM2都工作在PWM模式且共用输入电源(
OUT)时,你可以通过I2C设置SM2相对于SM1的PWM时钟相位差(0°, 90°, 180°, 270°)。这样做的目的是让两路Buck的开关动作错开,平滑输入电容上的电流应力,从而减小输入电压的纹波,允许使用更小容值的输入电容。这是多相电源设计中的一个经典技巧。 - 待机模式(Standby Mode):可以通过I2C或GPIO引脚将Buck转换器切入待机模式。在此模式下,转换器强制进入低功耗的PFM模式,并且可以输出一个与正常工作模式不同的、更低的电压。这为处理器的深度睡眠状态(Core Voltage Retention)提供了完美支持,既能保持内存数据,又能将功耗降到极低。
- 100%占空比与跌落(Dropout)操作:当输入电压非常接近输出电压时,Buck转换器会进入100%占空比模式,即上管持续导通。此时,输出电压
Vout ≈ Vin - Iout * (Rds_on + L_DCR)。这意味着即使在电池电压较低时,Buck仍能持续输出所需电压,延长了电池可用时间。手册中的公式(11)给出了进入此模式的条件。
4.3 外围元件选择与布局要点
- 电感选择:手册推荐3.3μH。选择电感时,需关注其饱和电流额定值必须大于Buck转换器的最大输出电流加上纹波电流。通常选择饱和电流有30%-50%裕量的电感。DCR(直流电阻)越小,效率越高。
- 输入/输出电容:推荐使用10μF的陶瓷电容。陶瓷电容的低ESL(等效串联电感)和低ESR特性,对于处理1.5MHz的高频开关噪声至关重要。输出电容的容量和ESR直接影响输出电压纹波。布局时,输入电容(C19/C21)必须尽可能靠近芯片的VIN_SMx和PGNDx引脚,回路面积最小化,这是抑制开关噪声辐射和传导的关键。
- PFM纹波控制:寄存器中有
PFM_RPL控制位。设置为低(LO)可以降低PFM比较器的静态电流,提升轻载效率,但会导致输出电压纹波增大。设置为高(HI)则相反,纹波小,效率略低。需要根据后端负载对噪声的敏感度来权衡。
踩坑实录:调试SM1/SM2时最常见的两个问题:一是振荡,二是轻载效率不达标。振荡通常是因为输出电容的ESR过低,导致环路相位裕度不足。虽然陶瓷电容是首选,但有时并连一个几十毫欧ESR的钽电容或聚合物电容反而能稳定环路。轻载效率不达标,首先检查是否成功进入了PFM模式。可以用示波器观察SW节点波形,PWM模式是连续的固定频率方波,PFM模式是间歇性的脉冲串。如果轻载时还是PWM,检查I2C配置是否禁用了自动PFM模式。另外,电感的选择也影响效率,在轻载时,电感的铁损(Core Loss)会成为主要损耗源,选择适合高频、低铁损的电感型号很重要。
5. 内置10位ADC与系统监控
5.1 ADC通道与功能概览
TPS65810内置的10位逐次逼近型(SAR)ADC绝不仅仅是个摆设,它是一个强大的系统监控工具。它提供了8个输入通道:
- CH1, CH2 (ANLG1, ANLG2):通用模拟输入引脚,可测量外部电压。特别的是,ANLG1引脚在检测到输入电源时会自动启用内部上拉电流源,非常适合用来连接电池识别电阻。
- CH3 (ISET1):测量与充电电流成正比的电压,用于监控实时充电电流。
- CH4 (TS):测量电池温度检测网络的分压,用于直接读取温度相关的ADC值。
- CH5 (内部):测量芯片内部结温,斜率典型值为-6.5mV/°C。
- CH6 (RTC_OUT),CH7 (OUT),CH8 (BAT):分别监控RTC LDO输出、系统总线电压和电池电压。
5.2 灵活的工作模式与配置策略
这个ADC的亮点在于其灵活的可编程性,支持单次转换、多次转换、连续转换(Repeat模式),以及外部触发。
- 算术逻辑单元(ALU):ADC内置了ALU,可以在一次转换周期(可配置1-256次采样)后,直接给出最大值、最小值、平均值或最后一次采样值。你不需要在主机MCU上进行软件滤波和计算,节省了CPU资源和软件开销。
- 外部触发与同步:可以将GPIO3配置为ADC的外部触发源。这对于需要与外部事件(如传感器数据就绪)同步采样的应用非常有用。你还可以设置触发延迟(
tDLY)和采样间隔(tWAIT)。 - 保持(Holdoff)模式:在进行多次采样时,可以启用Holdoff模式。在此模式下,只有外部触发信号在采样时刻有效时,才会进行一次采样。这确保了每一次采样都与外部事件严格同步,避免了异步采样带来的误差。
- 上下限报警与连续监控(Repeat模式):可以为每个通道设置ADC值的上下限(
DHILIM,DLOLIM)。在Repeat模式下,ADC会持续进行转换循环,一旦采样值超出设定范围,立即产生中断。这相当于一个硬件实现的电源电压监控报警器,可以用来监测电池是否欠压、系统电压是否异常等,而无需MCU频繁轮询。
配置流程示例(以监控电池电压为例,使用内部触发,求16次采样的平均值):
- 通过I2C配置
ADC_SET寄存器:选择通道CH8(BAT),设置读取模式为16次采样,ALU模式为平均。 - 配置
ADC_DELAY和ADC_WAIT寄存器,设定采样间隔时间。 - 可选:配置
DHILIM和DLOLIM寄存器,设定电池电压的报警阈值(如3.3V-4.2V)。 - 将
ADC_EN位由0写为1,启动一次转换周期。 - 等待ADC中断(或轮询状态位)标志转换完成。
- 读取
ADC_READING_HI/LO寄存器,得到的就是16次采样的平均电压对应的ADC值,再根据公式(Vbat = ADC_Code / 1023 * 4.7V)换算成实际电压。
经验分享:使用内部温度传感器通道(CH5)时,读出的ADC值需要根据手册提供的公式(
Tj = (V_adc - 1.85V) / (-0.0065 V/°C) + 25°C)来换算结温。这个温度可以用来评估芯片本身的温升。另外,ADC的参考电压可以选择内部(~2.535V)或外部。如果使用外部参考,精度取决于你提供的参考源,但必须注意,所有通道的满量程范围(除CH7,CH8是4.7V外)都基于这个参考电压。为了提高测量电池电压(CH8)的精度,可以考虑使用一个外部2.5V或3.0V的精密基准源连接到ADC_REF引脚。
6. I2C通信与系统集成要点
6.1 寄存器访问与电源时序
TPS65810的所有可配置功能都通过标准的I2C接口(支持400kHz)访问。芯片作为从设备,有固定的7位从机地址。读写寄存器就是标准的I2C协议。
需要特别注意电源时序:虽然芯片内部有上电复位电路,但在复杂的系统中,必须考虑各电源轨的上电/下电顺序。例如,可能需要先让I/O电源(如3.3V的LDO)稳定,再给核心电源(如SM1输出的1.2V)上电。TPS65810的LDO和Buck都可以通过I2C独立控制开关,这为软件实现复杂的时序提供了可能。你可以在MCU启动后,再通过I2C依次开启各个电源轨。
更高级的用法是利用芯片的GPIO引脚。部分GPIO可以配置为“控制引脚”,直接映射到某些功能,例如将某个GPIO配置为SM2的待机模式控制引脚,这样无需I2C命令,一个GPIO电平就能控制SM2进入或退出待机模式,响应更快。
6.2 常见问题排查速查表
在实际项目中调试TPS65810,可能会遇到以下典型问题,这里提供一个快速排查思路:
| 现象 | 可能原因 | 排查步骤 |
|---|---|---|
| 系统无任何输出 | 1. 主电源(AC/USB)未正确接入或电压不足。 2. 电池完全耗尽且未连接充电器。 3. 芯片使能引脚(如有)未拉高。 4. 芯片损坏。 | 1. 测量AC/USB引脚电压是否在有效范围(如4.5V-5.5V)。 2. 测量BAT引脚电压,若低于欠压锁定阈值,需外接电源激活。 3. 检查芯片的EN或PWRON引脚电平。 4. 检查I2C是否能正常通信,读取芯片ID寄存器。 |
| 某路LDO/Buck无输出 | 1. 该路电源未通过I2C使能。 2. 输出短路或过载触发保护。 3. 对应的输入引脚(VIN_LDOxx/VIN_SMx)未连接或没电。 4. 外部电感/电容损坏或焊接不良。 | 1. 通过I2C读取对应控制寄存器的ON/OFF位。 2. 断开负载,测量输出端对地电阻,检查是否短路。 3. 测量输入引脚电压。 4. 检查电感和电容的焊接,特别是Buck电路的功率回路。 |
| 充电异常(不充电/充不满) | 1. TS温度检测引脚电压异常,导致充电暂停。 2. DPPM阈值设置不当,输入电流被限制。 3. 充电安全定时器超时。 4. ISET1电阻值不准确或损坏。 5. 电池本身老化或损坏。 | 1.首要步骤:测量TS引脚电压,确认其在正常温度窗口内(通常0.5V-2.5V)。 2. 测量AC/USB输入电压,在带载时是否被拉低至DPPM阈值以下。 3. 通过I2C检查充电状态寄存器,查看是否因定时器或温度保护暂停。 4. 测量R_SET电阻阻值。 5. 更换已知良好的电池测试。 |
| Buck电路输出纹波过大 | 1. 输出电容ESR过高或容值不足。 2. 电感饱和或选型不当。 3. 布局不佳,功率回路面积过大。 4. 处于PFM模式,轻载纹波本就较大。 | 1. 用示波器观察纹波波形和频率,判断是开关噪声(高频)还是PFM Burst噪声(低频包络)。 2. 检查输出电容是否为推荐的低ESR陶瓷电容,并确保布局靠近芯片。 3. 检查电感额定电流是否足够,在最大负载电流下是否饱和(电感量骤降)。 4. 尝试调整 PFM_RPL位,在效率和纹波间权衡。 |
| I2C通信失败 | 1. 上拉电阻缺失或阻值不当。 2. SDA/SCL线路被其他器件拉死。 3. 电源未稳定就进行通信。 4. 从机地址错误。 | 1. 确认I2C总线上有正确的上拉电阻(通常4.7kΩ-10kΩ)。 2. 用示波器观察SDA/SCL波形,看是否有毛刺或电平无法拉高。 3. 确保芯片核心供电(通常来自内部或LDO)稳定后再初始化I2C。 4. 核对芯片数据手册中的I2C从机地址。 |
| ADC读数不准 | 1. 参考电压选择错误或不准。 2. 输入信号超出量程。 3. 采样模式或ALU模式配置错误。 4. 模拟输入引脚有噪声干扰。 | 1. 确认使用的是内部参考还是外部参考,并测量参考电压实际值。 2. 确保被测电压在所选通道的量程内(如CH1/CH2是0-2.535V)。 3. 检查 ADC_READ位,确认读取的是平均值、最大值还是最后一次值。4. 在模拟输入引脚增加一个小电容(如100pF)滤波。 |
6.3 设计检查清单与最终建议
在完成基于TPS65810的PCB设计后,建议对照以下清单进行检查:
- 电源输入:AC/USB输入引脚处的10μF陶瓷电容是否尽可能靠近芯片引脚?输入走线是否足够宽以承载最大电流(如2.5A)?
- 功率回路(针对SM1/SM2):VIN_SMx -> 输入电容 -> 芯片的VIN_SMx引脚 -> 芯片内部开关 -> 芯片的PGNDx引脚 -> 输入电容地 -> 电感 -> 输出电容 -> 芯片的VO(SMx)引脚。这个环路面积是否做到了最小化?使用地平面作为回流路径。
- 模拟敏感部分:ADC的参考引脚ADC_REF是否连接了推荐的4.7μF电容并远离噪声源?电池温度检测网络(TS引脚)的走线是否远离开关节点等噪声源?
- 热管理:TPS65810在满负荷工作时会产生热量。芯片底部的散热焊盘(Thermal Pad)是否设计了充足的过孔连接到PCB内部的地平面或电源平面进行散热?PCB布局是否允许空气流通?
- 未使用功能:不使用的LDO或Buck的输出引脚,建议按照手册说明处理(通常悬空即可,但最好确认)。不用的模拟输入引脚(如ANLG2)建议接地或接一个固定电平,避免浮空引入噪声。
最后,拿到第一版PCB和芯片后,不要急于把所有功能都调通。建议按以下顺序调试:首先确保I2C通信正常;然后上电,检查OUT总线电压是否正常;接着逐一使能并测试每一路LDO和Buck(先空载,后加轻载);最后再调试充电功能和ADC。分步进行,遇到问题时隔离的范围小,更容易定位。TPS65810是一颗功能强大的芯片,吃透它需要时间和耐心,但一旦掌握,它将成为你便携式设备电源设计的利器。