数字电源保护功能深度解析:UV/OC/OT保护配置与工程实践

📅 2026/7/27 18:41:19 👁️ 阅读次数 📝 编程学习
数字电源保护功能深度解析:UV/OC/OT保护配置与工程实践

1. 项目概述:数字电源保护功能的深度实践

在服务器主板、通信基站或者高性能计算卡这类对可靠性要求极高的设备里,电源系统不仅仅是“供电”那么简单,它更像是一个全天候的“安全卫士”。我这些年调试过不少数字电源方案,一个深刻的体会是:硬件设计决定了性能的下限,而保护功能的配置则直接决定了系统可靠性的上限。很多初期看起来稳定的板子,在长期运行或极限负载下暴露出的问题,往往都和保护参数设置不当有关。

今天要聊的,就是数字电源保护功能里最核心的三个部分:欠压(UV)、过流(OC)和过温(OT)。这听起来像是数据手册里的标准章节,但真正要把它们用“活”,里面门道不少。以德州仪器(TI)的TPS536C7B1/TPS53676这类主流的多相控制器为例,它们通过PMBus接口提供了极其灵活的保护配置能力。但灵活也意味着复杂,寄存器位、响应策略、阈值计算方式,每一个细节都关系到最终系统在异常情况下的“应激反应”是否合理。是直接关机(Latch-off),还是尝试重启(Hiccup),或是仅仅报警(Ignore)?阈值设多少毫伏、多少安培、多少摄氏度?这些都不是拍脑袋能决定的。

这篇文章,我就结合手册和实际调试经验,把这套保护机制的里里外外拆解清楚。我会重点讲清楚三个问题:第一,这些保护阈值(比如欠压警告、过流故障)到底是怎么计算和设置的,硬件底层是如何实现的;第二,当故障触发时,控制器内部发生了什么,状态寄存器如何变化,响应动作如何执行;第三,也是最关键的,在实际工程中,我们应该如何根据具体的应用场景(比如CPU核心供电、内存供电、ASIC供电)来选择和配置这些参数,有哪些容易踩的“坑”。无论你是正在评估TPS536xx系列,还是在使用其他带有PMBus的电源芯片,这里面的思路都是相通的。

2. 保护功能的核心逻辑与硬件映射

在深入每个寄存器之前,我们必须先建立起对TPS536xx保护功能整体架构的认知。很多人一上来就对着地址写数据,却忽略了硬件是如何实现这些监控的,这很容易导致配置失效或行为不符合预期。

2.1 保护功能的监控层级与实现方式

TPS536xx的保护功能并非全部由软件或数字逻辑实现,其监控发生在两个不同的“域”:模拟域和数字域。理解这一点至关重要。

模拟域保护:这类保护的检测和判断直接在模拟比较器电路中完成,响应速度极快(通常在微秒级),不依赖于数字核心的采样和计算周期。最典型的例子就是输出欠压/过压故障(UV/OV Fault)的检测。手册里明确提到,VOUT_UV_FAULT_LIMIT等命令的阈值计算虽然基于VOUT_COMMAND,但实际的故障检测发生在模拟域,并且会包含所有偏移和负载线(Droop)补偿。这意味着,即使你通过VOUT_DROOP设置了负载线,或者通过VOUT_TRIM微调了电压,模拟比较器看到的始终是功率级反馈引脚(VSP)上的真实电压。这保证了保护的实时性和绝对性,即使数字控制环路出现异常,硬件保护依然能动作。

数字域/遥测系统保护:这类保护依赖于控制器内部的ADC对电压、电流、温度进行周期性采样,转换为数字值后,再与软件设定的阈值进行比较。其响应速度相对较慢(取决于采样率和处理延迟),但灵活性和精度更高。**过流警告(IOUT_OC_WARN)过温保护(OT_FAULT/WARN)**通常属于这一类。例如,IOUT_OC_WARN_LIMITOT_FAULT_LIMIT命令就是通过内部遥测系统实现的,因此支持很高的编程分辨率(使用SLINEAR11格式),但非易失性存储器(NVM)备份的选项有限。

