ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

基于TPS259483AYWPR eFuse与STM32F745ZG的智能电源路径保护设计

基于TPS259483AYWPR eFuse与STM32F745ZG的智能电源路径保护设计 1. 一块贴片保险丝烧掉之后我才开始认真对待电源路径保护做嵌入式硬件的人多半都经历过这种场面设备在客户现场跑了大半年没问题突然某个端口被误接了高电压主 PCB 上一声闷响保险丝熔断DCDC 输入侧的电解电容炸开MCU 的 ADC 引脚被灌进 20V 电压整块板报废。我从消费电子做到工业设备对这种故障感受特别深。工业环境里电源输入远不像实验室里那个稳压电源那么干净。24V 电源线上可能叠加几十伏的浪涌负载侧电机启停会拉出反电动势操作人员还能把 48V 适配器插进 24V 接口。这些事件里最先遭殃的往往是保险丝和 MOSFET被烧掉的保险丝本身不贵贵的是后面被殃及的一整块控制板。所以后来做项目我不再只用一颗自恢复保险丝兜底而是把“电源路径保护”当成一个独立子系统去设计。这个子系统的核心是一颗带数字遥测能力的电子熔断器eFuse——比如 TPS259483AYWPR——再加一颗专门管理它的 MCU也就是我这里用的 STM32F745ZG。它解决的问题也很直接不让浪涌电流烧坏 DCDC不让过流把 PCB 上的铜箔烧断不让电源异常把后级 MCU 和传感器一片片带走同时还能在故障后告诉自己到底发生了什么。这篇文章就把我从选型、画图、写固件到实测的整个过程摊开给同样在做嵌入式电源保护的朋友一个可以直接照抄的思路。1.1 一次真实的电源端口烧毁先讲那次事故因为它是整个设计思路的起点。那是一台带有多个直流输入的工业采集设备额定输入是 24V客户现场自己接了一根线实际送了 36V 进来。36V 对 24V 等级的输入电容而言其实还没立即炸但随后设备里的一个小功率 DCDC 开始进入超压工作状态效率急剧下降电感饱和最终把输入电流抬到 3A 以上板载保险丝撑了几秒后熔断。熔断瞬间产生的电压尖刺顺着电源路径反向击穿了后面一颗 LDO 的输出级5V 总线异常主控复位。事后查起来问题并不全在“输入电压过高”——如果只有一次瞬态过压TVS 能扛住问题在于没有一个能快速切断电源路径的器件也没有能让上位机知道“电源路径发生了异常”的信号。保险丝虽然做过流保护但它的动作是慢的慢到足以让次级电路先坏。而哪怕换了自恢复保险丝它也只是“热了断、冷了通”没法告诉主控它断过几次、断的时候电流多大、温度多高。对工业设备来说这种黑盒式保护已经不够用了。1.2 保险丝、二极管、PMOS 方案差在哪里传统方案通常有四种做法。第一种是普通慢断保险丝优点是没有压降以外的成本缺点是动作值分散、响应慢、不可重置而且没有一个逻辑信号告诉系统它已经断了。第二种是二极管防反接搭配 PMOS 开关能防反向但防不了过流PMOS 一旦导通就一直导通想在几微秒内关断电流还需要额外的控制回路多数人草草了事。第三种是用运放搭采样放大器再配比较器和锁存器做一个过流保护电路这类方案在 18V 输入、5A 负载以内还能工作但分立器件太多、温度漂移大、PCB 面积被吃得很厉害而且完全没有遥测能力。第四种是热插拔控制器配合 MOSFET它解决了瞬态浪涌限制和过流保护问题但仍然是一个模拟闭环系统阈值靠电阻设定改一次参数就要换一颗电阻现场想离线调整根本不方便。这些方案都不算错但它们都有一个共同的短板不能变成系统里一个可编程、可观测、有交互接口的外设。我们需要的是一个介于“功率开关”和“智能外设”之间的器件。它既是功率 FET又是限流比较器又是遥测采样器还能通过 I2C 和主控对话。TPS259483AYWPR 这类带数字接口的电子熔断器恰好就是按这个思路设计的。1.3 从“堵”到“疏”eFuse 的数字管理思路在引入电子熔断器之后我的设计理念从“堵”变成了“疏”。传统保险丝是被动等待故障发生而 eFuse 可以主动把电源行为变成一套状态系统。正常工作状态下TP S 器件的输出只是一个小阻值的功率通道输入过压时它可以按阈值切断输出短路时它能在微秒级时间内把电流拉回到设定值甚至关断负载电流超过软阈值时主控可以通过 I2C 读出来提前判断是否有异常趋势。这种节奏和 STM32 的搭配本质上是在电源路径上装了一只带 ADC 的“眼睛”和一把“闸刀”。这样讲可能还是有点抽象后面几节我会把器件的内部原理、硬件连接、固件实现和验证方法逐一展开。具体的配置和参数我以常规应用为例来推算实际选型时请务必对着最新数据手册核准因为不同后缀型号在电流范围、启动斜率和封装上可能有区别但思路是通用的。2. TPS259483AYWPR 的功能拆解以及它凭什么敢叫“电源路径保护”如果你以前只用过保险丝第一次看到 TPS259483AYWPR 这种型号多半会犯怵。它名字很长封装又小还带了一堆看起来像“测试模式”的引脚。其实拆开看它做的事情就是三件导通、限制、报告。对应到内部就是功率 FET 通道、比较器/ADC 采样通道、以及 I2C 寄存器接口。理解了这三块你就掌握了这颗芯片八成。2.1 内部到底有什么功率 FET、采样电阻、比较器、I2C 遥测从功能框图上看输入引脚和输出引脚之间是一颗低导通阻抗的 N 沟道功率 MOSFET正常工作时它完全导通只产生大概几毫欧的导通压降。它和理想的导线之间只剩两点差别一是允许通过的电流不能无限大二是温度不能无限高。围绕这颗 MOSFET芯片做了四组保护。第一组是输入端的过压和欠压检测。阈值一般通过外部电阻分压设定OVP 会监视输入是否超过最高允许电压UVP 则避免在欠压状态下带载因为后级 DCDC 在输入电压不足时会有不稳定的开关行为。第二组是输出端的短路和过流检测它会采样输出电压或者电流当负载发生短路输出快速下拉芯片内部会在几十微秒内把 FET 拉回到限流模式而不是让 FET 直接炸开。第三组是过温保护FET 温度异常升高时芯片先线性降额进一步升高则直接锁断锁断状态必须通过寄存器或者使能引脚复位。第四组是软启动限制通过外接电容或者寄存器配置把上电瞬间的浪涌电流限制在一个安全爬升速率内。这四组保护里前面三组是模拟电路完成的速度本来就比 MCU 参与控制快得多。但真正让它区别于普通热插拔控制器的是遥测模块。电流通过内部的采样通路会产生小信号经过放大器和 ADC 后芯片可以把负载电流、输入电压、结温、故障状态这些信息放进寄存器。外部 MCU 只要通过 I2C 读寄存器就能知道电源路径上刚刚发生过什么。对 STM32F745ZG 这种外设丰富的 MCU 来说I2C 本来就是标配功能接起来几乎不占额外资源。2.2 关键指标怎么看过流限制、软启动、过压欠压、过温、中断选型时我最关心的第一个指标是连续工作电流。TPS25948 系列一般覆盖从几个安培到十几安培的档位型号后缀里的数字通常对应大致的电流能力TPS259483AYWPR 在实际应用中建议按 8A 到 12A 这个量级规划。你要有两个概念一是连续工作的稳态电流会持续产生 I²R 功耗二是限流值并不等于百发百中的精确值限流阈值有误差所以设计时要留 20% 以上的余量不能把峰值电流压在标称极限上。第二个指标是限流响应时间。对于工业设备短路是最难处理的故障。如果 MCU 参与保护一个中断加处理周期可能需要 10 微秒到 100 微秒但模拟限流比较器可以在几个微秒内就开始动作。TPS259483 这类器件的优势就在这里极限情况下硬件先截断超出的电流然后通过 ALERT 引脚通知 MCUMCU 再做“要不要彻底关断”的决策。这叫“硬件守底线、软件定策略”。我见过很多刚从软件转过来的工程师试图在 MCU 中断里实时过流保护接上 500ns 输入脉宽的短路发生器以后就懵了因为 MCU 响应速度根本不够。正确做法是把模拟比较器当作第一道防线MCU 只做状态机管理和故障数据记录。第三个指标是软启动时间。工业系统一般不希望输入端瞬间出现大电流否则会给电源和背板连接器带来冲击。TPS25948 可以通过一个引脚上的电容或者 I2C 寄存器配置控制输出爬升斜率典型配置是 1ms 到 10ms。影院功率电感、陶瓷电容这些负载都要配合软启动去避免充电浪涌。如果系统是热插拔设计还要把启动时对母线的电压跌落也考虑进去不能启动太快也不能太慢。第四组指标是 OVP/UVP 阈值和温度降额。对 24V 工业输入我一般把过压保护设在 30V 左右欠压保护设在 18V 左右。过温保护则不是靠“读温度数字”那么简单它涉及降额曲线。实际应用中芯片的温度保护点通常在 125°C 附近但电流降额从 100°C 左右就开始了。实际上过热导致的误关断往往比真正的过压短路更多在布局和散热设计上要给功率 FET 的封装留够散热铜皮。2.3 与普通保险丝和热插拔控制器的对比为了说清楚它在整个“嵌入式电源路径保护”里的定位我做了个简单对比表。很多人会把热插拔控制器和 eFuse 混为一谈实际上区别还是明显的。方案过流响应速度可重置遥测接口过压/欠压可编程故障上报PCB 复杂度慢断保险丝毫秒级到秒级否需更换无无无低自恢复保险丝秒级到分钟级自动恢复无无无低分立采样保护微秒级可设计一般没有可设计但复杂可设计高热插拔控制器 MOSFET微秒级可通过逻辑复位一般没有可设计引脚电平中TPS25948 系列 eFuse微秒级I2C 可复位I2C 实时寄存器寄存器/引脚可配ALERT/寄存器低从表格能看出来eFuse 最突出的地方不是“切断速度快”这一项而是把保护与通信统一了起来。对 STM32F745ZG 这样的主控来说它能把电源故障作为一种“事件”纳入整个嵌入式系统的异常处理机制而不是孤立地靠看门狗去猜系统是不是被电源打死了。3. 把 STM32F745ZG 接进系统整体架构与引脚连接硬件保护芯片对接 MCU并没有想象中复杂但几个细节如果搞错后面调起来会非常难受。这里我以 STM32F745ZG 为控制核心画一套最小系统连接方案说明每一根线为什么存在以及上电时序应该怎么安排。3.1 为什么是 STM32F745ZG而不是更小的 MCU选 STM32F745ZG 不是因为它内核有多强而是因为它在这类场景里刚好把这些需求都覆盖了。F745 系列基于 Cortex-M7主频可以跑到 216MHz在这个项目里跑 I2C 状态机和故障日志完全绰绰有余。更重要的是它有 1MB 的 Flash 和 320KB 的 SRAM我可以留一块 Flash 区域保存电源故障历史记录用空闲的 SRAM 缓存遥测数据流。外设方面它的 I2C 接口支持 1Mbit/s Fast Mode Plus读 eFuse 寄存器跟在读内存一样快GPIO 做外部中断响应 ALERT 引脚也没有压力。如果你同时还需要以太网、USB 或者 CAN 连接上位机F745ZG 的原生外设足够覆盖。一个没有富余外设资源的小 MCU 做做开关控制还行真做遥测上报和故障历史管理就会很拮据。当然这不是说必须用这么高规格的 MCU。如果产品只做单纯的切断保护一个 8 位 MCU 甚至逻辑门都行。但你要在“保护”之外还要“记录、上报、联动、动态调参”那 STM32F7 这个档位就比较合适。为该项目选型时我额外还看中了 STM32F745ZG 的 144 引脚封装引脚多模拟采样、继电器控制、指示灯和调试串口可以分开规划不会把 I2C 引脚和 PWM 引脚抢在一起。3.2 最小连接图EN 引脚、ALERT/FAULT、SCL/SDA、电源通道真正接起来不需要太多线。前面输入是工业 24V 电源或实验室可调电源先经过 EMI 滤波再进 TPS259483 的 IN 引脚。OUT 引脚直接接到负载端和 DCDC 前端注意保留足够容量的小电容做输出稳定。控制侧我们关注四个接口。第一个是 EN使能引脚MCU 用一个 GPIO 控制。EN 拉低就强制关闭输出拉高则允许输出。硬件上要加一个限流电阻和下拉默认状态希望它是低电平防止 MCU 复位期间电源路径已经开闸。对很多工业设备来说开机瞬间必须先让 MCU 完成配置再主动要求通电所以 EN 绝对不能悬空。第二个是 ALERT/FAULT 状态引脚它通常是一个开漏输出有故障时拉低。MCU 把它接在 GPIO 的外部中断输入上并配置上升沿/下降沿触发。这个脚的意义是让 MCU 不用频繁轮询寄存器也能第一时间知道电源异常。这里有一个很常见的坑开漏输出必须外接上拉电阻上拉电压建议接 STM32 端的 3.3V不要接 5V否则 eFuse 引脚会被多出来的电流灌坏。第三个是 SCL/SDA 引脚连接到 STM32 的 I2C 外设。注意要接双上拉电阻一般 4.7kΩ 对 3.3V 就可以。I2C 地址取决于芯片的 AI 引脚和外接地址设置建议在原理图里标注清楚分配好地址别和板上其他 I2C 从机冲突。第四个是 PGPower Good或者电源正常输出如果芯片提供也可以接到 MCU 的普通 GPIO。它的作用是在输出稳定后才给出高电平相当于一个硬件“启动完成”信号用来触发后级 DCDC 的 EN。把这些线整理成一个最小连接列表IN输入电源经 TVS、滤波OUT受保护的输出接负载和 DCDCGND功率地单独铺铜后单点回流ENSTM32 GPIO 控制开断ALERTSTM32 EXTI 外部中断开漏输出需上拉SCLSTM32 I2C_SCL通过上拉到 3.3VSDASTM32 I2C_SDA通过上拉到 3.3VPG可选STM32 GPIO 读取输出状态VDD/逻辑电源引脚给 eFuse 内部逻辑供电通常接 3.3V注意和功率地分开做滤波3.3 上电时序设计的细节上电时序是新手最容易忽略的。TPS259483 的 IN 侧只要有了电压芯片内部逻辑就可能开始工作但此时 EN 可能是低、输出还被关断所以系统要保证“先有逻辑电源后有使能”的时序。STM32F745ZG 复位期间 GPIO 默认是高阻态或受代码初始化影响如果 EN 线上没有下拉电阻上电瞬间它会表现为不可控电平可能造成 eFuse 在 STM32 还没来得及配置寄存器时就偷偷打开。这个问题现场能逼疯人明明代码里写的是“开机十秒后才通电”示波器量到输出却在 MCU 跑起来之前就已经升上去了。正确的做法是EN 引脚接一个 100kΩ 下拉电阻到地保证 MCU 复位期间为低电平。STM32 启动后先初始化 I2C然后读取 eFuse 的状态寄存器确认没有故障再写入预设的过流阈值、软启动时间和开关位。等所有寄存器都配置完毕再把 EN 拉高。这样整套系统启动时负载看到的电源通道相当于一个从“配置完成”到“开始带载”的受控开关而不是一个裸奔的 MOSFET。如果产品里还有 DCDC 或其他电源轨也要注意输出端的负载启动顺序。一般建议先让 eFuse 输出 24V 稳定再给 DCDC 使能DCDC 启动完成后再让传感器和通信接口通电。后级负载如果在 eFuse 还没满摆幅时就开始拉电流会产生一个叠加的瞬态过冲给前级电源造成压力。4. 硬件设计里的那些“不写进原理图就容易翻车”的细节原理图画完很多人以为保护就做完了其实真正的挑战在布局和参数计算。这一节我按自己的排雷顺序说先算采样电阻和限流再谈 PCB 布局最后说输入浪涌防护的组合拳。4.1 采样电阻和限流值的计算以 24V、10A 典型工业负载为例TPS25948 系列要得到一个精确的限流点通常需要一颗与功率 FET 串联的采样电阻俗称电流感测电阻。这颗电阻的阻值直接决定限流阈值。芯片内部有一个基准电压把采样电阻上的压降和基准比较一旦压降超过基准限流环路就会动作。以典型基准 50mV 为例如果你希望最大稳态电流是 10A那么采样电阻应取Rsense 50mV / 10A 5mΩ10A 电流在这颗电阻上的功耗是P I² × R 100 × 0.005 0.5W所以一颗 5mΩ、额定功率至少 1W 的合金电阻比较合适。如果你把限流值降到 5A阻值应该取 10mΩ功耗降到 0.25W。这里有两个容易算错的地方一是基准电压本身有精度偏差某些系列在 ±3% 到 ±8% 之间因此实际限流点也要用最大偏差校核二是采样电阻焊接到 PCB 后焊锡和走线会增加额外串联电阻导致实际限流点低于计算值。要让限流点准确采样最好是开尔文四线接法采样引线要直接从小电阻的两个专用感测焊盘走不能从大电流路径上顺手开个扇出。给个具体例子如果系统峰值电流是 12A、额定电流 8A我会把限流阈值设在 14A 左右留出 20% 余量。这样即使采样电阻阻值有 5% 偏差也不会让正常工作被限制。同时要把电子负载的“触发电流”和“维持电流”区别开来很多电机或加热器在启动时会有几毫秒的大电流尖峰限流点设太紧会导致启动失败。4.2 PCB 布局功率主路、开尔文采样、地平面完整性PCB 布局值得单独强调因为器件选型再好布局烂了一样白搭。功率主路的原则是短、宽、直。走线铜厚要按电流密度考虑10A 电流建议用 2oz 铜、宽度至少 3mm如果实在走不了那么宽就用大面积铺铜加阵列过孔来处理过孔连接。IN 到 eFuse 的输入脚距离越短越好输出脚到负载端也一样。要注意过孔的载流能力经常被高估一个 0.3mm 的过孔只适合通过 1A 到 2A 电流10A 路径至少要 8 到 12 个并联过孔。采样电阻的接法更讲究。采样电阻两边各有两个焊盘功率大电流从两端的大焊盘流过采样小信号从中间的小焊盘引出两条采样线分别引到 eFuse 的感测引脚。采样线尽量细、短并且尽量不要在采样线上串电阻。如果采样线经过长距离平行走线会拾取高频噪声导致限流比较器误触发。最好的做法是让采样电阻紧贴芯片让感测走线不超过 5mm 距离。地平面的处理上我的习惯是把功率地和控制地分成两个区域在采样电阻附近或者芯片下方的焊盘处单点汇合。控制侧的数字地和模拟地不要直接一个大平面混在一起否则 I2C 的每次切换都会在地平面产生电压台阶影响 ADC 遥测精度。4.3 输入浪涌防护的组合拳TVS、共模电感、eFuse工业设备输入端口通常不能只靠一颗 eFuse 扛浪涌。eFuse 的过压保护针对的是直流稳态或缓变的过压对高频脉冲、ESD、雷击浪涌它内部的比较器虽然有响应但能量吸收能力有限。我更愿意把它放在防护链的末端前面再加两级。第一级是 TVS 管并接在输入端口用来钳制瞬态高压TVS 的钳位电压必须低于 eFuse 的 OVP 设定值这样 eFuse 不会频繁触发误保护。第二级是共模电感和一个小的 X2Y 电容用来滤高频共模噪声避免噪声直接耦合到 eFuse 的采样引脚。第三级才是 eFuse 的 OVP 和过流通道。在 24V 系统里我一般选钳位电压在 30V 左右的 TVS再配合瞬态抑制二极管。要注意的是TVS 的钳位电压不能选太接近正常工作电压 24V否则正常纹波就可能触发它让系统经常进入保护状态。这个组合下来现场浪涌对后级 DCDC 的威胁就小了很多eFuse 只管处理好它该管的直流过流和短路而不用去背所有崩溃能量的锅。5. STM32F745ZG 固件实现把“保护”做成状态机如果硬件是骨架固件就是神经系统。我把固件分成三个层次I2C 通信层、状态机层、策略处理层。这样后续改动作阈值或者增加告警方式只动状态机不会把 I2C 代码改崩。5.1 平台初始化与 I2C 通信封装STM32 端先初始化一个 I2C 通道用于和 eFuse 通信。eFuse 通常用 SMBus 或者 I2C 接口初始化时先确保时钟、GPIO 复用功能和上拉配置正确。代码逻辑可以这样写void efuse_i2c_init(void) { GPIO_InitTypeDef gpio {0}; I2C_InitTypeDef i2c {0}; __HAL_RCC_GPIOB_CLK_ENABLE(); __HAL_RCC_I2C1_CLK_ENABLE(); gpio.Pin GPIO_PIN_6 | GPIO_PIN_7; // PB6SCL, PB7SDA gpio.Mode GPIO_MODE_AF_OD; gpio.Pull GPIO_PULLUP; gpio.Speed GPIO_SPEED_HIGH; HAL_GPIO_Init(GPIOB, gpio); __HAL_AFIO_REMAP_I2C1_ENABLE(); i2c.ClockSpeed 100000; i2c.DutyCycle I2C_DUTYCYCLE_16_9; i2c.OwnAddress 0x00; i2c.AddressingMode I2C_ADDRESSINGMODE_7BIT; HAL_I2C_Init(hi2c1, i2c); }读遥测数据时我先发一个寄存器地址再读回两个字节拼成 16 位值。具体每个寄存器对应的 LSB 权重必须查数据手册不能笼统地乘一个固定系数。以下函数只演示通信流程uint16_t efuse_read_reg(uint8_t reg_addr) { uint8_t buf[2] {0}; HAL_I2C_Master_Transmit(hi2c1, EFUSE_ADDR, reg_addr, 1, 10); HAL_I2C_Master_Receive(hi2c1, EFUSE_ADDR, buf, 2, 10); return ((uint16_t)buf[0] 8) | buf[1]; }通信层要做的另一件事是把“读到的数据校验一下”。I2C 总线在工业环境里偶尔会受到干扰寄存器读出偶尔会跳出明显异常值。我的习惯是连续读三次取中位数作为有效值如果两次返回差异超过 30%就标记通信异常并读取 ALERT 引脚状态排查是总线问题还是被电噪声打断。5.2 故障事件记录、ALERT 中断处理与安全状态ALERT 引脚是硬件产生的中断源我把它配置成 STM32 的外部中断下降沿触发。中断服务函数里只做一件事把故障标志位置位清除中断然后立刻读取 eFuse 的状态寄存器。为什么要在中断里头就去读状态寄存器因为许多 eFuse 的状态寄存器是“读后清除”如果你拖到主循环再读芯片可能已经发生了多次不同故障但寄存器里的累计历史已经不清不楚了。中断里读完状态记录到一个环形缓冲区然后由主循环决定后续动作。状态机的核心状态大致有四个NORMAL正常运行、OC_WARNING电流超过软阈值但还没到硬限流、FAULT_HARD发生硬故障已关断、RETRY等待重试。伪代码逻辑是switch (state) { case STATE_NORMAL: cur efuse_read_current(); if (cur SOFT_LIMIT_HI) { warning_counter; if (warning_counter 3) { state STATE_OC_WARNING; } } else { warning_counter 0; } break; case STATE_OC_WARNING: cur efuse_read_current(); if (cur HARD_LIMIT) { efuse_disable(); // 拉低 EN 关断 state STATE_FAULT_HARD; } else if (cur SOFT_LIMIT_LO) { warning_counter 0; state STATE_NORMAL; } break; case STATE_FAULT_HARD: if (retry_count MAX_RETRY) { HAL_Delay(RETRY_DELAY_MS); efuse_enable(); retry_count; state STATE_NORMAL; } else { // 保持关断并通知上位机 report_fault_persistent(); } break; }这里有个策略性选择到底要不要自动重试我的经验是对电机、加热器这种瞬时过载自动重试两次是可以接受的对短路这种硬故障自动重试反而会反复冲击电源所以要在固件里区分故障类型。短路导致的 FAULT_HARD 应该走“锁断人工断电或上位机复位”的路线而瞬时过流导致的 OC_WARNING 可以平滑恢复到 NORMAL。不能一类故障一套代码更不能一视同仁地无脑重试。5.3 动态限流、热复位、看门狗互锁的策略TPS25948 这类 eFuse 的价值还体现在“动态限流”上。启动阶段可以允许较大的电流给负载电容充电进入稳定运行后再把软限流降低这样既不影响启动又能对异常过流敏感。STM32F745ZG 只需要在不同系统阶段往寄存器写入不同的限流值即可。动态限流有一个关键配套看门狗互锁。简单说即使 MCU 死机eFuse 也不能失去保护。STM32F745ZG 内部的独立看门狗IWDG一旦启动就必须周期性喂狗。如果 MCU 卡死IWDG 会在复位前把 GPIO 全部重置但 GPIO 重置成高阻态后EN 引脚有下拉电阻输出会被强制关断。这就是“硬件看门狗EN 下拉”的互锁MCU 崩溃时电源被切断而不是让设备在失控状态下继续通电。如果我用的 MCU 没有独立看门狗至少要在硬件上做一个“心跳信号”控制 EN让 eFuse 只有在收到周期性脉冲时才开启不过这在 STM32F745ZG 上不需要IWDG 足够。热复位策略也要考虑。当 eFuse 进入过温保护内部温度降下来之后它可能自动恢复也可能进入锁存取决于配置。我的建议是对外部环境温度波动大的应用把过温后的恢复做成“由 MCU 读取温度寄存器、由 MCU 决定是否重新使能”这样系统不会在温度临界点附近反复开关。5.4 与 RTOS 和上位机联动的扩展思路如果你的工程跑的是 FreeRTOS那状态机可以独立成一个任务ALERT 中断通过信号量唤醒任务。遥测数据采集可以放到低优先级任务每 100ms 读一次电流和温度如果数值变化不大就跳过上报。记录部分可以用环形缓冲区配合串口或者 CAN 发送把故障日志上送给 HMI 或上位机。STM32F745ZG 的 CAN 控制器在这种工业设备里非常实用故障记录加上时间戳整个系统的可维护性会明显提升。我见过不少项目硬件保护做得很好但 MCU 上没有故障记录每次出问题都要带示波器到现场抓成本极高。有了 TPS259483 的遥测我在 Flash 里保存最近 50 条故障事件内容包括故障类型、电流值、温度、输入电压、恢复时间这样即便客户说“我啥都没干就坏了”回来一读日志也能定位到几分几秒什么人插拔了什么。6. 验证一台 24V 工业电源保护板我会这样测硬件的成功不是看原理图多漂亮而是测出来的波形多干净。真正把保护板拿到测试台上我一般会花掉比画原理图两倍的时间去验证因为异常波形往往不会在最理想的条件出现。6.1 测试台配置电子负载、信号发生器、注入示波器测试台至少要准备一台可编程直流电源、一台电子负载、一台双通道示波器、一个电流探头和数据记录手段。可编程电源用来模拟正常 24V 以及过压状态电子负载用来模拟稳态电流、短路和动态阶跃示波器测量 IN、OUT、EN、ALERT 这四路信号。如果要把瞬态浪涌还可以用信号发生器配合功率放大器注入一个持续 500μs 的 40V 尖峰。测试时电流探头最好用闭环式霍尔电流探头不要用采样电阻串联进功率回路来测电流因为那会改变你正在测量的电源路径阻抗。我建议给每种测试建立一个清单逐项目填写实测结果不能“大致看一眼就通过”。尤其要测的是24V 下满载 8A 时的通态压降输出对地短路时的关断时间过压 36V 时 OVP 关断时间软启动时输入电流的峰值和斜率ALERT 引脚从拉低到 MCU 读取状态寄存器的响应时间。6.2 必须记录的三条波形启动、短路、恢复第一条是启动波形。设置电源输出 24VeFuse 使能后用示波器观察 OUT 电压爬升和输入电流波形。理想情况下 OUT 电压是一条斜率一致的斜坡输入电流没有尖锐尖峰。如果你看到电流波形向上冲一下然后回落说明软启动时间太短负载电容充电电流被限流环路短暂钳制了。此时要调大软启动时间。启动波形要录三档空载、半载、满载确保满载下也不会触发限流。第二条是短路波形。用电子负载直接做 30A 短路或者干脆用一根粗线短路 OUT 和 GND观察 OUT 电压塌陷和电流被钳制的过程。重点是看短路电流是“一个很快的弹簧拉回”还是“一个大尖峰后维持了很久”。前者说明限流环路动作灵敏后者说明环路带宽不够或者采样路径有干扰。短路后 ALERT 引脚要能及时拉低状态寄存器中必须能看到对应故障标志。第三条是恢复波形。故障切除后清除状态寄存器、重新拉高 EN观察输出能否按照软启动斜率重新建立。这里最容易暴露的问题是如果 eFuse 在过温锁断状态下芯片内部温度还没降下来重新使能可能会立即再次保护。恢复测试一定要在“故障刚结束”和“冷却十分钟后”两个条件下分别做。6.3 长时序稳定性和结果判读短期波形过了之后还有长期稳定性测试。我会让系统在额定负载下跑 8 小时每 5 秒读一次电流和温度并记录。如果程序中长时间读取电流值出现缓慢漂移先检查的是采样电阻温度系数而不是代码问题。合金采样电阻温度系数一般在 50ppm/°C 左右20°C 温升引起的误差在可接受范围但如果是普通的 1206 贴片电阻温升 50°C 后的阻值可能偏了 5% 以上这个误差足以让限流点偏离设计值。另外要注意测量结果的判读不能只看绝对数值。比如把 ALERT 响应时间当做一个固定指标时你要意识到它取决于故障类型。过压和短路的内部门限路径不同反应时间可能差一个数量级。记录时最好分开归类不要混在一起求平均值否则会掩盖最坏情况。整个测试流程走下来一个直观的感受是有了带遥测的 eFuse调试时你可以直接读寄存器里的故障原因而不是靠猜。以前做一个电源保护板短路之后只能靠万用表量通断、靠示波器抓波形去反推现在插上调试器读一读故障寄存器事件就非常明确。这套“TPS259483AYWPR STM32F745ZG”的组合从我自己的项目经验看把电源保护从“闷头熔断”提升到了“可观测、可编程、可重置”的层面。后面如果再遇到类似的产品设计我大概率还是会沿着这个思路做硬件快速兜底软件负责策略遥测数据写进日志。整块设计最需要耐心的地方是布局阶段对功率回路的每一毫米取舍以及状态机里对不同故障类型的细粒度区分这两件事做扎实了设备在现场的表现会替你说话。
返回列表