TPS65919-Q1/17-Q1 PMIC与DRA78x/TDA3x处理器电源系统设计实战指南
1. 项目概述:为高性能处理器构建稳健的电源骨架
在汽车ADAS、工业视觉控制器这些对可靠性要求严苛的领域,一颗高性能的SoC(如TI的DRA78x或TDA3x)是系统的大脑,但让它稳定、高效运转的“心脏”和“神经网络”,则是一套精心设计的电源管理系统。这颗“心脏”就是PMIC(电源管理集成电路)。它远不止是几个稳压器的简单堆叠,而是一个集成了上电时序控制、动态电压调节、多种低功耗模式管理、系统监控与保护功能的智能电源中枢。其设计的优劣,直接决定了整个系统能否在复杂的电磁环境、宽温范围以及严苛的可靠性标准下稳定工作。
TPS65919-Q1和TPS65917-Q1正是TI为这类应用量身定制的车规级PMIC。前者提供4路SMPS(开关电源)和4路LDO,后者则在其基础上增加了一路SMPS和一路LDO,提供了更灵活的电源轨配置能力。它们与DRA78x/TDA3x处理器深度耦合,其内部的一次性可编程(OTP)存储器预置了针对这些处理器的优化配置,大幅简化了硬件设计和软件驱动的开发难度。然而,将官方文档中的原理图和数据表参数,转化为一块在实际板卡上稳定运行的电源子系统,中间充满了细节与“坑点”。本文将结合我多年的硬件设计经验,深入拆解TPS65919-Q1/17-Q1与DRA78x/TDA3x的供电配置与连接,不仅告诉你“怎么连”,更重点剖析“为什么这么连”,以及在实际调试中会遇到哪些问题、如何解决。
2. 核心需求解析与方案选型
在为DRA78x/TDA3x这类多核异构处理器选择PMIC方案时,我们需要首先明确几个核心需求,这直接决定了是选择TPS65919-Q1还是TPS65917-Q1,以及外围电路的复杂程度。
2.1 处理器电源域与电流需求分析
DRA78x/TDA3x处理器通常包含多个独立的电源域,例如核心电压(VDD_CORE)、数字信号处理器电压(VDD_DSPEVE)、DDR内存接口电压(VDD_DDR)、以及各类模拟和I/O电压。其中,VDD_DSPEVE的电流需求是选型的关键决策点。根据TI的官方指南,如果VDD_DSPEVE的峰值电流需求小于2.55A,可以考虑使用LP8733x-Q1 + LP8732x-Q1的双PMIC组合方案。但如果需求在2.55A到3A之间,或者为了追求更高的集成度和更简化的设计,TPS65919-Q1/17-Q1就成为更优的选择。
这里有一个非常重要的实践经验:官方给出的电流规格(如SMPS1最大3.5A)是在理想散热和特定输入电压下的实验室数据。在实际的紧凑型板卡设计中,散热条件往往受限,环境温度可能很高(汽车前舱可达85°C以上)。因此,必须为每路电源预留充足的降额(Derating)空间。我个人的设计准则是,对于关键的核心电源轨(如VDD_CORE, VDD_DSPEVE),负载电流不应超过PMIC该路输出最大持续电流的70%。例如,用TPS65919-Q1的SMPS1(标称3.5A)给一个最大需求2.5A的DSP核供电,看似有余量,但在高温环境下,电感、MOSFET的损耗会增加,实际可用电流会下降。所以,在选型初期就进行热仿真和降额计算至关重要。
2.2 TPS65919-Q1与TPS65917-Q1的差异与选型
两者引脚兼容,可以视为“基础版”和“增强版”的关系。TPS65917-Q1多出的一路SMPS5和一路LDO3,为系统设计带来了极大的灵活性。
- TPS65919-Q1:4路SMPS + 4路LDO。适用于电源轨需求相对固定、外围器件较少的典型应用。其预配置的OTP(SW_REVISION 0x52)已经为DRA78x/TDA3x优化好了SMPS1/2给核心,SMPS3给1.8V域,SMPS4给DDR的方案。
- TPS65917-Q1:5路SMPS + 5路LDO。多出的资源可以用来:
- 为额外的外设或传感器供电:例如,为高速图像传感器提供一个独立、干净的1.2V或1.8V模拟电源(使用LDO3),避免数字电源噪声干扰。
- 实现更精细的电源域隔离:将某些总线的I/O电源与其他数字逻辑电源分开,减少噪声耦合。
- 作为备份或冗余电源:在需要高可靠性的设计中,多出的LDO可以作为关键时钟或复位电路的备份电源。
选型建议:如果当前设计对电源轨数量需求明确,且未来升级扩展可能性低,TPS65919-Q1更具成本优势。如果系统复杂度高,或对未来功能预留有要求,强烈建议选择TPS65917-Q1,多出的资源在后期调试和功能扩展时可能就是“救命稻草”。它们的OTP配置(0x52)在功能上是相同的,多出的SMPS5和LDO3默认关闭,需要通过I2C在启动后动态配置。
2.3 关键设计考量:FSR、复位逻辑与VIO_IN
除了基本的供电,三个高级功能直接影响系统的可靠性和用户体验:
- 快速挂起到RAM(FSR):这对于需要实现“瞬时启动”或低功耗待机的系统(如车载信息娱乐系统)至关重要。FSR模式下,处理器核心断电,但DDR内存保持供电以维持数据,从而实现秒级恢复。TPS65919-Q1/17-Q1通过GPIO4控制一个外部负载开关,来隔离处理器的DDR电源域,是实现FSR的硬件基础。是否支持FSR,决定了GPIO4的电路连接方式和软件配置流程。
- 复位架构(POWERHOLD vs PWRON):这是硬件上电/下电逻辑的核心。POWERHOLD模式通常由主处理器或系统管理单元(如MCU)控制,实现软件关机。PWRON模式则直接连接物理按键,适合消费类设备。在汽车电子中,更常见的是POWERHOLD模式,因为整车的上下电逻辑通常由域控制器或车身控制器管理。文档中提到的“温复位(Warm Reset)”场景,需要仔细处理POWERHOLD信号的电平,防止PMIC在复位过程中意外掉电。
- VIO_IN电源域:这个电压为PMIC自身的I/O引脚(GPIO2, GPIO4, RESET_OUT, INT, I2C)供电,决定了这些信号的电平(1.8V或3.3V)。它必须与所连接处理器或外部器件的I/O电平匹配。其供电时序也极其关键:必须在PMIC的VCC稳定后、且在使能任何VIO域引脚(如FSR用的GPIO4)之前建立。文档中给出了用SMPS3(1.8V)直接供电,或通过一个由SMPS3控制的负载开关从3.3V取电的方案,选择哪种取决于你的系统I/O电平。
3. 硬件连接设计与原理图要点
理解了核心需求后,我们进入实战环节——画原理图。图1和图2是官方推荐的连接框图,但直接照搬很容易踩坑。下面我结合几个关键点,拆解其中的设计逻辑。
3.1 标准供电连接详解
以图1的标准连接为例,我们分解各电源轨:
- 核心电源(VDD_CORE, VDD_DSPEVE):由SMPS1和SMPS2提供,默认OTP配置为1.06V。这里有一个高级功能——双相(Dual-Phase)配置。通过设置
SMPS1_SMPS12_EN位,可以将SMPS1和SMPS2并联工作,共同为一个大电流负载(如超过单路3.5A的核)供电。这样做的好处是能降低输出纹波、提高瞬态响应并分摊热损耗。但请注意:如果启用双相,这两路输出必须连接到同一个负载网络,且电感、电容的选型需要按照双相拓扑重新计算。 - DDR内存电源(VDD_DDR):由SMPS4提供。其输出电压由BOOT引脚的电平决定:接GND为1.35V(DDR3L),接1.8V为1.5V(DDR3)。这是一个硬件配置,一旦焊接无法通过软件更改。因此,在PCB投板前,必须根据所选用的DDR内存类型(DDR3L vs DDR3)确认BOOT引脚的连接。DDR的参考电压(VREF)通常由一颗专用的稳压器(如TPS51200-Q1)产生,其输入可以来自SMPS4。
- 1.8V模拟/数字电源:由SMPS3提供。它为处理器的PLL、ADC/DAC模拟部分、CSI接口等提供清洁的电源。SMPS3同时还要为VIO_IN(如果选择1.8V��案)和可能的其他外设供电,需要仔细核算总电流。
- LDO的使用:LDO5(LN)默认输出1.8V,常用于给实时时钟(RTC)电路或低噪声模拟电路供电。LDO1和LDO2默认关闭,需要时可通过I2C配置。特别注意:LDO1和LDO2共享同一个输入引脚
LDO12_IN,这意味着它们必须由同一个前级电源供电,且电压需满足两者输出范围的要求。
3.2 支持FSR的电路设计要点
图2展示了FSR的配置。核心变化在于GPIO4的使用。在标准模式下,GPIO4可能被配置为REGEN2(使能外部稳压器)。在FSR模式下,它被配置为通用输出,用于控制一个额外的负载开关(如另一个TPS22965-Q1),这个开关串联在DDR电源(SMPS4输出)与处理器的DDR电源引脚之间。
工作流程:
- 正常模式:GPIO4输出高电平,负载开关导通,处理器DDR域得电。
- 进入挂起:系统软件准备就绪后,拉低NSLEEP(GPIO6)。PMIC执行SLP2ACT序列,关闭处理器核心电源,但保持SMPS4(DDR电源)开启。然后,软件需通过I2C将GPIO4配置为输出低电平,关闭负载开关,从而切断处理器DDR域的供电,但DDR内存本身仍由SMPS4供电保持数据。
- 退出挂起:外部MCU拉高NSLEEP(GPIO6)。PMIC执行ACT2SLP序列。在序列的某个阶段(需根据具体序列时序),软件需要再次通过I2C将GPIO4配置为输出高电平,打开负载开关,恢复处理器DDR域供电,然后处理器从DDR中恢复现场。
关键陷阱:GPIO4属于VIO_IN电源域。因此,VIO_IN的电源必须在GPIO4被配置和驱动之前稳定。这就是为什么VIO_IN的供电时序如此重要,通常需要SMPS3提前上电。
3.3 复位与使能电路设计
图3和图4分别描述了POWERHOLD和PWRON两种使能方式。
POWERHOLD模式(推荐用于复杂系统):
GPIO_5被OTP配置为POWERHOLD功能。- 通常连接到一个始终上电的、低功耗的系统管理MCU的GPIO上。
- MCU拉高
POWERHOLD,PMIC启动。MCU拉低POWERHOLD,PMIC执行关机序列。 PWRON引脚可以悬空或接一个物理按键作为冗余开机手段。- 实现温复位:如图4注释所述,需要将
GPIO_5 (POWERHOLD)与GPIO_2短接,并通过一个上拉电阻接到VIO。上电后,软件先将GPIO_2配置为输出高电平,再将其使能。这样,即使主处理器触发复位,只要GPIO_2保持高电平,POWERHOLD就保持有效,PMIC不会下电,从而实现“热重启”。
PWRON模式(简单系统):
GPIO_5可能被配置为其他功能(如普通GPIO)。PWRON引脚直接连接物理按键到地。按下按键,PMIC启动。- 关机通常需要长按按键(触发
PWRON_LPK中断)或由软件通过I2C命令发起。
复位信号连接:RESET_OUT引脚连接到处理器的PORz(上电复位)和nRESWARM(热复位)引脚。RESET_IN引脚可以接收来自处理器的复位请求。INT中断输出引脚连接到处理器的中断输入,用于报告各种事件(电压异常、看门狗、热关断等)。
4. OTP配置深度解析与软件策略
OTP是PMIC出厂前预编程的“固化配置”,它定义了上电后的默认行为。理解并善用OTP是稳定设计的基础。
4.1 静态平台设置:上电即生效的配置
这部分配置在PMIC的VCC上电、经过POR(上电复位)后立即生效,除非后续被软件覆盖。
1. 电源监控(System Voltage Monitoring): 这是系统的安全网。VSYS_MON(通常监控VCC_SENSE)作为启动门限,只有当输入电压高于此值(默认3.1V),PMIC才会从OFF状态进入ACTIVE状态并开始上电时序。VSYS_LO是欠压保护阈值,当VCCA电压低于此值(默认2.75V),PMIC会强制进入BACKUP模式,关闭所有输出(除RTC相关电路外)。务必根据你的实际输入电源(如汽车电池)的波动范围来评估这些阈值是否合适。例如,在冷启动(Crank)时,汽车电池电压可能瞬间跌至6V以下,如果转换后的VCCA电压低于VSYS_LO,会导致系统意外复位。
2. SMPS/LDO默认电压: 如表3和表4所示,OTP已经为DRA78x/TDA3x设好了默认电压。但这里有一个大坑:SMPS4的电压由BOOT引脚硬件决定。如果你在设计后期发现需要用1.5V的DDR3而不是1.35V的DDR3L,只能改板。SMPS1/2/3的电压可以通过I2C在运行时调整(例如,进行动态电压频率缩放DVFS),但绝对不能在线切换SMPS的电压范围(如从0.7-1.65V范围跳到1-3.3V范围),必须先关闭该路SMPS。
3. 中断(Interrupts)配置: OTP默认启用了一些关键中断(HOTDIE,SHORT,WDT,GPADC_AUTO_0/1),禁用了其他。HOTDIE(过热预警)中断非常有用,它允许处理器在PMIC因过热而强制关断(TSHUT)之前,采取降频等措施降低功耗。强烈建议在软件驱动中,根据实际需要配置中断掩码(INTx_MASK),例如使能VSYS_MON中断来监控输入电压跌落。
4. GPIO功能与上下拉: 表9-11定义了每个GPIO的默认功能。例如,GPIO6默认为NSLEEP,GPIO5默认为POWERHOLD。需要特别关注GPIO的上下拉配置。例如,GPIO_2_PU默认使能了上拉,这意味着如果GPIO2被用作输入且悬空,它会默认读到高电平。在设计复位电路(温复位方案)时,这个默认上拉是关键的一环。
4.2 序列平台设置:状态切换的剧本
这是PMIC最智能的部分,它定义了在不同电源状态(OFF, ACTIVE, SLEEP)之间切换时,各电源轨的上电/下电次序、延时。时序错误是导致处理器启动失败、DDR数据丢失最常见的原因。
1. OFF2ACT序列(上电时序): 这是最重要的序列。它必须严格符合处理器数据手册对电源轨上电次序和时序的要求。通常顺序是:先上核心电源(VDD_CORE等),再上I/O和内存电源,最后释放复位。OTP预配置的序列是针对DRA78x/TDA3x优化过的。在调试时,务必使用示波器多通道同时测量关键电源轨和复位信号,验证时序是否符合处理器要求。图9展示了默认的序列,但请注意,序列中的每一步都可以通过I2C进行微调(如果OTP允许)。
2. ACT2SLP/SLP2ACT序列(睡眠与唤醒): 这两个序列定义了进入和退出低功耗睡眠模式的电源操作。进入睡眠时,可能会关闭部分非核心电源(如SMPS3给的1.8V模拟电源),但保持核心电源和DDR电源。在FSR应用中,SLP2ACT序列中必须包含对GPIO4(控制DDR负载开关)的操作,这通常需要软件在序列执行前后进行干预,因为纯硬件序列可能无法完美匹配。
3. ACT2OFF序列(关机时序): 关机时序通常是上电时序的逆过程,但可能加入一些延时,确保处理器有足够时间保存状态。SWOFF_DLY配置位可以设置一个延迟,在收到关机请求后,PMIC会等待一段时间再真正开始下电序列。
4. 复位类型(SWOFF_HWRST)与关机/冷复位(Shutdown_ColdReset): 这是两个容易混淆但至关重要的配置表(表14,表15)。
SWOFF_HWRST:定义当某个“OFF请求”事件(如看门狗超时、复位键按下)发生时,触发的是硬件复位(HWRST)还是开关复位(SWORST)。HWRST会复位大部分寄存��(HWRST和SWORST域),而SWORST只复位SWORST域的寄存器(主要是电源控制相关寄存器)。例如,看门狗超时默认触发HWRST,这意味着PMIC会经历一个完整的重启流程。Shutdown_ColdReset:定义上述“OFF请求”事件最终导致系统彻底关机��是冷复位。冷复位是指执行关机序列后,立即自动重新执行上电序列(如果使能条件满足)。例如,SW_RST(软件复位)寄存器位默认触发冷复位,而PWRDOWN引脚默认触发关机。
配置心得:对于汽车应用,看门狗超时(WTD)通常应配置为触发冷复位(Shutdown_ColdReset表里设为1),这样系统能在软件跑飞后自动恢复,而不是彻底关机需要人工干预。同时,为了彻底清除错误状态,看门狗超时应触发HWRST(SWOFF_HWRST表里设为1)。
5. 软件驱动开发与调试要点
硬件连接正确只是第一步,软件配置才是让系统“活”起来的关键。
5.1 I2C通信与寄存器访问
PMIC通过I2C接口控制。OTP版本0x52对应的默认I2C地址是0x58(由ID_I2C1位域决定)。在Linux BSP或裸机程序中,首先需要确保I2C总线驱动正常工作,并能正确读写PMIC的寄存器。
一个常见的坑是I2C上拉电阻。PMIC的I2C引脚属于VIO_IN域,因此上拉电阻必须接到VIO_IN电压(1.8V或3.3V),而不是其他电源。如果接错,可能导致通信失败或损坏接口。
5.2 关键软件初始化流程
- 读取设备ID和版本:上电后,首先读取
SW_REVISION寄存器,确认OTP版本是否为预期的0x52。同时读取DEVICE_ID寄存器,确认是TPS65919还是TPS65917。 - 配置中断:根据系统需要,清除默认的中断状态位,并配置中断掩码寄存器(
INTx_MASK),使能所需的中断源(如过热预警、电压故障等)。设置中断处理函数。 - 动态电源配置:
- 调整电压:如果需要不同于OTP默认值的电压(例如进行DVFS),在调整SMPS电压前,确保该路SMPS处于
ACTIVE或OFF状态,避免在PWM或PFM模式下直接更改。 - 启用/禁用LDO:默认关闭的LDO1/LDO2,可以通过设置
LDO1_CTRL和LDO2_CTRL寄存器来开启,并设置输出电压。 - 配置GPIO:如果需要改变GPIO的功能(例如将GPIO6从NSLEEP临时改为POWERGOOD进行状态监控),需修改
PRIMARY_SECONDARY_PADx寄存器。改变GPIO功能时,要特别注意其上下拉和开漏配置是否也需要同步更改。
- 调整电压:如果需要不同于OTP默认值的电压(例如进行DVFS),在调整SMPS电压前,确保该路SMPS处于
- FSR流程实现(如果启用):
- 进入挂起:
- 系统软件保存上下文,准备进入低功耗状态。
- 通过I2C,将GPIO6的功能确认/设置为NSLEEP(通常默认已是)。
- 通过I2C,将GPIO4配置为GPIO输出模式,并输出低电平,关闭DDR负载开关。
- 拉低NSLEEP(GPIO6)引脚(通常由处理器另一个GPIO控制,或通过I2C控制一个IO Expander来实现)。
- 退出挂起:
- 外部唤醒事件触发,MCU拉高NSLEEP引脚。
- 在PMIC的SLP2ACT序列执行过程中或之后,通过I2C将GPIO4配置为输出高电平,打开DDR负载开关。
- 可选:将GPIO6重新配置为POWERGOOD功能进行监控。
- 进入挂起:
5.3 调试技巧与故障排查
系统无法上电:
- 检查使能信号:测量
PWRON或POWERHOLD(GPIO5)引脚电平。确认是否已达到PMIC的启动电压门限(VSYS_MON)。 - 测量VCC:确认PMIC的主输入电源VCC是否正常(典型值3.3V或5V)。
- 检查复位锁存:如果使用温复位方案,检查GPIO2和GPIO5的连接及上拉是否正常。
- 检查使能信号:测量
某一路电源无输出:
- 检查使能位:通过I2C读取该路SMPS/LDO的控制寄存器(如
SMPS1_CTRL),确认ENABLE位是否为1。 - 检查电源良好(PG)信号:如果该路SMPS有PG信号(可能复用到某个GPIO),测量其电平。
- 检查外部元件:测量电感和输出电容两端,排查虚焊或短路。SMPS对电感饱和电流和DCR有要求,选用不合适的电感会导致无法启动或效率极低。
- 检查使能位:通过I2C读取该路SMPS/LDO的控制寄存器(如
I2C通信失败:
- 测量VIO_IN:确保PMIC的I/O电源已稳定,且电平与主控I2C控制器电平一致。
- 检查上拉电阻:确认上拉电阻值合适(通常4.7kΩ-10kΩ),且上拉电源正确。
- 用示波器看波形:观察SCL和SDA线上的波形,看是否有毛刺、电平不完整或ACK信号异常。
系统不稳定或随机复位:
- 监控输入电压:使用PMIC内部的GPADC(通用ADC)或外部ADC,监控VCC_SENSE和VCCA电压,看是否有跌落或噪声。
- 检查热管理:触摸PMIC芯片温度是否异常。读取温度传感器寄存器或检查
HOTDIE中断是否触发。 - 分析看门狗:确认看门狗超时时间配置是否合理,应用程序是否定期喂狗。
- 检查电源时序:用多通道示波器捕获开机、关机、睡眠唤醒全过程的各路电源和复位信号,与处理器要求的时序图进行比对。
FSR功能异常:
- DDR数据丢失:重点检查在进入挂起状态时,GPIO4控制负载开关关闭的时机。必须在处理器完全进入低功耗状态、且DDR自刷新模式已启动后,才能断开处理器的DDR供电。时序过早会导致数据丢失。
- 无法唤醒:检查NSLEEP信号的电平转换是否正常,外部MCU的GPIO驱动能力是否足够。同时检查VIO_IN电源在睡眠状态下是否保持(通常需要)。
6. 实战配置表示例与检查清单
为了将上述内容落到实处,这里提供一个简化的硬件连接与软件初始化检查清单,以及一个关键寄存器配置示例。
6.1 硬件设计检查清单
| 项目 | 检查点 | 说明/推荐值 |
|---|---|---|
| 输入电源 | VCC 电压 | 通常 3.3V 或 5V,确认在 PMIC 工作范围内 |
| VCC 滤波电容 | 靠近 PMIC VCC 引脚放置,典型值 10uF + 0.1uF | |
| 核心电源 | SMPS1/2 电感 | 饱和电流需大于最大负载电流的 1.3 倍,DCR 小 |
| SMPS1/2 输出电容 | 满足处理器纹波要求,通常需低 ESR 陶瓷电容 | |
| DDR 电源 | SMPS4 BOOT 引脚 | 接 GND (1.35V for DDR3L) 或 1.8V (1.5V for DDR3) |
| DDR VTT 电源 | 使用专用稳压器(如 TPS51200),输入来自 SMPS4 | |
| 1.8V 电源 | SMPS3 负载电流 | 核算总电流:VIO_IN + 处理器 1.8V 域 + 其他外设 |
| VIO_IN | 电压选择 (1.8V/3.3V) | 与处理器及外部器件 I/O 电平匹配 |
| 供电时序 | 确保在 VCC 稳定后、GPIO4 使能前建立 | |
| 复位与使能 | POWERHOLD/PWRON | 根据系统需求选择正确电路,上拉电阻值合适 |
| RESET_OUT 连接 | 连接到处理器的 PORz 和 nRESWARM | |
| INT 连接 | 连接到处理器的中断输入引脚 | |
| I2C 总线 | 上拉电阻 | 接至 VIO_IN,阻值通常 4.7kΩ |
| 走线 | 尽可能短,远离高频噪声源 | |
| FSR (如启用) | GPIO4 负载开关 | 选择导通电阻 (Rds_on) 小的 MOSFET 或负载开关 |
| NSLEEP 控制 | 由外部常电 MCU 的 GPIO 控制,注意电平转换 |
6.2 软件初始化关键步骤示例(伪代码风格)
// 1. 初始化 I2C 控制器,设置正确的从机地址 (0x58) i2c_init(PMIC_I2C_BUS, PMIC_ADDR); // 2. 读取并验证设备 ID 和 OTP 版本 uint8_t dev_id = i2c_read_reg(REG_DEVICE_ID); uint8_t sw_rev = i2c_read_reg(REG_SW_REVISION); if (dev_id != EXPECTED_DEV_ID || sw_rev != 0x52) { log_error("PMIC ID/Revision mismatch!"); return ERROR; } // 3. 清除可能 pending 的中断状态 i2c_write_reg(REG_INT1, 0xFF); // 写1清中断 i2c_write_reg(REG_INT2, 0xFF); // ... 类似清除 INT3, INT4 // 4. 配置中断掩码(示例:使能 HOTDIE 和 VSYS_MON 中断) uint8_t int1_mask = i2c_read_reg(REG_INT1_MASK); int1_mask &= ~(BIT_HOTDIE); // 使能 HOTDIE 中断(0: 使能) int1_mask &= ~(BIT_VSYS_MON); // 使能 VSYS_MON 中断 i2c_write_reg(REG_INT1_MASK, int1_mask); // 5. (可选)动态调整电源电压,例如进行 DVFS // 注���:调整前确保 SMPS 处于 ACTIVE 或 OFF 状态 i2c_write_reg(REG_SMPS1_VOLTAGE, TARGET_VOLTAGE_CODE); // 6. (可选)启用默认关闭的 LDO,例如 LDO1 输出 1.2V i2c_write_reg(REG_LDO1_VOLTAGE, LDO1_1V2_CODE); i2c_write_reg(REG_LDO1_CTRL, CTRL_ENABLE); // 7. 配置 GPIO(示例:将 GPIO6 临时改为 POWERGOOD 用于监控) // 首先读取当前功能配置 uint8_t pad_ctrl = i2c_read_reg(REG_PRIMARY_SECONDARY_PAD2); // 将 GPIO6 位域设置为 POWERGOOD 功能码 pad_ctrl = (pad_ctrl & ~GPIO6_MASK) | POWERGOOD_FUNC_CODE; i2c_write_reg(REG_PRIMARY_SECONDARY_PAD2, pad_ctrl); // 8. 安装中断服务程序 install_isr(PMIC_IRQ, pmic_interrupt_handler);6.3 常见问题速查表
| 现象 | 可能原因 | 排查步骤 |
|---|---|---|
| PMIC 完全不工作,无任何输出 | 1. VCC 未供电或电压不足 2. PWRON/POWERHOLD 使能信号无效 3. VSYS_MON 阈值未满足 | 1. 测量 VCC 引脚电压 2. 测量使能引脚电平 3. 检查输入电源是否高于 3.1V(默认) |
| 部分电源轨无输出 | 1. 该路电源未使能 2. 外部电感/电容短路或损坏 3. OTP 配置该路为关闭 | 1. I2C 读取对应 SMPS/LDO 的 CTRL 寄存器 2. 测量电感两端阻抗,检查电容 3. 核对 OTP 表(表3,表4) |
| 系统上电后立即复位或反复重启 | 1. 电源时序不满足处理器要求 2. VSYS_LO 阈值设置过高,输入轻微波动即触发保护 3. 看门狗配置时间太短 | 1. 用示波器测量各路电源及复位时序 2. 监控 VCCA 电压,考虑调整 VSYS_LO 阈值(如果支持) 3. 检查并调整看门狗超时时间 |
| I2C 通信时好时坏 | 1. VIO_IN 电平与主控不匹配 2. I2C 上拉电阻过大或过小 3. 总线受到干扰 | 1. 测量 VIO_IN 电压和主控 I/O 电压 2. 检查上拉电阻值(通常 4.7k)和上拉电源 3. 用示波器观察 SCL/SDA 波形,检查是否有噪声 |
| 使能 FSR 后 DDR 数据损坏 | 1. GPIO4 关闭负载开关的时序过早 2. DDR 未进入自刷新模式就断电 3. 负载开关关断时有漏电流 | 1. 精确测量 NSLEEP 下降沿、GPIO4 下降沿、DDR 电源掉电的时序关系 2. 确认处理器软件已正确配置 DDR 进入自刷新 3. 测量负载开关关断时的隔离度 |
| 高温环境下系统不稳定 | 1. PMIC 或电感过热 2. 输入/输出电容在高频下 ESR 增大 3. 散热设计不足 | 1. 使用热像仪检查芯片和电感温度 2. 检查电容规格书的高温特性 3. 优化 PCB 散热,增加铜箔或散热孔 |
设计一个基于TPS65919-Q1/17-Q1的可靠电源系统,是一个从芯片选型、原理图设计、PCB布局到软件驱动和调试的全链路工程。它要求工程师不仅理解PMIC本身的功能,更要深刻理解处理器对电源的需求,以及系统级的工作场景。这份指南结合了文档中的硬性规定和实际项目中积累的软性经验,希望能帮助你避开那些我曾經踩过的坑,更高效地完成设计。记住,电源是基础,基础不牢,地动山摇。在投板前,花时间进行充分的仿真和审查;在调试时,善用示波器和PMIC的内部诊断功能。当你看到系统稳定启动,各电源轨波形干净利落时,那份成就感就是对严谨设计的最佳回报。