2.2 “跟踪阈值”与“绝对阈值”的深刻理解

这是TPS536xx在电压保护设计上一个非常巧妙且容易混淆的地方。手册中反复强调,VOUT_UV_WARN_LIMITVOUT_UV_FAULT_LIMIT设置的是一个相对于当前VOUT_COMMAND的固定偏移量,而非一个绝对的电压值。

为什么这么设计?想象一下,你的CPU核心电压可能在轻载时是0.8V,重载时因为负载线掉到0.75V。如果你设置一个绝对的欠压故障阈值0.7V,那么在重载时,正常的负载线调整可能会被误判为故障。而采用跟踪阈值,你设置的始终是一个偏移,比如-100mV。那么无论VOUT_COMMAND是1.0V还是0.8V,故障点都会自动跟踪为0.9V或0.7V。这完美适配了现代动态电压调节的需求。

硬件映射机制:硬件上,这个偏移量是通过一组精密的电阻分压网络和比较器实现的。当你写入一个目标电压值(例如0.936V)时,硬件并不是去记忆0.936V这个绝对值,而是根据当前的VOUT_COMMAND(例如1.0V),反向计算出偏移量是-64mV,并将这个-64mV的偏移配置到硬件比较器。此后,即使你通过PMBus将VOUT_COMMAND改为1.1V,硬件比较器的偏移依然是-64mV,因此新的故障阈值就是1.036V。你读回VOUT_UV_WARN_LIMIT寄存器时,得到的也是根据新VOUT_COMMAND计算出的绝对值1.036V。这个过程对用户是透明的,但理解它对于调试至关重要——你写入的是“目标表现值”,硬件存储的是“偏移量”。

注意:手册中特别指出,所有阈值计算都假设VOUT_SCALE_LOOP = 1.0且负载线和微调为零。如果VOUT_SCALE_LOOP(输出电压缩放因子)被设置为0.5,那么你写入的-64mV偏移,在控制器VSP引脚上感知到的实际偏移将是-128mV。这是因为缩放因子改变了内部电压基准的标度。在配置多相、多路输出或使用外部分压时,必须将这个因素考虑进去。

2.3 PMBus状态机与故障响应流程

一个完整的保护动作不仅仅是关闭输出。PMBus规范定义了一套完整的状态报告机制,TPS536xx严格遵循。

当一次故障(如欠压故障)被检测到时,控制器会同步进行以下几件事:

  1. 置位状态寄存器:这是最快被查询到的标志。
    • STATUS_BYTE中置位VOUT位(对于欠压/过压)或IOUTTEMP位。
    • STATUS_WORD中置位更具体的VOUT位。
    • 在对应的状态寄存器(如STATUS_VOUT)中置位具体的故障位,如VOUT_UVF
  2. 触发SMB_ALERT#信号:这是一个硬件中断信号,拉低以通知主机(如BMC或MCU)有异常事件发生。主机可以通过PMBus广播命令或逐个查询来确定故障源。
  3. 执行预设的硬件响应:根据VOUT_UV_FAULT_RESPONSE等响应寄存器的配置,控制器会立即采取行动,如“立即关闭”、“延迟关闭”或“忽略”。这个动作是硬件自动执行的,不依赖于主机响应。

这种分层级的响应确保了:既能有硬件级的快速保护(防止损坏),又能有软件级的灵活处理和日志记录(便于诊断)。

3. 欠压(UV)保护:从警告到故障的精细化管理

欠压保护通常被设置为多级,从早期的预警到最终的故障关断,为系统恢复或安全关机争取时间。TPS536xx将其分为**欠压警告(UV Warn)欠压故障(UV Fault)**两级。

3.1 阈值配置详解与计算实例

