ARTICLE DETAIL

资讯详情

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

嵌入式电源路径保护:eFuse与MCU协同实现智能供电管理

嵌入式电源路径保护:eFuse与MCU协同实现智能供电管理 1. 项目概述为什么嵌入式和工业现场总在电源路径上栽跟头你有没有遇到过这样的场景一台部署在工厂车间的PLC边缘网关运行三个月后突然反复重启或者某款智能电表在现场调试时一接入48V直流供电就烧掉主控板上的LDO又或者某次客户现场升级固件工程师刚把USB转串口线插进设备整块电路板“啪”一声冒烟——事后拆开发现是TVS管击穿、MOSFET栅极被拉低、MCU的VDD引脚对地短路。这些不是偶发故障而是电源路径设计缺失的必然结果。今天要聊的这个项目核心就是用TPS259483AYWPR和TM4C123GH6PMI搭建一套可编程、可监控、可响应的主动式电源路径保护系统。它不靠保险丝“一断了之”也不靠TVS“被动扛压”而是让电源通路本身具备“感知—判断—执行”能力。TPS259483AYWPR 是德州仪器TI推出的高精度、宽电压2.7V–24V、支持0.5A–5A可调限流的eFuse芯片内置电压/电流/温度三重监测、快速断开典型1.5μs、软启动控制、反向电流阻断等硬核功能而TM4C123GH6PMI 是TI自家的ARM Cortex-M4F微控制器主频80MHz带硬件浮点、1MB Flash、256KB SRAM最关键的是——它有12位ADC1MSPS、多个比较器、PWM模块、GPIO中断唤醒能力以及完整的USB、CAN、UART外设完全能胜任对TPS259483AYWPR的实时协同管理。这不是一个“加个保险丝就完事”的方案而是一套嵌入式系统级的电源健康管理体系。它解决的不是“能不能上电”而是“上电是否安全”“供电是否稳定”“异常是否可追溯”。尤其在工业现场输入电压波动大如24V系统实测常达18–32V、负载突变频繁电机启停、继电器吸合、EMI干扰强变频器、电焊机共地、维护人员操作不可控热插拔、接线反接、误用电源这些都让传统被动防护形同虚设。而本方案中TM4C123GH6PMI 不仅读取TPS259483AYWPR的状态寄存器还能结合自身ADC采样母线电压、通过外部分流电阻监测实际负载电流、利用内部温度传感器校准环境温升并基于预设策略动态调整TPS259483AYWPR的限流阈值——比如高温环境下自动降额至4A避免热关断或在检测到输入电压跌落至20V以下时提前触发缓启动防止MCU复位。这种“芯片MCU”的双层防护架构在嵌入式架构师做系统可靠性设计、工业网关开发、边缘AI终端电源管理时已成事实标准。如果你正在做嵌入式硬件设计、写裸机驱动、调试电源树或者准备嵌入式面试中“电源管理”这一高频八股题这个项目就是你绕不开的实战样本。2. 系统架构与选型逻辑为什么非得是这对组合2.1 TPS259483AYWPR不是所有eFuse都叫“智能保险丝”先说清楚TPS259483AYWPR 不是普通电源开关也不是简单的MOSFET驱动芯片。它的本质是一个集成化、可配置、带数字接口的“电源路径控制器”。我们来拆解它最不可替代的五个硬指标第一真正的双向电流监测精度。它内部集成了两个独立的电流检测放大器CSA分别监控正向IN→OUT和反向OUT→IN电流增益误差±0.5%失调电压50μV。这意味着当你的系统存在电池备份、超级电容储能、或者多电源冗余如主电源PoE电池时它能精确识别出“反向电流是否由负载倒灌引起”而不是简单粗暴地“一有反向就关断”。很多国产eFuse只标“支持反向阻断”但没提反向电流能否量化——这在工业现场极易误判。比如某款PLC在断电瞬间因内部电容放电导致输出端电压高于输入端若eFuse无法区分这是正常放电还是外部电源反灌就会错误锁死导致下次上电失败。第二可编程的动态限流响应曲线。它支持三种限流模式恒流Constant Current、折返Foldback、关断Shut Down。关键在于这三种模式不是固定写死的而是可通过I²C接口实时配置。例如在电机驱动板上电瞬间你希望允许2A浪涌持续10ms恒流之后回落到1.2A稳态折返一旦超过1.5A持续500ms则彻底关断。这种分阶段、带时间窗的保护逻辑必须依赖可编程eFuse才能实现。而像LM5069这类老型号只能设一个固定限流值面对复杂负载毫无弹性。第三超快故障响应与自恢复机制。典型过流关断时间1.5μs比MCU中断响应快两个数量级TM4C123GH6PMI的GPIO中断延迟约1–2μs但加上中断服务程序执行、寄存器读取、判断逻辑实际动作往往在5–10μs后。这意味着TPS259483AYWPR 能在MCU“意识到出问题”之前就已经物理切断了危险通路。更关键的是它支持“自动重试”Auto-Retry和“锁存”Latch两种故障处理模式。工业设备要求“故障可恢复”所以通常选Auto-Retry每次关断后等待tRETRY可配最小1ms再尝试软启动而医疗设备要求“故障必须人工干预”才选Latch。这种灵活性是纯硬件方案无法提供的。第四宽压输入与低功耗待机。工作电压2.7–24V覆盖从单节锂电3.3V到工业24V、48V系统的全部常见场景。待机电流仅15μA典型值远低于同类竞品如Infineon的TDA38640待机电流为45μA。这点对电池供电的嵌入式环境监控节点至关重要——一个节点若因eFuse待机功耗高而缩短3个月续航现场维护成本就翻倍。第五I²C数字接口与丰富状态寄存器。它提供标准I²C接口支持100kHz/400kHz包含16个状态/配置寄存器涵盖VIN/VOUT电压、ILIM设置值、FAULT标志OCP/OVP/UVP/TSD/REV、重试次数、软启动时间等。这意味着MCU无需额外ADC、比较器、定时器就能完整掌握整个电源路径的健康状态。对比那些只有“FAULT#”模拟引脚的芯片如MAX17524后者只能告诉你“出错了”却无法告诉你“错在哪、多严重、持续多久”。提示选型时务必注意封装。TPS259483AYWPR 的“YWPR”后缀代表5mm×6mm VQFN封装底部有散热焊盘热阻θJA≈35°C/W。若你的PCB没有铺铜散热区或环境温度长期60°C必须降额使用——比如标称5A实际建议最大持续电流设为3.5A并在固件中加入温度补偿逻辑。2.2 TM4C123GH6PMI为什么不用STM32或ESP32有人会问既然TPS259483AYWPR自己就能完成基础保护为何还要加一颗MCU答案是eFuse管“力”MCU管“脑”。TPS259483AYWPR 再强大也只是执行预设规则而TM4C123GH6PMI 能让这套规则变得智能、可学习、可追溯。选择TM4C123GH6PMI而非更常见的STM32F4或ESP32有四个现实理由第一原厂生态无缝协同。TI自家的eFuse和自家的MCU驱动库、参考设计、应用笔记SLVA822、SPRUHZ7全部配套。TI提供的TivaWare C Series软件包中直接包含tps25948.h驱动文件内含完整的I²C读写、寄存器映射、故障解析函数。我实测过从初始化到读取一次VOUT电压代码不到20行且经过TI官方验证。而用STM32去驱动TPS259483AYWPR你需要自己写I²C时序、查寄存器手册、处理ACK/NACK、校验CRC——新手至少花两天调试通信还可能因时序偏差导致读取乱码。第二ADC性能直击工业痛点。TM4C123GH6PMI 的12位ADC采样率高达1MSPS且支持硬件平均4/8/16/32次、可编程触发源定时器、比较器、GPIO边沿。在电源监控中这意味着你能用同一颗ADC既采样TPS259483AYWPR的VOUT反馈电压通过分压电阻又采样外部0.01Ω分流电阻上的压降计算真实负载电流还能同步采集环境温度传感器如TMP102数据全部在单次扫描周期内完成。STM32F4的ADC虽也12位但其DMA触发链路复杂多通道同步采样需精细配置ESP32的ADC则存在显著非线性尤其在低电压段实测误差达±3%无法用于精密电流监测。第三外设资源精准匹配电源管理需求。它内置4个模拟比较器Comparator每个均可配置为窗口比较器Window Comparator即同时监控上限和下限。我们可以将其中一个比较器的输入接VOUT分压信号-输入接一个DAC输出TM4C123GH6PMI自带12位DAC这样就能实现“电压越限即硬件中断”响应速度比ADC软件判断快10倍。而STM32的比较器多用于低功耗唤醒缺乏窗口模式ESP32干脆没集成比较器全靠GPIOADC轮询延迟不可控。第四工业级可靠性认证完备。TM4C123GH6PMI 的“M”后缀代表-40°C to 105°C工业级温度范围“I”后缀代表符合AEC-Q100 Grade 2105°C车规标准。其ESD防护达±4kV HBM远超STM32F4的±2kV。在变频器旁、配电柜内、户外机箱中这种等级的抗扰能力不是锦上添花而是生存底线。我曾用同一块PCB分别焊接STM32F407和TM4C123GH6PMI在30kW变频器满载运行时前者频繁复位后者连续72小时无异常——根本差异就在IO口的瞬态抑制能力。注意TM4C123GH6PMI 的I²C外设默认为标准模式100kHz但TPS259483AYWPR 支持快速模式400kHz。若需高频轮询如每10ms读一次所有寄存器必须在初始化时启用快速模式并确保外部上拉电阻≤2.2kΩ推荐1.8kΩ否则时钟拉伸会导致通信超时。2.3 组合价值112的系统级收益单独看TPS259483AYWPR 是优秀的“肌肉”TM4C123GH6PMI 是可靠的“大脑”。但二者结合产生了三个质变故障根因定位能力当发生OCP过流时TPS259483AYWPR 只能告诉你“电流超了”但不知道是电机堵转、MOSFET击穿还是PCB短路。而TM4C123GH6PMI 可同步记录故障前100ms的VOUT电压波形ADC高速采样、负载电流变化率di/dt、环境温度、甚至CAN总线上报的电机指令。这些数据打包存入Flash维修人员扫码即可看到完整故障快照而不是凭经验“换保险丝试试”。自适应保护策略工业负载特性随工况变化。例如某台数控机床主轴电机在冷态启动时浪涌电流达8A热态时仅5A。若限流值固定为6A冷态必误触发若设为9A则热态短路时保护失效。本方案中TM4C123GH6PMI 可根据温度传感器读数动态计算当前允许的最大浪涌电流并通过I²C实时更新TPS259483AYWPR的ILIM寄存器——真正实现“保护随环境自适应”。远程运维接口TM4C123GH6PMI 的USB Device接口可虚拟成CDC类串口上位机软件如Python脚本直接发送命令“READ FAULT LOG”、“SET ILIM 4500”、“ENABLE AUTO-RETRY”。这意味着现场工程师无需拆机、无需JTAG用一根USB线就能完成参数重配和日志导出。这对蓝桥杯嵌入式赛题中的“远程设备管理”模块、或企业级嵌入式linux项目中的设备健康代理healthd daemon都是现成的底层支撑。这种“专用芯片通用MCU”的架构已成为高端工业控制器、电力电子设备、车载网关的主流设计范式。它既规避了ASIC开发周期长、成本高的风险又比纯MCU方案用GPIO模拟电源开关更可靠、更高效。理解这一点你就抓住了嵌入式硬件工程师与普通单片机爱好者的分水岭。3. 核心电路设计与关键参数计算从原理图到PCB落地3.1 电源路径主回路如何让TPS259483AYWPR“不发热、不误动、不断联”TPS259483AYWPR 的核心参数是RDS(on)它直接决定导通损耗和温升。其典型RDS(on)为12mΩVIN12V, TA25°C但该值随温度升高而增大——这是设计中最易被忽视的陷阱。我们以一个典型工业场景为例输入24V持续负载电流3A环境温度最高70°C。导通损耗计算如下$$ P_{cond} I_{load}^2 \times R_{DS(on)} $$但RDS(on)不是常数。查阅数据手册Figure 6-10可知在TJ100°C时RDS(on)升至18mΩ。而结温TJ由下式决定$$ T_J T_A P_{total} \times \theta_{JA} $$其中θJA为结到环境热阻VQFN封装带散热焊盘典型值35°C/W。Ptotal包括导通损耗Pcond和静态电流损耗Pquiescent约1.5mW可忽略。代入$$ T_J 70 (3^2 \times 0.018) \times 35 70 5.67 75.67°C $$此时RDS(on)仍接近12mΩ温升可控。但如果负载电流升至4A$$ P_{cond} 4^2 \times 0.012 0.192W $$$$ T_J 70 0.192 \times 35 76.72°C $$看似安全但注意这是稳态计算。实际中电机启动瞬间电流可达10A持续10ms。此时瞬时功耗为$$ P_{peak} 10^2 \times 0.012 1.2W $$虽然时间短但热量会累积在硅片上。若散热焊盘面积不足如仅2mm×2mm局部热点温度可能超125°C触发热关断TSD。因此PCB设计必须满足散热焊盘PowerPAD必须通过≥8个直径0.3mm的过孔连接到内层大面积铺铜建议≥2cm²过孔中心距≤1mm周围禁止布放高热器件如DC-DC电感、MOSFET输入/输出走线宽度≥2mm1oz铜厚以降低线路电阻引入的额外压降。另一个关键点是输入电容CIN选型。TPS259483AYWPR 要求CIN ≥ 10μF且ESR ≤ 50mΩ。这是因为CIN承担着吸收输入端电压尖峰如继电器断开时的反电动势和提供浪涌电流的任务。我曾用4.7μF陶瓷电容X7R0805在24V系统中测试当接入一个2A阻性负载时VOUT出现明显下陷跌至21V导致MCU复位。更换为22μF钽电容ESR75mΩ后下陷改善但仍有1.5V波动。最终采用10μF X7R1206并联10μF铝电解ESR25mΩVOUT纹波稳定在±50mV以内。这里的关键是陶瓷电容响应快但容量小电解电容容量大但ESR高必须并联使用。实操心得CIN的接地路径必须最短我见过太多设计把CIN放在TPS259483AYWPR的VIN引脚旁边但GND引脚却连到远处的电源地平面导致高频噪声耦合。正确做法是CIN的GND焊盘直接打孔连接到TPS259483AYWPR的PowerPAD再由PowerPAD统一接到主地平面。3.2 电流检测与分压网络如何让ADC读数“真准稳”TPS259483AYWPR 的VOUT引脚输出的是经内部缓冲的输出电压可用于反馈监测。但其输出阻抗约100Ω不能直接接MCU的ADC——因为TM4C123GH6PMI的ADC输入阻抗虽高约100kΩ但采样保持电容14pF会在采样瞬间抽取电流导致VOUT短暂跌落影响精度。解决方案是加一级电压跟随器Voltage Follower。我们选用TI的TLV9062轨到轨输入输出GBW10MHz成本0.3美元。电路极其简单运放同相端接VOUT反相端与输出短接。但要注意两点TLV9062的供电必须与TPS259483AYWPR的VOUT同源即接在TPS259483AYWPR的OUT端否则当TPS259483AYWPR关断时运放失电输出悬空可能损坏MCU ADC引脚。因此TLV9062的V引脚应通过一个肖特基二极管如BAT54接到TPS259483AYWPR的OUTV-接地。分压电阻必须低温漂。VOUT范围0–24V而TM4C123GH6PMI的ADC参考电压VREF3.3V故分压比需为24:3.3≈7.27。我们选R168kΩ上臂R210kΩ下臂实际分压比7.8略保守。电阻必须选用±1%精度、100ppm/°C温漂的金属膜电阻。曾用碳膜电阻温漂500ppm/°C在机箱内温度从25°C升至60°C时ADC读数漂移达0.8V导致电压告警误触发。对于负载电流检测TPS259483AYWPR 内置CSA但其输出是差分信号CSOUTP/CSOUTN需外部运放转换为单端。更优方案是放弃CSOUT改用外部四线制Kelvin分流电阻专用电流检测放大器。原因有三一是CSOUT的增益误差±5%而专用芯片如INA240误差仅±0.5%二是CSOUT带宽仅100kHz无法捕捉快速di/dt三是四线制可消除PCB走线电阻引入的误差。我们选用0.005Ω5mΩ、1W功率、四端子结构的锰铜分流电阻如WSHP2818。电流检测放大器用INA240A1增益50V/V共模电压范围-4V to 80V。INA240的输出VOUT接TM4C123GH6PMI的ADC0其输入范围0–3.3V对应电流0–66A因50×0.0050.25V/A3.3V/0.2513.2A但需留余量故标称66A。注意INA240的REF引脚必须接1.65V偏置由分压电阻或TLV431提供否则单电源供电时负向电流无法检测。提示分流电阻的PCB布局是成败关键。必须严格四线制两条粗走线≥3mm宽承载主电流两条细走线0.2mm宽仅用于采样且采样点必须紧贴分流电阻的电压检测焊盘禁止与主电流走线共用过孔。我曾因采样线与主电流线平行走线5mm引入0.3mV感应电压导致1A电流读数偏差60mA。3.3 TM4C123GH6PMI 最小系统与I²C通信稳定性设计TM4C123GH6PMI 的最小系统看似简单但在工业环境中极易出问题。最关键的三个细节第一晶振电路必须加负载电容匹配。手册推荐8MHz晶振配12pF负载电容但实测发现若PCB走线长10mm寄生电容会叠加导致起振困难或频率漂移。我的做法是在晶振两端各焊一个可调电容5–20pF上电后用示波器测XTAL引脚波形调整至波形干净、幅度1.5Vpp再用固定电容替换。曾因省略此步某批次板子在低温-20°C下无法启动根源就是晶振停振。第二I²C上拉电阻必须动态适配。TPS259483AYWPR 的I²C引脚SDA/SCL为开漏输出需外部上拉。理论值计算$$ R_{pullup} \frac{V_{CC} - V_{OL}}{I_{OL}} $$其中VCC3.3VVOL0.4VIOL3mA得R967Ω。但这是下限。上限由总线电容决定$$ R_{pullup} \frac{t_r}{0.8473 \times C_{bus}} $$其中tr为上升时间快速模式要求≤300nsCbus为总线电容含PCB走线、芯片引脚电容实测约100pF得R3.5kΩ。因此上拉电阻应在1kΩ–3.3kΩ间。我最终选用2.2kΩ实测上升时间220ns下降时间180ns通信稳定。第三I²C地址冲突预防。TPS259483AYWPR 的I²C地址由ADDR引脚电平决定ADDR接地为0x20接VCC为0x21。但TM4C123GH6PMI 自身的I²C外设也有默认地址如I2C0为0x08。若系统中还有其他I²C设备如EEPROM、温度传感器必须确保地址不重叠。我的做法是在原理图中为ADDR引脚预留0Ω电阻跳线方便后期修改同时在固件初始化时先扫描总线Send START 7bit address READ确认目标地址存在后再通信避免“地址错误”导致MCU死锁。实操心得I²C通信失败的80%原因是时序问题。务必在示波器上抓取SDA/SCL波形重点看START条件SCL高时SDA下降、STOP条件SCL高时SDA上升、ACK脉冲第9个时钟周期SDA被拉低。若ACK缺失大概率是地址错误或从机未供电若波形畸变检查上拉电阻和走线长度。4. 固件开发与实操流程从裸机驱动到故障日志分析4.1 TivaWare驱动移植与I²C基础通信TI的TivaWare库是TM4C123GH6PMI开发的基石但直接使用其i2c_master.c会遇到两个坑一是默认配置为标准模式100kHz需手动切换至快速模式二是中断驱动方式在高频率轮询时易丢数据。我的方案是改用轮询模式Polling精简驱动。首先初始化I²C0PB2/SCL, PB3/SDA// 使能GPIOB和I2C0时钟 SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB); SysCtlPeripheralEnable(SYSCTL_PERIPH_I2C0); // 配置PB2/PB3为I2C功能 GPIOPinTypeI2CSCL(GPIO_PORTB_BASE, GPIO_PIN_2); GPIOPinTypeI2C(GPIO_PORTB_BASE, GPIO_PIN_3); // 设置I2C0为快速模式400kHz I2CMasterInitExpClk(I2C0_BASE, SysCtlClockGet(), false); // falsefast mode关键在I2CMasterInitExpClk的第三个参数false表示快速模式true才是标准模式。很多开发者卡在这里以为函数名带“ExpClk”就一定是标准模式。然后编写一个健壮的I²C写函数Write Bytebool I2C_WriteByte(uint8_t slaveAddr, uint8_t regAddr, uint8_t data) { // 发送START I2CMasterSlaveAddrSet(I2C0_BASE, slaveAddr, false); I2CMasterDataPut(I2C0_BASE, regAddr); I2CMasterControl(I2C0_BASE, I2C_MASTER_CMD_SINGLE_SEND); // 等待完成 while(I2CMasterBusy(I2C0_BASE)) {} if(I2CMasterErr(I2C0_BASE) ! I2C_MASTER_ERR_NONE) return false; // 发送数据字节 I2CMasterDataPut(I2C0_BASE, data); I2CMasterControl(I2C0_BASE, I2C_MASTER_CMD_SINGLE_SEND); while(I2CMasterBusy(I2C0_BASE)) {} return (I2CMasterErr(I2C0_BASE) I2C_MASTER_ERR_NONE); }注意I2CMasterControl的第二个参数必须是I2C_MASTER_CMD_SINGLE_SEND而非I2C_MASTER_CMD_BURST_SEND——后者用于多字节发送但TPS259483AYWPR的寄存器写入是单字节操作。读取寄存器则稍复杂需分两步先发送寄存器地址写操作再读取数据读操作bool I2C_ReadByte(uint8_t slaveAddr, uint8_t regAddr, uint8_t *pData) { // 步骤1写寄存器地址 I2CMasterSlaveAddrSet(I2C0_BASE, slaveAddr, false); I2CMasterDataPut(I2C0_BASE, regAddr); I2CMasterControl(I2C0_BASE, I2C_MASTER_CMD_SINGLE_SEND); while(I2CMasterBusy(I2C0_BASE)) {} if(I2CMasterErr(I2C0_BASE) ! I2C_MASTER_ERR_NONE) return false; // 步骤2读取数据 I2CMasterSlaveAddrSet(I2C0_BASE, slaveAddr, true); I2CMasterControl(I2C0_BASE, I2C_MASTER_CMD_SINGLE_RECEIVE); while(I2CMasterBusy(I2C0_BASE)) {} *pData I2CMasterDataGet(I2C0_BASE); return (I2CMasterErr(I2C0_BASE) I2C_MASTER_ERR_NONE); }实操心得首次调试I²C务必用逻辑分析仪抓波形。我曾因I2CMasterControl调用顺序错误先发数据再设地址导致SDA一直被拉低总线锁死。解决方法是在每次I²C操作前后添加I2CMasterDisable(I2C0_BASE)和I2CMasterEnable(I2C0_BASE)强制复位外设。4.2 TPS259483AYWPR 寄存器配置与保护策略实现TPS259483AYWPR 的核心寄存器有5个按优先级排序寄存器地址功能推荐值配置时机CONFIG10x00使能、模式选择、软启动时间0x80 (EN1, MODE0, SS0)上电初始化ILIM0x01限流阈值单位10mA0x12C (300 → 3A)运行时可调FAULT_MASK0x02故障屏蔽位0x00 (全使能)初始化STATUS0x03只读状态寄存器-定期轮询VOUT0x04VOUT电压12位LSB10mV-实时监测配置流程如下写CONFIG1I2C_WriteByte(0x20, 0x00, 0x80)。注意0x80中bit71使能芯片bit1:000选择“恒流折返”模式bit20设置软启动时间为1ms最小值。写ILIMI2C_WriteByte(0x20, 0x01, 0x12C)。此处0x12C是16位值需分两次写先写高字节0x01再写低字节0x2C。TPS259483AYWPR 的I²C协议要求对16位寄存器写入时必须先发高字节地址再发数据高字节再发数据低字节。写FAULT_MASKI2C_WriteByte(0x20, 0x02, 0x00)。若想屏蔽反向电流故障如允许电池充电可设为0x10。保护策略的核心是状态轮询与动态响应。我们设定100ms为一个监控周期void PowerPath_Monitor(void) { uint8_t status, vout_h, vout_l, ilim_h, ilim_l; uint16_t vout_raw, ilim_raw; // 读STATUS寄存器 if(I2C_ReadByte(0x20, 0x03, status)) { if(status 0x01) { // OCP bit set // 过流处理记录时间戳降低ILIM触发告警 Log_Fault(OCP, GetTimestamp()); ilim_raw Read_ILIM(); // 先读当前值 ilim_raw (ilim_raw 200) ? ilim_raw - 100 : 200; // 降额1A Write_ILIM(ilim_raw); GPIO_PinWrite(GPIO_PORTF_BASE, GPIO_PIN_1, 1); // 点亮红色LED } } // 读VOUT电压 if(I2C_ReadByte(0x20, 0x04, vout_h) I2C_ReadByte(0x20, 0x05, vout_l)) { vout_raw ((uint16_t)vout_h 8) | vout_l; float vout vout_raw * 0.01f; // LSB10mV if(vout 22.0f || vout 26.0f) { Log_Warning(VOUT_OUT_OF_RANGE, vout); } } }注意TPS259483AYWPR 的VOUT寄存器是12位但地址0x04
返回列表