深入解析TI汽车PMIC TPS6591x-Q1的OTP配置与电源时序设计
1. 项目概述与核心价值在汽车电子和工业控制这类对可靠性要求极高的领域一块电路板能否稳定启动、正常运行甚至优雅地“死去”和“重生”很大程度上取决于其电源管理单元PMIC的设计。这不仅仅是提供几个电压那么简单而是一套精密的“指挥系统”确保处理器、内存、外设等“演员”按照严格的剧本电源时序登场和退场。我经手过不少项目早期因为电源时序问题导致的系统无法启动、随机复位或者芯片损坏的案例不在少数后来才深刻理解PMIC的配置尤其是其内置的OTP一次性可编程设置是系统稳定性的基石。今天要深入拆解的是德州仪器TI面向汽车应用的两款明星PMICTPS65919-Q1和TPS65917-Q1。它们常被用来驱动TI的DRA71x、DRA79x和TDA2E-17系列处理器。你手头拿到的芯片其出厂行为——比如默认输出电压、上电顺序、复位响应方式——都已经被固化在OTP里了。理解这些OTP配置就像拿到了芯片的“出厂说明书”和“行为准则”是进行任何定制化电源管理、调试复杂启动问题乃至设计热复位Warm Reset等高级功能的前提。本文将聚焦于其静态平台设置和序列平台设置这两大核心OTP配置区结合实际的电源时序图为你还原一个可操作、可理解的PMIC配置全景图。2. 静态平台设置深度解析静态平台设置顾名思义定义了PMIC上电后的默认“静态”状态。这包括了所有电源轨的默认电压、GPIO的初始功能、中断的使能状态等。这些设置是PMIC从“无电”状态唤醒后执行任何动态序列如上电序列之前的起点。理解它们是理解后续所有动态行为的基础。2.1 系统电压监控与状态机PMIC内部有一个精密的状态机其运转完全依赖于几个关键的电压比较器。这就像给系统安装了“血压计”和“心跳监测仪”。POR上电复位阈值这是PMIC的生命线。当VCCA引脚模拟电源电压低于此阈值时PMIC处于“NO SUPPLY”状态完全“沉睡”。只有当VCCA电压超过POR阈值PMIC才会进入“BACKUP”状态此时RTC等最低功耗电路开始工作。这个阈值通常由芯片工艺决定不可编程但我们必须确保电源设计能快速、干净地越过它。VSYS_LO系统电压低阈值这是一个可编程的OTP选项默认为2.75V。当VCCA电压从BACKUP状态继续上升超过VSYS_LO后PMIC才正式进入“OFF”状态此时核心逻辑电路上电可以准备响应ON请求如按下PWRON键。反之若系统运行时VCCA跌落到VSYS_LO以下PMIC会强制退回到BACKUP状态这是一种硬件保护机制。这里有个关键点VSYS_LO的设定必须高于你系统中所有电源轨特别是LDO能够稳定输出的最低输入电压否则可能在输入电压跌落时输出已经紊乱但PMIC还未进入保护状态。VSYS_MON系统电压监控与VSYS_HI这个比较器监控VCC_SENSE引脚通常连接主电源轨。在启动阶段OTP中设定的VSYS_HI值默认为3.1V会作为比较器阈值只有当VCC_SENSE电压超过此值PMIC才允许从OFF状态启动进入ACTIVE状态。启动完成后软件可以通过寄存器重新配置VSYS_MON的阈值用于运行时监控。注意根据OTP中PMU_CONFIG[HIGH_VCC_SENSE]位的设置VCC_SENSE引脚能承受的电压范围不同。在提供的配置中此位为0意味着VCC_SENSE和VCCA通常短接适用于较低电压的输入场景。实操心得在设计电源树时务必确认前端电源如DCDC预稳压器的输出电压爬升速度和纹波。确保在PMIC的VCCA引脚上电压能快速、平滑地超过POR和VSYS_LO避免在阈值附近震荡导致PMIC状态机反复跳变引发不可预知的行为。2.2 电源轨默认电压配置OTP中定义了每个SMPS和LDO的默认输出电压。这是芯片出厂时自带的“个性”对于TPS6591x-Q1系列不同型号通过SW_REVISION寄存器0x4C, 0x4D, 0x4E, 0x4F区分对应不同的默认电压主要是为了适配DDR3L1.35V和DDR31.5V内存以及不同的处理器电流需求。表关键电源轨默认电压对比 (基于输入文档)电源轨0x4C (O919A14C) DDR3L, VDD3A0x4E (O919A14E) DDR3, VDD3A0x4D (O917A14D) DDR3L, VDD3A0x4F (O917A14F) DDR3, VDD3A说明SMPS11.15V (AVS)1.15V (AVS)1.15V (AVS)1.15V (AVS)通常用于处理器核心电压(CVDD)支持AVS动态调压。SMPS21.35V1.5V1.35V1.5V关键区别用于DDR内存电压(VDD)。1.35V对应DDR3L1.5V对应DDR3。SMPS31.06V (AVS)1.06V (AVS)1.06V (AVS)1.06V (AVS)通常用于处理器另一核心域或IO电压。SMPS41.8V1.8V1.8V1.8V为PMIC自身VIO域及部分外设提供1.8V。SMPS5N/AN/A1.35V1.5V仅TPS65917-Q1具备用于分担PHY等域供电。LDO11.8V / Bypass1.8V / Bypass1.8V / Bypass1.8V / Bypass电压由BOOT引脚状态决定。BOOT0时输出1.8VBOOT1时处于旁路模式输出等于输入。LDO21.8V1.8V1.8V1.8V用于PHY等模拟域供电。LDO43.3V3.3V3.3V3.3V通常用于USB等3.3V外设。关键点解析AVS自适应电压调节SMPS1和SMPS3标注了AVS意味着这些轨道的电压可以通过I2C接口由处理器根据运行频率和温度动态调节以实现能效优化。OTP设置的是其初始默认值。BOOT引脚与LDO1这是一个灵活的配置。当BOOT0LDO1输出1.8V当BOOT1LDO1处于旁路模式其输出直接等于输入电压LDO12_IN。这里有一个重要的硬件设计约束当LDO1处于旁路模式时输入电压LDO12_IN绝对不能超过3.6V否则可能损坏芯片。同时LDO1和LDO2共享LDO12_IN输入因此必须由同一个电源供电。SMPS12双相配置在TPS65917-Q1的配置0x4D, 0x4F中SMPS1_SMPS12_EN位被设置为1这意味着SMPS1和SMPS2被配置为双相Dual-Phase模式。这相当于两个电源并联交错工作能有效降低输出纹波电流提高电流输出能力总电流可达7A非常适合为高性能处理器核心供电。2.3 GPIO、中断与杂项配置这部分配置定义了PMIC与外部世界主要是主处理器的交互方式。GPIO功能复用每个GPIO引脚在OTP中都被预定义为特定功能。例如GPIO_5被配置为POWERHOLDGPIO_4为REGEN2GPIO_1为NRESWARM热复位GPIO_0为REGEN1。特别要注意GPIO_0它是一个开漏Open-Drain输出因此必须外部上拉。TI明确建议不要将其上拉到VCCA或LDOVRTC_OUT这类常电Always-On电源因为在OTP加载完成前GPIO_0默认为输入模式常电上拉会导致一个毛刺。正确的做法是上拉到一个受控的电源轨如SMPS31.8V或LDO43.3V的输出。中断默认使能OTP中预设了哪些事件会触发中断INT引脚拉低。例如HOTDIE过热预警、SHORT短路、WDT看门狗超时等关键事件默认是使能中断的而VBUS检测、GPADC_EOC_SWGPADC软件转换完成等则默认被禁用。这为系统提供了关键故障的即时通知机制。复位类型配置SWOFF_HWRST这是理解PMIC复位行为的关键。PMIC内部寄存器分为三个域POR上电复位、HWRST硬件复位、SWORST开关复位。当发生OFF请求如看门狗超时、RESET_IN引脚触发时OTP配置决定了这是触发一次HWRST还是SWORST。HWRST复位HWRST和SWORST域的所有寄存器但POR域寄存器保持不变。这相当于一次“深度”复位许多配置会被重置为OTP值或默认值。SWORST仅复位SWORST域的寄存器HWRST域寄存器保持不变。这相当于一次“轻度”复位保留更多上下文。 例如在默认配置中看门狗超时WTD和RESET_IN引脚触发被配置为产生HWRST而PWRDOWN引脚事件则产生SWORST。这意味着通过按键关机PWRDOWN和通过处理器复位引脚关机RESET_INPMIC内部的清理程度是不同的。关机与冷复位配置Shutdown_ColdReset这个配置决定了OFF请求的最终结果。是让系统彻底关机Shutdown还是关机后立即自动重启Cold ResetShutdownPMIC执行关机序列ACT2OFF或SLP2OFF后进入OFF状态并保持。Cold ResetPMIC执行关机序列后如果没有任何ON请求的阻塞条件如电压不足会立即自动执行上电序列OFF2ACT重新回到ACTIVE状态。 默认配置中看门狗超时和软件复位SW_RST寄存器位被设置为触发冷复位这非常合理系统遇到软件死锁看门狗复位后我们希望它能自动重启恢复。而按键关机PWRDOWN和热关断TSHUT则设置为彻底关机这是安全且符合直觉的。3. 电源序列平台设置精讲如果说静态设置是PMIC的“初始属性”那么电源序列就是它的“连招技能”。PMIC通过内置的嵌入式电源控制器EPC自动执行一系列预编程的寄存器操作来控制各个电源轨和使能信号的开启/关闭顺序与延时。这是保证处理器及其周边电路安全上电、下电的核心。3.1 OFF2ACT序列系统上电的精确舞蹈当PMIC处于OFF状态收到一个ON请求如PWRON引脚拉高或POWERHOLD有效时就会触发OFF2ACT序列。文档中给出了四个具体型号的时序图我们以O919A14CTRGZRQ1 (SW_REV 0x4C)的时序图为例进行拆解。序列步骤解析触发与第一步ON请求到来。立即或经过一个极短的内部门延迟后SMPS4和LDO5被使能。SMPS4输出1.8V为VIO域供电LDO5也输出1.8V。为什么是它们俩最先启动因为它们是PMIC自身逻辑和部分基础外设如I2C上拉所需要的是后续动作的“基石”。550µs延时这是一个固定的时间间隔。确保SMPS4和LDO5完全建立稳定。第二步SMPS2和REGEN2(GPIO_4) 被使能。SMPS2输出DDR内存电压1.35V或1.5V。REGEN2通常用来使能外部器件比如DDR VTT稳压器如TPS51200。这里的设计哲学是先给内存供电并打开其终端稳压器。又一个550µs延时等待内存电源稳定。第三步SMPS1和SMPS3被使能。它们输出处理器的核心电压如1.15V AVS, 1.06V AVS。此时处理器的主电源开始建立。再一个550µs延时等待核心电压稳定。第四步LDO2和RESET_OUT被使能。LDO2输出1.8V给处理器的PHY等模拟模块。最关键的是RESET_OUT这个信号在之前一直为低或高阻此刻被释放变为高电平意味着PMIC通知处理器“你的所有主要电源都已就绪现在可以开始启动你的Bootloader了”。这是处理器复位解除的时刻。550µs延时给予复位释放后的一个稳定期。第五步VIO和LDO4被使能。VIO是PMIC的IO电源域由SMPS4供电此处可能指相关逻辑稳定。LDO4输出3.3V为USB等外设供电。550µs延时。第六步REGEN1(GPIO_0) 被使能。这个信号通常用来控制给处理器的某些IO域或外围电路的电源开关。注意GPIO_0是开漏输出需要外部上拉。最终步LDO1被使能。根据BOOT引脚状态输出1.8V或处于旁路模式。整个OFF2ACT序列完成系统进入ACTIVE状态。整个序列的精髓在于“先内核后IO先供电后释放复位”。确保处理器在收到复位释放信号时其核心和内存电源已经是稳定、可靠的。550µs的步进延时是OTP固化的为电源轨的软启动和稳定留出了充足时间。3.2 ACT2OFF序列系统关机的优雅谢幕当系统在ACTIVE状态收到OFF请求如长按PWRON键、PWRDOWN引脚有效时执行ACT2OFF序列。其顺序大体上是OFF2ACT的逆过程但并非完全对称。以O919A14CTRGZRQ1的关机序列为例触发OFF请求到来。第一步立即撤销RESET_OUT拉低。这相当于告诉处理器“准备断电了”处理器应进入安全关机流程。第二步关闭REGEN1(GPIO_0)。切断给部分外围电路的电源。第三步关闭SMPS3和SMPS1。先关闭处理器核心电源。此时处理器应已完全停止工作。第四步关闭LDO2和SMPS2。关闭内存相关电源。第五步关闭SMPS4和LDO5。最后关闭PMIC自身的逻辑和基础电源。关机序列的核心思想是“先通知再断核心先停运再断能源”。通过先拉低RESET_OUT给处理器一个预警窗口使其有机会保存关键状态或完成最后的操作。然后按照与上电大致相反的顺序断电避免因为电源轨关闭顺序不当导致电流倒灌。3.3 Warm Reset序列系统重启的快速通道热复位Warm Reset是系统调试和恢复中极其有用的功能。它由NRESWARM(GPIO_1) 引脚拉低触发。与冷复位Cold Reset即先关机再上电不同热复位的目标是让系统快速恢复到已知的初始状态而不必完全关闭所有电源。热复位的核心行为触发NRESWARM引脚被拉低。序列执行PMIC会重新执行一次OFF2ACT序列。无论当前处于ACTIVE还是SLEEP状态。电源轨行为对于包含在OFF2ACT序列中的电源轨即那些需要参与上电的轨它们会根据对应控制寄存器SMPSx_CTRL或LDOx_CTRL中的WR_S位决定行为如果WR_S 1该电源轨的电压值会从OTP中重新加载。如果WR_S 0该电源轨保持之前的电压值。对于不包含在OFF2ACT序列中的电源轨比如由软件后期单独开启的某个LDO热复位对其没有影响它保持原有状态。RESET_OUT行为这取决于BOOT引脚的配置。如果BOOT1在热复位序列期间RESET_OUT会被断言为低电平即产生一个复位脉冲。如果BOOT0RESET_OUT不会被拉低。重要关联如果使用BOOT1则PMIC必须通过POWERHOLD(GPIO_5)引脚来使能。如果PMIC是通过PWRON引脚使能并依靠DEV_ON寄存器位保持开启则必须使用BOOT0。如果在BOOT1时POWERHOLD被拉低PMIC会在热复位序列中关机。时序图解读文档中的热复位时序图用实黑线表示热复位发生时已经开启的电源轨保持开启用红色虚线表示热复位前已关闭的电源轨将按序列重新开启。例如在O919A14CTRGZRQ1的热复位图中SMPS4和LDO5是持续开启的而SMPS2等则可能有一个重新开启的延时过程。RESET_OUT在BOOT1时会有一个低脉冲。避坑指南热复位功能非常强大但配置不当极易导致问题。最常见的坑是BOOT、POWERHOLD和PWRON的配置组合错误。务必根据你的硬件使能电路严格按照数据手册和用户指南的建议来选择BOOT的值。如果系统需要热复位功能通常建议采用POWERHOLD使能方案并设置BOOT1以确保复位期间PMIC不掉电且能给处理器发出复位信号。4. 硬件连接设计与选型指南理解了OTP配置和时序最终要落实到硬件设计上。用户指南中给出了针对不同处理器和内存配置的推荐连接图这里提炼出关键设计要点。4.1 器件选型TPS65919-Q1 vs. TPS65917-Q1选择哪款PMIC主要取决于两个因素DDR内存类型DDR3L1.35V还是DDR31.5V这决定了SMPS2和SMPS5如果存在的默认输出电压。处理器VDD总电流需求这是所有核心电压轨MPU, GPU, CORE的电流总和。TPS65919-Q1适用于VDD总电流 3A的场景。它包含4个SMPS和4个LDO。TPS65917-Q1适用于VDD总电流 3A或PHY总电流 300mA的场景。它包含5个SMPS和5个LDO其中SMPS1和SMPS2可配置为双相模式SMPS12提供更大电流并且多出一个LDO3来分担PHY供电压力。具体型号对应表O919A14CTRGZRQ1(SW_REV 0x4C): DDR3L, VDD 3AO919A14ETRGZRQ1(SW_REV 0x4E): DDR3, VDD 3AO917A14DTRGZRQ1(SW_REV 0x4D): DDR3L, VDD 3AO917A14FTRGZRQ1(SW_REV 0x4F): DDR3, VDD 3A4.2 关键外围电路设计VIO_IN电源选择VIO_IN为PMIC的VIO域包括GPIO_2, GPIO_4, RESET_OUT, INT, I2C引脚提供电平基准。它可以选择由SMPS4输出1.8V供电或者由外部负载开关如TPS22965提供的3.3V供电。选择依据是你的处理器或与这些引脚连接的其他器件的IO电压是1.8V还是3.3V必须匹配。复位与使能电路这是系统控制逻辑的关键。POWERHOLD方案将GPIO_5配置为POWERHOLD功能。处理器的一个GPIO控制此引脚。给高电平PMIC启动拉低PMIC关机。PWRON引脚可悬空。此方案适合由处理器软件完全控制电源开关。PWRON方案使用物理按键连接PWRON引脚到地。按下按键PMIC启动。此时PMIC需要通过软件设置DEV_ON寄存器位来保持上电状态。此方案适合有独立开关机的产品。混合方案支持热复位如果需要热复位功能文档推荐了一种巧妙的设计将GPIO_5 (POWERHOLD) 与 GPIO_2 连接并通过一个上拉电阻拉到VIO。这样上电后软件可以配置GPIO_2为输出高电平从而锁存POWERHOLD。当需要关机时软件将GPIO_2拉低即可。这保证了热复位期间POWERHOLD始终保持有效。PHY电源分配仅TPS65917-Q1当PHY总电流超过300mA时需要使用LDO2和LDO3共同供电。文档给出了推荐的分组LDO2负责VDDA_USB1, VDDA_USB2, VDDA_CSILDO3负责VDDA_USB3, VDDA_HDMI, VDDA_PCIE。这有助于平衡负载和散热。5. 实战配置、调试与问题排查理论最终要服务于实践。拿到一块基于TPS6591x-Q1的板子如何验证配置、如何调试电源时序问题5.1 OTP配置的读取与验证PMIC上电后其OTP内容会加载到相应的寄存器中。最直接的验证方式是通过I2C接口读取这些寄存器与文档中的OTP表进行比对。连接I2C调试器将PMIC的I2C接口通常为I2C1连接到你的调试主机如通过USB转I2C适配器。确认I2C地址根据OTP中ID_I2C1的配置默认为0x58, 0x59, 0x5A, 0x5B之一尝试扫描I2C总线。读取关键寄存器SW_REVISION寄存器确认芯片的OTP版本0x4C, 0x4D, 0x4E, 0x4F这决定了你该参考哪一组默认值。SMPSx_VOLTAGE寄存器读取SMPS1/2/3/4/5的电压设置寄存器看是否与OTP表一致。LDOx_VOLTAGE寄存器读取LDO1/2/3/4/5的电压设置。GPIO_x_CTRL等寄存器确认GPIO功能配置。INTx_MASK寄存器确认中断默认使能状态。实操技巧可以使用i2c-toolsLinux或任意支持I2C的脚本/软件进行读取。例如使用i2cdetect扫描然后用i2cget读取特定寄存器。务必参考芯片数据手册中的寄存器映射表。5.2 电源时序的测量与调试当时序出现问题时如上电失败、复位异常示波器是多通道电源时序分析不可或缺的工具。探头准备至少需要4-6个通道的示波器。准备多个探头并务必注意接地环路尽量使用短接地弹簧而非长接地夹以减少噪声。触发设置将触发源设置为ON请求信号如PWRON或POWERHOLD引脚的上跳沿。测量点ON请求信号通道1。关键电源轨SMPS4 (1.8V), SMPS2 (DDR电压), SMPS1 (核心电压)通道2,3,4。关键使能信号RESET_OUT, REGEN1, REGEN2通道5,6,...。分析要点顺序检查各电源轨和使能信号的上升沿顺序是否与文档中的OFF2ACT序列图一致延时测量相邻两个电源轨开启之间的时间间隔是否接近550µs偏差是否在合理范围内考虑电源软启动时间稳定性观察每个电源轨上升过程中是否有过冲、下冲或振荡稳定后的纹波是否在数据手册规定的范围内RESET_OUT这是最重要的信号之一。确认它是在所有核心电源SMPS1, SMPS2, SMPS3稳定之后才释放变高的。如果它提前变高处理器可能在电源不稳时启动导致不可预知的行为。5.3 常见问题排查速查表现象可能原因排查步骤PMIC完全无输出1. VCCA电压未超过POR阈值。2. ON请求PWRON/POWERHOLD无效。3. VSYS_MONVCC_SENSE电压未超过VSYS_HI阈值。1. 测量VCCA引脚电压。2. 检查PWRON/POWERHOLD引脚电平确认上拉/下拉电阻配置正确。3. 测量VCC_SENSE引脚电压确认其与VCCA连接或分压正确。部分电源轨无输出1. 该电源轨在OTP中被禁用。2. 外部负载短路。3. 电源轨的使能条件不满足如SMPS12双相配置错误。1. 通过I2C读取对应SMPS/LDO的控制寄存器确认ENABLE位状态。2. 断开该路电源的负载测量PMIC引脚输出是否恢复。3. 检查SMPS1和SMPS2的配置确认是否按双相模式正确连接。上电过程中复位1. 某电源轨在上电过程中跌落触发VSYS_LO或其它保护。2. 看门狗在启动早期意外超时。1. 用示波器同时捕获所有主要电源轨和VCCA观察是否有轨在启动时被拉低。2. 检查看门狗配置在初始化早期先禁用或延长其超时时间。热复位导致系统关机1.BOOT1但未使用POWERHOLD使能或POWERHOLD在热复位期间被拉低。2. 热复位序列中某个本应保持开启的电源轨被错误关闭。1.重点检查确认BOOT引脚硬件连接确认POWERHOLD引脚在热复位期间始终保持高电平。2. 检查电源轨控制寄存器的WR_S位对于希望热复位时保持电压的轨应设为0。I2C通信失败1. VIO_IN电压与主控IO电平不匹配。2. I2C上拉电阻缺失或阻值不当。3. I2C地址错误。1. 测量VIO_IN电压和主控I2C引脚电压确保一致同为1.8V或3.3V。2. 检查SCL和SDA线上的上拉电阻通常4.7kΩ-10kΩ。3. 使用i2cdetect扫描确认PMIC的I2C从地址。GPIO_0REGEN1控制异常GPIO_0外部未接上拉电阻或上拉到了错误的电源。确认GPIO_0外部有上拉电阻如10kΩ并且上拉到了一个在序列中较早开启的电源如SMPS3的1.8V或LDO4的3.3V绝不能上拉到VCCA或LDOVRTC_OUT。5.4 软件配置注意事项虽然OTP定义了默认行为但大部分配置在运行时可以通过I2C修改。这提供了灵活性但也引入了风险。修改电压可以通过SMPSx_VOLTAGE和LDOx_VOLTAGE寄存器动态调整输出电压。但请注意不能在线电源轨开启时将SMPS的输出电压从一个范围如0.7-1.65V切换到另一个范围1-3.3V反之亦然。必须先关闭该调节器。控制电源轨使用SMPSx_CTRL和LDOx_CTRL寄存器可以单独使能/禁用每个电源轨或将其切换到节能模式。中断处理上电后应尽快根据系统需求通过INTx_MASK寄存器配置中断使能。例如你可能需要使能热插拔检测VBUS中断或禁用某些不用的中断源以减少误触发。看门狗配置如果系统使用了PMIC的看门狗务必理解其超时行为触发冷复位还是关机。在系统启动初期软件可能无法及时“喂狗”需要考虑先禁用或设置一个很长的超时时间待系统稳定后再配置为正常运行值。在我调试过的一个车载娱乐系统项目中就曾遇到热复位后系统偶尔宕机的问题。最终排查发现是硬件设计将BOOT引脚通过电阻下拉到了地BOOT0但软件却试图在热复位后通过RESET_OUT的下降沿来复位处理器。由于BOOT0时热复位不会拉低RESET_OUT导致处理器没有收到复位信号状态混乱。解决方案是修改硬件将BOOT改为上拉BOOT1并确保POWERHOLD电路在热复位期间持续有效。这个坑让我深刻体会到PMIC的OTP配置、硬件连接和软件期望三者必须严丝合缝任何一点不匹配都可能导致难以排查的隐性故障。