VOUT_UV_WARN_LIMIT(地址43h)和VOUT_UV_FAULT_LIMIT(地址44h)的配置格式都是ULINEAR16,代表一个绝对的电压值。但如前所述,硬件存储的是相对于VOUT_COMMAND的偏移。

有效值映射表解读:手册中的Table 1-50和Table 1-52是配置的关键。它们不是连续的线性值,而是离散的、固定步进的偏移量选项

  • UV Warn:偏移量从VOUT_COMMAND - 8mVVOUT_COMMAND - 448mV,以8mV为步进,共56个可选值。写入值如果介于两个有效偏移之间,会被视为无效/不支持。
  • UV Fault:偏移量从VOUT_COMMAND - 32mVVOUT_COMMAND - 448mV,以32mV为步进,共14个可选值。

配置计算示例: 假设你的CPU核心电源设计规格要求:正常电压VOUT_COMMAND = 1.0V,电压低于0.92V持续一段时间需紧急关机,低于0.95V时发出预警。

  1. 计算UV Fault偏移:1.0V - 0.92V = 80mV。查找Table 1-52,80mV不是一个有效选项(有效步进是32mV)。你需要选择最接近的更保守(即阈值更高,更容易触发)的值。比80mV大且最接近的32mV步进值是96mV。因此,你应选择VOUT_COMMAND - 96mV这个偏移。写入寄存器的值应为1.0V - 0.096V = 0.904V。注意,实际故障点将是0.904V,比0.92V更严格,这是出于安全的设计裕量。
  2. 计算UV Warn偏移:1.0V - 0.95V = 50mV。查找Table 1-50,50mV不是8mV的整数倍。你可以选择VOUT_COMMAND - 48mV(预警点0.952V)或VOUT_COMMAND - 56mV(预警点0.944V)。通常我会选择更敏感的-56mV(0.944V),让预警更早。写入值即为0.944V。

实操命令示例(假设PMBus工具)

# 设置PAGE(通道),例如通道0 pmbus_write 0x00 0x00 # 写入VOUT_COMMAND为1.0V (ULINEAR16格式,需转换) pmbus_write 0x21 0xXXXX # 1.0V对应的16进制值 # 写入UV Warn Limit为0.944V pmbus_write 0x43 0xXXXX # 0.944V对应的16进制值 # 写入UV Fault Limit为0.904V pmbus_write 0x44 0xXXXX # 0.904V对应的16进制值

3.2 故障响应策略的选择与权衡

VOUT_UV_FAULT_RESPONSE(地址45h)是一个8位寄存器,其低3位和高2位分别控制响应方式和延迟。

响应方式(VO_UV_RESP, Bits 7:6)

  • 00b:忽略(Ignore)。仅记录状态,不中断供电。慎用!仅适用于有外部冗余保护或仅用于监控的场景。
  • 01b:延迟后关闭(Shutdown after Delay)。触发后,经过Bits 2:0设置的延迟时间后再关闭输出。这个延迟非常短(4-16μs),主要用于滤除极短时间的电压毛刺,避免误触发。
  • 10b:立即关闭(Shutdown Immediately)。无延迟,立即关断。用于应对严重的、可能立即导致损坏的欠压情况。

延迟时间(VO_UV_DLY, Bits 2:0)

  • 000b: 4 μs
  • 001b: 8 μs
  • 010b: 12 μs
  • 011b: 16 μs 这个延迟仅对“延迟后关闭”模式有效。对于CPU供电,如果后端有大量去耦电容,短暂的负载瞬变可能导致电压瞬间跌落。设置一个几微秒的延迟,可以避免这种正常的瞬态响应被误判为故障。

闩锁与打嗝模式(VO_UV_HICCUP, Bits 5:3)

  • 000b:闩锁关闭(Latch-off)。一旦关闭,需主机通过OPERATION命令或重新上电来清除故障并重启。这是最常用的安全模式。
  • 111b:打嗝模式(Hiccup)。关闭后,等待一个固定的打嗝周期(由MFR_PROTECTION_CONFIG配置),然后自动尝试重启。如果故障依然存在,则再次关闭并循环。适用于应对瞬时过载,可能自我恢复的场景。

配置建议: 对于核心电压,我通常配置为01b(延迟关闭)+000b(闩锁)。延迟设为8或12μs以过滤噪声,响应方式为闩锁确保安全。打嗝模式在输出短路测试或某些热插拔场景可能有用,但对于CPU/GPU供电,反复重启可能对负载造成更大压力,一般不用。

4. 过流(OC)保护:相级与总级的双重防线

过流保护是防止MOSFET和电感过热损坏的关键。TPS536xx的过流保护设计得非常精细,分为**相级循环过流限制(Per-Phase Cycle-by-Cycle OCL)通道总过流保护(Per-Page OCP)**两层。

4.1 相级循环过流限制(OCL):硬件实现的快速保护

这是第一道,也是最快速的防线。每个功率相都有一个独立的模拟比较器,实时监测该相的电流。如果任一相的电流瞬间超过IOUT_OC_FAULT_LIMIT(当PHASE参数不为FFh时设置的值),该相的PWM驱动会立即在当前开关周期内被关闭,直到下一个周期再重新开启。这是一种“逐周期限流”机制。

关键特性

  • 纯硬件实现:响应速度在纳秒级,能有效保护MOSFET免受瞬时尖峰电流冲击。
  • 不影响总体输出:只关闭超标的那一相,其他相继续工作。系统总输出电流可能会略有波动,但不会关机。
  • 不产生PMBus故障:它只是一个内部的限流动作,不会置位任何状态寄存器或触发SMB_ALERT#。你无法直接通过PMBus知道它是否触发,只能通过观察波形或相电流不平衡来间接判断。
  • 阈值离散:如手册Table 1-55所示,相级OCL的阈值是离散值,从17A到130A,步进不等。这是因为硬件比较器的基准电压由内部电阻网络产生,选项有限。

配置方法: 要配置相级OCL,需要在写入IOUT_OC_FAULT_LIMIT(地址46h)命令时,设置PHASE参数。通常设为00h即可。

# 设置PAGE为0 pmbus_write 0x00 0x00 # 设置PHASE为0(代表配置相级OCL) pmbus_write 0x11 0x00 # 写入相级OCL阈值,例如选择50A(对应十六进制值0x0032) pmbus_write 0x46 0x0032

阈值选择经验:这个值应大于单相在最大负载下的峰值电流,并留有一定裕量(通常20%-30%),但要小于MOSFET和电感的饱和电流。需要根据电感纹波电流和MOSFET的SOA曲线来综合确定。

4.2 通道总过流保护(OCP):遥测系统的软件保护

这是第二道防线。控制器通过内部遥测系统,持续计算并累加所有相的总输出电流。当总电流超过IOUT_OC_FAULT_LIMIT(当PHASE参数为FFh时设置的值)时,触发通道级过流故障。

关键特性

  • 基于遥测:由数字系统处理,速度比OCL慢,但精度和灵活性高。
  • 阈值连续:支持0A到1023A范围内,以1A为步进的连续设置(实际分辨率更高)。这是因为阈值是通过数字比较实现的。
  • 触发完整故障响应:会置位STATUS_BYTE中的IOUT_OC位、STATUS_WORD中的IOUT位以及STATUS_IOUT中的IOUT_OCF位,并触发SMB_ALERT#。响应动作由IOUT_OC_FAULT_RESPONSE(地址47h)决定。
  • NVM存储特性:虽然运行时可以高精度设置,但存储在NVM中的值会被舍入到最接近的1A。上电复位后,恢复的是这个舍入后的值。

配置方法

# 设置PAGE为0 pmbus_write 0x00 0x00 # 设置PHASE为FFh(代表配置总通道OCP) pmbus_write 0x11 0xFF # 写入总OCP阈值,例如80A(直接写入十进制80对应的线性格式值,工具会自动转换) pmbus_write 0x46 0xXXXX # 80A对应的SLINEAR11格式值

4.3 过流响应策略:闩锁与打嗝

IOUT_OC_FAULT_RESPONSE寄存器(地址47h)的控制位相对简单,只有高5位有效。

  • 00000b:忽略。同样不推荐用于OCP。
  • 11000b:立即闩锁关闭。最常用的设置,确保在持续过载时彻底保护。
  • 11111b:立即打嗝。关闭后等待一个打嗝周期,然后尝试重启。适用于可能发生瞬时浪涌电流的场景(如某些硬盘背板)。

过流警告(IOUT_OC_WARN):除了故障保护,还可以通过IOUT_OC_WARN_LIMIT(地址4Ah)设置一个更低的警告阈值。当总电流超过此阈值时,会置位警告状态位(IOUT_OCW),但不触发关机。这为主机提供了预报警,可以在系统完全关断前尝试降频或采取其他措施,提升可用性。

实操心得

  1. 先设OCL,再设OCP:OCL是硬件快速保护,阈值应基于功率器件的极限参数。OCP是系统级保护,阈值应基于负载的最大可持续电流。通常OCP阈值 > OCL阈值 / 相数。
  2. 打嗝模式的使用场景:对于风扇、电机等感性负载,启动瞬间电流很大,使用打嗝模式可以避免无法启动。但对于数字芯片供电,闩锁模式更安全。
  3. 善用警告功能:在OCP阈值之下设置一个OC Warn阈值(例如OCP的80%),可以为电源管理软件提供宝贵的“缓冲时间”,实现更优雅的功耗控制。

5. 过温(OT)保护:监控与响应的热管理策略

过热是电源模块失效的主要原因之一。TPS536xx的过温保护监控的是功率级的温度,通过连接在功率MOSFET上的热敏电阻(NTC)或内置温度传感器的ATSEN/BTSEN引脚读取。

5.1 温度阈值设置与NVM特性

过温保护也分为**警告(OT_WARN)故障(OT_FAULT)**两级,分别对应寄存器OT_WARN_LIMIT(51h)和OT_FAULT_LIMIT(4Fh)。

关键点

  1. 温度源:温度数据来自READ_TEMPERATURE_1,它反映的是功率级的温度,而不是控制器芯片本身的温度。确保热敏电阻安装位置能准确反映MOSFET和电感的最高温度点。
  2. 无内置迟滞:手册明确指出,此温度限制值没有内置迟滞。这意味着如果温度在阈值附近波动,可能会频繁触发和清除故障。因此,TI官方建议使用闩锁(Latch-off)或打嗝(Hiccup)响应,而不是纯迟滞响应。
  3. NVM支持值离散:和OCP类似,虽然运行时可以用SLINEAR11格式高精度设置任意温度值(如123.4°C),但NVM只支持一组离散的备份值(见手册Table 1-59和1-62)。上电后,温度阈值会被恢复到离你上次存储值最近的那个NVM支持值。例如,如果你运行时设置为123°C并存储到NVM,下次上电后,阈值会被恢复为120°C(因为123°C落在115°C ≤ OTF < 125°C区间,对应NVM值120°C)。

NVM支持的温度阈值表(故障与警告)

最后存储的阈值范围 (°C)复位后的阈值 (°C)对应十六进制值 (SLINEAR11)
90 ≤ T < 95900x005A
95 ≤ T < 1051000x0064
105 ≤ T < 1151100x006E
115 ≤ T < 1251200x0078
125 ≤ T < 1351300x0082
135 ≤ T < 1451400x008C
145 ≤ T < 1551500x0096
155 ≤ T ≤ 1601600x00A0

配置策略

  • OT Fault Limit:这是硬关断线。通常根据功率MOSFET和电感的最高结温或额定工作温度来设定,并留出安全裕量。例如,器件最高结温150°C,可能会设置OT Fault为130-140°C。
  • OT Warn Limit:这是预警线,应比Fault Limit低10-20°C。例如,Fault设为130°C,Warn可设为115°C或120°C。当温度达到Warn时,系统可以主动提升风扇转速或降低负载。

5.2 过温响应策略的深度解析

OT_FAULT_RESPONSE(地址50h)提供了最丰富的响应选项,其高5位(Bits 7:3)控制响应行为。

  • 00000b:忽略。仅记录,不动作。可用于纯监控场景,但风险极高。
  • 10000b:立即闩锁关闭。标准的安全响应。
  • 10111b:立即打嗝。关闭,等待一个由MFR_PROTECTION_CONFIG定义的打嗝周期后尝试重启。适用于散热条件可能改善的场景(如风扇被临时阻塞后又疏通)。
  • 11111b:仅迟滞。这是唯一一个利用温度自然下降的“迟滞”响应。当温度超过故障限值,关闭输出;当温度回落到故障限值以下时,自动重启。手册特别提醒,由于此功能无内置电气迟滞,在阈值点附近可能产生振荡,因此建议使用前两种方式。

打嗝周期配置:打嗝模式的等待时间由制造商特定命令MFR_PROTECTION_CONFIG(通常是一个未公开的地址,需参考TI最新技术手册或应用笔记)配置。这个时间需要仔细设置:太短,温度还未充分下降,重启会再次触发故障;太长,会影响系统恢复时间。通常需要结合热仿真和实测来确定。

配置示例

# 设置PAGE pmbus_write 0x00 0x00 # 设置OT Warn Limit为110°C (0x006E) pmbus_write 0x51 0x006E # 设置OT Fault Limit为130°C (0x0082) pmbus_write 0x4F 0x0082 # 设置OT Fault Response为立即闩锁关闭 (10000b = 0x10) pmbus_write 0x50 0x10 # 可选:配置打嗝周期(假设MFR_PROTECTION_CONFIG地址为0xE1,打嗝时间设为100ms) # pmbus_write 0xE1 <value_for_100ms_delay>

6. 输入过压(VIN_OV)与其他保护功能

虽然项目正文主要聚焦于输出侧的保护,但完整的电源保护还必须考虑输入侧。VIN_OV_FAULT_LIMIT(地址55h)用于设置输入电压的上限。

6.1 输入过压保护配置要点

其配置逻辑与输出过压保护类似,但有几个不同点:

  • 非分页命令:输入电压监控通常是全局的,不区分PAGE。
  • 绝对阈值:设置的是输入电压的绝对阈值,单位是伏特。
  • NVM支持值:其NVM备份值是以1V为步进的离散值(见手册Table 1-64)。例如,如果你设置13.2V并存储,上电后会恢复为13V。

阈值设置考量:对于典型的12V输入系统,输入过压保护阈值通常设置在13V到15V之间。需要高于最高输入电压(如12.6V)并留出足够裕量,同时低于输入电容和前端器件的额定电压。

6.2 保护功能的协同与优先级

在一个复杂的多相控制器中,多种保护功能可能同时或先后被触发。理解它们的优先级和相互作用很重要。

  1. 响应速度优先级:模拟域保护(UV/OV Fault) > 数字域保护(OCP, OT) > 警告(Warn)。
  2. 故障传播:任何一个故障触发并导致关机(闩锁或打嗝)后,其他监控并不会停止。例如,过温故障关机后,控制器依然在监测温度。只有故障条件消除并且主机通过CLEAR_FAULTS命令或重新上电来清除故障状态后,才能尝试重启。
  3. 状态寄存器:多个故障可能同时发生。主机需要通过读取STATUS_BYTESTATUS_WORD以及各个具体的状态寄存器(STATUS_VOUT,STATUS_IOUT,STATUS_TEMPERATURE)来精确定位故障源。STATUS_BYTE中的VOUTIOUTTEMPCML等位是快速诊断的第一入口。

7. 实战配置流程与常见问题排查

理论最终要服务于实践。下面我结合一个为高性能计算卡GPU核心供电的假设场景,梳理一遍完整的保护功能配置流程和调试中会遇到的问题。

7.1 完整配置流程示例

场景:为一块GPU设计供电,使用TPS53676控制4相电路。规格:VOUT = 0.8V,最大持续电流Iout_max = 200A,单相峰值电流能力60A,功率级最高允许温度125°C,输入为12V。

步骤1:确定核心参数

  • VOUT_COMMAND= 0.8V
  • 负载线(Droop)设置:假设为2mΩ,满载200A时压降0.4V,故轻载电压0.8V,满载电压0.76V。
  • VOUT_SCALE_LOOP= 1.0 (假设直接采样)

步骤2:配置欠压保护

  • UV Fault:考虑到负载线,满载时电压为0.76V。设置故障点比满载电压再低一些,但高于GPU的最低工作电压(假设0.7V)。选择偏移量-96mV(0.8V - 0.096V = 0.704V)。写入VOUT_UV_FAULT_LIMIT= 0.704V。
  • UV Warn:作为预警,设置在故障点之上。选择偏移量-64mV(0.8V - 0.064V = 0.736V)。写入VOUT_UV_WARN_LIMIT= 0.736V。
  • UV Response:选择延迟8μs后闩锁关闭 (VO_UV_RESP=01b,VO_UV_DLY=001b,VO_UV_HICCUP=000b),即写入VOUT_UV_FAULT_RESPONSE=0x09(二进制00_001_001)。

步骤3:配置过流保护

  • 相级OCL:单相峰值电流能力60A,考虑裕量,选择手册Table 1-55中的53A(对应0x0035)。写入时设置PHASE=00h
  • 总通道OCP:最大持续电流200A,考虑瞬态过载,设置230A。写入时设置PHASE=FFh,值对应230(需转换为SLINEAR11格式)。
  • OC Warn:设置为OCP的90%,即207A。
  • OC Response:选择立即闩锁关闭 (11000b= 0x18),写入IOUT_OC_FAULT_RESPONSE

步骤4:配置过温保护

  • OT Fault:功率级限温125°C,设置120°C作为故障点(NVM支持值)。写入OT_FAULT_LIMIT= 0x0078 (120)。
  • OT Warn:设置为105°C(NVM支持值110°C,或运行时设置为105°C,但NVM会存为110°C)。写入OT_WARN_LIMIT= 0x006E (110) 或运行时更高精度的值。
  • OT Response:选择立即闩锁关闭 (10000b= 0x10),写入OT_FAULT_RESPONSE

步骤5:配置输入过压保护

  • VIN OV Fault:12V输入,设置保护点为14V(NVM支持值14V)。写入VIN_OV_FAULT_LIMIT= 0x000E (14)。

步骤6:写入并存储到NVM使用STORE_DEFAULT_ALLSTORE_USER_ALL命令将所有配置保存到EEPROM。

7.2 常见问题与排查技巧实录

在实际调试中,保护功能配置不当是导致电源无法启动或异常关机的常见原因。以下是一些踩过的“坑”和解决方法。

问题1:上电后立即触发欠压故障,无法启动。

  • 可能原因1VOUT_UV_FAULT_LIMIT设置过高,甚至高于软启动完成后的目标电压。例如VOUT_COMMAND=0.8V,但UV Fault设成了0.85V,一上电电压还没到0.8V就触发故障。
  • 排查:读取STATUS_VOUT寄存器,确认是否是VOUT_UVF位置位。检查VOUT_UV_FAULT_LIMITVOUT_COMMAND的配置值。
  • 可能原因2VOUT_SCALE_LOOP设置错误。如果你使用了外部反馈分压电阻并配置了VOUT_SCALE_LOOP(比如0.5),那么你写入的阈值在内部会被“放大”。你以为设的是-100mV偏移,实际硬件用的是-200mV偏移,导致故障点过低,在软启动初期就触发。
  • 排查:仔细核对VOUT_SCALE_LOOP的配置,并重新计算实际阈值。

问题2:负载切换时,偶尔误触发过流保护(打嗝或关机)。

  • 可能原因1:总OCP阈值IOUT_OC_FAULT_LIMIT设置得太接近稳态最大电流,没有给负载瞬态(Load Transient)留出足够裕量。GPU负载跃变时,电流尖峰可能超过设定值。
  • 解决:适当提高OCP阈值,或分析负载瞬态波形,确保OCP阈值大于最大瞬态电流。也可以考虑使用打嗝模式(IOUT_OC_FAULT_RESPONSE = 0x1F)来容忍短暂的过冲。
  • 可能原因2:相电流不平衡。某一相由于布局、元件参数偏差等原因,承担了过多电流,率先触发了相级OCL,导致该相关闭。虽然总电流未超OCP,但剩余相电流重新分配,可能引发振荡或不稳。
  • 排查:使用示波器查看各相电流波形,检查是否平衡。可以通过调整电流采样增益或相位补偿来改善。

问题3:过温警告频繁触发,但摸上去温度并不高。

  • 可能原因:热敏电阻(NTC)电路配置错误,或READ_TEMPERATURE_1的转换系数(斜率、偏移)未正确校准,导致读取的温度值远高于实际温度。
  • 排查
    1. 使用万用表测量ATSEN/BTSEN引脚对地的电压,根据NTC的数据手册计算实际温度。
    2. 通过PMBus读取READ_TEMPERATURE_1寄存器值,与计算值对比。
    3. 检查并配置温度读取相关的制造商命令,如MFR_TEMP_1_CONFIG,确保其斜率(Coefficient)和偏移(Offset)设置正确。

问题4:配置的参数在重新上电后“变了”。

  • 可能原因:这是NVM备份值离散化的典型表现。你通过PMBus工具高精度写入了一个值(如123°C),并且系统运行正常。但当你执行STORE_DEFAULT_ALL后,这个值被舍入到最近的NVM支持值(120°C)存储。下次冷启动,控制器从NVM加载的就是120°C。
  • 解决:这是正常现象,并非bug。在设计阶段就需要根据手册中的NVM支持值表来选择你的目标阈值。或者,在每次上电后的初始化脚本中,重新通过PMBus写入你需要的精确值。

问题5:SMB_ALERT#信号一直拉低,但读取状态寄存器所有位都是0。

  • 可能原因:存在**无效/不支持数据(Invalid/Unsupported Data)**错误。当你向一个寄存器写入了超出其有效范围的值(例如,向VOUT_UV_FAULT_LIMIT写入了一个不支持的非32mV整数倍的偏移值),控制器会按照PMBus规范置位STATUS_CML寄存器中的相应错误位,并拉低SMB_ALERT#。
  • 排查:读取STATUS_CML寄存器,检查是否是IVD(无效数据)或UCD(不支持命令数据)位置位。然后检查最近写入的各个限制寄存器值是否都在手册规定的有效范围内。

调试工具箱建议

  1. 逻辑分析仪:抓取PMBus通信波形,确认写入的地址和数据值完全正确。
  2. PMBus协议分析软件:很多PMBus编程器自带软件,可以图形化地读写寄存器,并自动进行格式转换(如电压值到ULINEAR16的转换),减少手动计算错误。
  3. 示波器:必备。用于观察Vout、相电流、温度传感器电压在故障触发瞬间的波形,是区分硬件问题还是配置问题的关键。
  4. 系统化测试:在实验室进行完整的保护功能测试:使用电子负载模拟过流,使用可调电源模拟输入过压/欠压,使用热风枪或冷喷剂模拟过温。观察并记录每种故障下的响应是否符合预期。