ARTICLE DETAIL

资讯详情

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

STM32MP2x配套PMIC芯片STPMIC25选型配置与调试全解析

STM32MP2x配套PMIC芯片STPMIC25选型配置与调试全解析 要说这两年嵌入式圈子里哪颗MPU讨论度最高STM32MP2x肯定排得上号。但很多人拿到开发板第一眼不是看CPU跑分而是盯着供电部分发愣为什么明明有DC-DCST还得专门配一颗PMIC这颗PMIC和MP2x的roadmap到底是怎么对上的这篇文章就把这些事一次讲透。我结合最近的实测和ST官方公开的PMIC路线图从“为什么需要PMIC”讲到“STPMIC25怎么选、怎么用、怎么调”再落到Linux侧的设备树配置和硬件调试排障。适合正在做MP2x方案选型或者刚拿到样片开始画板的工程师尤其对“电源方案怎么定”还没完全想清楚的人会有直接帮助。1. STM32MP2x的供电架构为什么一个MPU绑定了专用PMIC1.1 STM32MP2x是颗什么样的芯片STM32MP2x系列是ST进入应用处理器赛道后的新一代产品核心用的是Cortex-A35主打能效比和A核M核异构架构。它不像STM32MP1那样只用在入门级工控MP2x几个型号覆盖了从单核到双核、从入门到带GPU/VPU的配置目标场景直接对准工业HMI、边缘计算、机器视觉、智能网关这一类需要跑Linux但又不想上太大SoC的场合。我自己的体会是玩MP2x的工程师大部分是从MP1或者NXP的i.MX系列转过来的。转过来第一件事不是看性能参数而是看供电方案——因为这类芯片的供电复杂度直接决定你的硬件设计周期和最终的量产良率不可轻视。有一说一ST这次在MP2x配套上的思路很清晰芯片层面把应用处理器该有的接口、安全特性、AI加速都补齐信号完整性上用新一代封装工艺做保障而电源管理这块则明确引导用户走“MPU专用PMIC”的组合路线而不是像MP1时代那样允许大家拿分离电源方案硬拼。也就是说在官方参考设计中PMIC不再是一个“选装件”而是整个供电架构的核心。1.2 MPU供电和MCU供电的本质差异用单片机的时候一颗LDO或者一颗普通DC-DC就能伺候好3.3V进来内核1.8V一拉齐活。但到了MPU这个级别情况完全不一样。第一电源轨数量暴增。核心电压、IO电压、DDR电压、PLL模拟电压、USB收发器电压……每个轨要求不同不能拿一根总线到处拉。MP2x内部同时有A核、M核、GPU/VPU、DDR控制器每种数字模块的电压域和噪声容忍度都不同要是供电网络设计得过于粗糙最直接的反应就是系统跑着跑着随机挂掉。第二电压精度要求高。DDR那一路上电压波动稍微超一点内存训练直接失败系统起不来。DDR4/DDR3L对VDD的容差要求通常是正负3%到5%而MPU核心电压在DVS动态调节过程中还要能快速切换这套组合拳不是普通电源芯片能轻松接住的。第三时序有严格顺序。上电时各路电源谁先谁后、间隔多少毫秒数据手册里写得明明白白不能随便省。如果核心电压先于IO电压起来芯片内部的静电防护二极管可能形成闩扣电流路径轻则系统异常重则损伤芯片。这个坑在量产产品中出现过不少次网上搜索“MPU上电时序导致损坏”能看到大量讨论。第四负载动态变化大。A核频率变频时核心电流会瞬间跳变DC-DC的瞬态响应必须要跟得上。尤其在跑Linux的工业设备里CPU负载是突发的上一毫秒还在idle下一毫秒可能就满载跑算法核心电流从几百毫安跳到两三安培只需要几微秒。普通DC-DC那个环路带宽不够电压跌落直接触发欠压复位。如果用分离器件去拼不是拼不出来而是每一片板子都有一段血泪史要么DC-DC的反馈补偿调不好要么时序电路用逻辑门搭得太勉强要么一负载突变就欠压复位。专用PMIC的作用就是把这些固化成芯片内部的逻辑把风险和调试成本打包带走。1.3 直接拿DCDC/LDO拼板遇到的那些坑有朋友问我不买PMIC手上正好有2颗DC-DC和3颗LDO能用吗技术上确实能但有几个坑要先想清楚。第一时序。MP2x手册要求各路电源上电顺序有明确先后而且间隔不能太长。分离方案要用电源监控芯片或者CPLD/FPGA来做时序管理这就把简单问题复杂化了BOM多出好几颗芯片不说每次改时序都要改逻辑极其痛苦。第二DVS。核心电压要跟着频率动态走用普通DC-DC你得用I2C或GPIO去切反馈电阻或者选带VID功能的芯片这类芯片单价不低加起来未必比一颗PMIC便宜。更麻烦的是VID切换的速度和精度很难做到MPU要求的水准试过才知道。第三芯片面积和调试成本。一堆分离器件占板面积大布局布线更挤而且每次上板前都要重新算一遍反馈分压电阻调哪个参数都要拿示波器重新抓波形。专用PMIC把这些都做成寄存器配置了改一个值就行省心很多。第四也是最容易被忽略的一条故障排查维度。分离方案出了问题你得一个一个模块查是DC-DC环路不稳、电感饱和、还是时序逻辑毛刺而PMIC方案只需要查寄存器配置和少数几个外设参数排查路径大幅缩短。量产后的现场返修这个差距在时间成本和人力成本上会被放大。所以ST官方给MP2x配PMIC不是强买强卖而是这条路确实更省成本、更稳尤其对量产型号。我见过硬要用分离方案做MPU产品的团队最后没有一个不在迭代中回头改用PMIC的区别只是早改晚改。2. 看懂ST的PMIC路线图从STPMIC1到STPMIC252.1 STPMIC1留给MP1的遗产先看历史。STM32MP1系列刚出来的时候官方配套的PMIC叫STPMIC1。这颗芯片当时承担的任务就是把MP1需要的各路电源整理好同时提供I2C接口配置、上电时序管理、以及低功耗模式下关断不必要电源轨的功能。从STPMIC1身上能看出来ST做PMIC的思路从来不是做一颗通用电源芯片而是做一颗紧贴自家MPU的“电源管家”。这个策略的好处是软硬件协同Linux内核里直接写好了驱动设备树里配好regulator节点系统起起来就能控制各路电源。这一代产品给MP2x打下的基础主要体现在三方面一是Linux电源管理框架regulator subsystem已经跑通了驱动模型、设备树绑定、用户空间控制接口都有成熟案例二是积累了大量的现场供电问题数据哪些电源轨容易出噪声、哪些场景瞬态电流特别大、哪些寄存器配置容易踩雷ST心里有数到了新一代PMIC直接把这些问题从设计层面规避掉三是客户对“MPU配套PMIC”这个模式的接受度已经很高不需要再花时间教育市场。可以说没有STPMIC1这几年的市场验证STPMIC25不可能一上来就做得这么顺手。硬件产品最怕的不是功能少而是没经过足够多的现场考验就推向市场。2.2 STPMIC25是怎么配合MP2x的STPMIC25是ST针对STM32MP25x/MP23x/MP21x系列新推的配套PMIC。从命名就能看出来2系列配2系列。这颗芯片的输入范围很宽锂电池、USB供电、5V适配器都可以直接进内部集成了多路降压转换器BUCK和LDO提供MPU需要的各路供电轨。关键点是它沿用了I2C配置的方式而且寄存器集更丰富。MP2x的电源管理里很多状态切换需要软件参与比如进入低功耗模式时PMIC要按预定顺序关掉外设电源、保留唤醒所需的那一路这个过程完全可以通过I2C来完成软件驱动是现成的不用自己造轮子。我在评估板上测过STPMIC25最大感受是它的负瞬态响应做得好。A核突然跑高负载的时候核心电压跌落幅度小、恢复快比我之前用分离DC-DC的方案稳得多。另外它的待机功耗控制也比STPMIC1那代强不少整板待机电流降了一个档次。稳定性这块对量产产品来说太重要了。具体到电源轨设计STPMIC25的BUCK输出都带同步整流轻载时可以切PFM模式提升效率这个特性在做电池供电设备时特别有用。LDO部分则注重低噪声表现给PLL、模拟前端这类敏感负载供电时不会把开关噪声耦合进去。可以说这是一颗专门为“跑Linux的MPU系统”优化过的电源芯片而不是把一堆通用电源模块塞进一个封装里完事。2.3 Roadmap里的隐藏信息产品规划必须关注的三件事很多人第一次看到roadmap这个词会懵这其实不是某个硬件框架而是芯片厂商的产品路线图说白了就是厂商打算在什么时间点推出什么产品、维护到什么时候、下一代在哪里。对工程师和产品经理来说读roadmap要读出三层信息。第一生命周期承诺。你选了STPMIC25就得确认这颗料能供货多少年否则产品做到一半芯片停产整个项目白干。芯片原厂在roadmap里给的长期供货承诺是硬件选型最重要的定心丸。ST在工业市场一贯强调10年供货承诺MP2x平台相关的PMIC也会享受同等的生命周期保障这一点在选型评审时要跟FAE确认落实到书面。第二产品系列的梯度。STPMIC25不是一个孤零零的型号它在ST的PMIC路线图里是有位置的——往下有目标MP21x低功耗平台的型号往上有面向更高性能MP25x的型号。你选型的时候要看得懂这盘棋才知道自己的产品落在哪个区间后续还能不能向上兼容。比如你做的是入门级HMI选了MP21x配低功耗PMIC如果产品后期性能不够要升级到MP25x那电源方案是不是要跟着换提前看清路线图就能避免这种返工。第三新功能的引入节奏。像DVS、低功耗模式增强、更细粒度的电源轨控制这些新功能是分阶段进入产品线的。如果你做的是功耗敏感产品就要盯住PMIC路线图里低功耗那一栏的更新时间点早做预研。ST的roadmap里也不光是PMIC还包括整个MP2x平台的演进例如无线连接、边缘AI加速等方向都有布局但本文聚焦电源管理这条线其他部分不展开。ST在官方roadmap上把“MPUPMICLinux驱动”作为一个整体来发布这点值得点赞。因为硬件选型不是只看一颗芯片还要看整个生态链顺不顺。电源、主控、软件驱动、文档、开发工具任意一环脱节都会拖慢项目进度。整体发布意味着你评估一颗芯片时整个配套的成熟度都已经被原厂验证过一遍比自己去攒方案靠谱得多。3. STPMIC25核心特性拆解寄存器、时序与DVS3.1 电源轨分布与负载能力STPMIC25的电源轨分布大致是这样的具体以最新数据手册为准几路高效率同步BUCK用来带核心电压、DDR电压和IO电压几路LDO用来带模拟电路、低速外设和需要低噪声的模块另外还有一路带开关控制的电源轨可以用来做负载开关在待机时彻底切断某些外设的供电。设计时要挨个核对每一路的最大负载电流是否超出PMIC能力。核心那一路通常是压力最大的因为A核满载时电流会冲到几安培。如果你选的BUCK输出电流不够要不就降频运行要不就得外挂电源这都不划算。我一般会留至少30%的裕量宁大勿小。举个例子如果你评估板的MP2x满负载核心电流是2A那BUCK1至少选能稳定输出2.6A以上的配置如果产品还要跑GPU负载预留的裕量还要更大。这里不能只看数据手册里标的最大值还要考虑高温环境下MOSFET的导通电阻会上升、电流能力会降额所以热设计上也要留足余量。LDO部分虽然单路电流不大但要注意输入输出电压差。压差大、电流也不小的时候LDO的功耗会相当可观板上温度一高PMIC整体的热预算就会吃紧。所以LDO这路能不用高压差就不要用能用BUCK就直接用BUCK这是一条高频踩雷的经验。3.2 上电时序是怎么编排出来的PMIC里有一套时序控制逻辑每一路电源的开启顺序、等待时间、电压爬升斜率都是通过寄存器配置的。默认配置官方已经帮你调好了直接用来点板没问题但如果你想在某个电源轨上挂额外负载或者调整某个外设的供电时间点就需要自己改时序。改动时要注意三点。第一必须先看MP2x手册的Power Up/Down参数表确保每一处的先后关系满足要求不要想当然去调整第二改完以后要用示波器去实测各路的齐纳时间和电压爬升曲线不要只看寄存器里写了什么就当完成了因为PCB走线阻抗和负载电容都会影响实际波形第三下电时序和上电时序同样重要很多人只盯上电结果下电时某路电压倒灌把芯片搞坏了。我见过一个案例有工程师为了让外设初始化更可靠把某路LDO的启动时间调慢了200ms结果系统起来后DDR训练总是失败。排查了很久才发现是那路LDO的启动时间超出了MP2x规定的最晚电压建立时间窗口DDR控制器在电源未稳定时就开始初始化自然不稳定。这类问题隐蔽性很强建议改完时序后至少跑100次冷启动循环验证一下。3.3 I2C接口与动态电压调节STPMIC25通过I2C接到MPU的I2C控制器上Linux里把PMIC注册成一个regulator设备应用层通过regulator框架调电压底层就是I2C读写寄存器。I2C总线速度通常跑在400kHz或者1MHzPMIC的寄存器读写响应要足够快不能影响电源管理的实时性要求。DVS动态电压调节是PMIC最有价值的功能之一A核在高频运行时需要较高核心电压低频或者进入idle时可以降下来。通过Linux的cpufreq驱动和regulator框架联动系统可以根据负载实时调整核心供电电压这样既保证性能又省电。实测下来一个典型的工业HMI负载场景开启DVS后整板功耗能降10%到20%具体数据跟负载模型有关但这个趋势很一致。配置DVS时要注意电压切换时间。如果切换太快PMIC的环路可能没跟上导致电压过冲或跌落太慢又会影响变频响应。这些参数一般都在设备树里配默认值够用但不建议随便拉高改完还要做过压欠压保护测试。另外DVS不是只有两个电压档而是可以做成多档根据cpufreq的频点动态映射到不同电压。这需要驱动里配置好每个频点对应的电压值并且确保切换顺序是“先升压再升频、先降频再降压”否则电压和频率不匹配芯片就会工作在不稳定状态。这个顺序问题软件上很容易写反调试时建议打开内核的regulator event trace逐帧看电压切换和频率切换的先后关系。4. Linux驱动侧怎么把PMIC拉起来4.1 Regulator框架下的DT配置这部分是软件工程师最关心的。ST做了两件事一是把PMIC驱动合入了Linux内核主线二是把STPMIC25的数据手册翻译成了设备树binding文档。拿到评估板后用mainline内核设备树里加上对应的regulator节点就可以把各路电源管起来了。我贴一个简化版的设备树片段基于实际项目的结构调整i2c2 { pmic: pmic33 { compatible st,stpmic25; reg 0x33; interrupts 7 IRQ_TYPE_LEVEL_LOW; regulators { buck1: buck1 { regulator-name vdd_core; regulator-min-microvolt 800000; regulator-max-microvolt 1350000; regulator-always-on; }; buck2: buck2 { regulator-name vdd_ddr; regulator-min-microvolt 1200000; regulator-max-microvolt 1200000; regulator-always-on; }; ldo1: ldo1 { regulator-name vdd_io; regulator-min-microvolt 1800000; regulator-max-microvolt 3300000; }; }; }; };注意几个细节。regulator-always-on不要滥用只有真正需要常供电的轨才加加了以后PMIC在低功耗模式下就不能关掉这路输出会影响整板待机功耗。regulator-min/max-microvolt要跟硬件需求对齐乱填会导致驱动把电压调到器件不支持的范围轻则工作异常重则烧芯片。interrupts要接对PMIC的INT脚否则状态上报会丢过压欠压保护触发了你都不知道。驱动初始化时内核会按依赖顺序注册regulator其他驱动通过phandle引用对应的电源轨。比如SD卡控制器驱动可能需要引用vmmc-supply以太网PHY驱动需要引用phy-supply这些引用关系在设备树里要一一对应漏一个就可能导致某个外设在驱动probe时拿不到电源。4.2 实际调试中的三个手段调PMIC最常用的三个手段读寄存器、抓波形、看日志。读寄存器最直接I2C工具在调试阶段能救命。比如用i2cget/i2cset直接读STPMIC25的寄存器看电压配置到底是写没写进去i2cdetect -y 2 # 先看I2C2总线上有没有0x33 i2cget -y 2 0x33 0x00 # 读寄存器0x00确认I2C通信正常 i2cset -y 2 0x33 0x10 0x3f # 写寄存器做配置注意i2cset是个危险命令写之前一定要确认寄存器的地址和值否则一个手滑可能把电源输出关掉板子直接掉电。调试阶段建议在PMIC的输入侧串一个电流表写寄存器之前先看一眼当前功耗万一写崩了能从电流变化立刻判断出来。抓波形主要是指示波器看各路上电时序和电源纹波。时序异常时这一步几乎是唯一可靠的定位手段因为寄存器日志只能告诉你“软件按顺序写了”没法告诉你“硬件上电压是不是真的按顺序起来了”。示波器要用至少4通道同时抓核心电压、DDR电压、IO电压和复位信号才能看到完整的时序关系。看日志是把内核里regulator框架的debug信息打开启动时查看注册了哪些regulator、每路电压是多少、谁在请求电压变化。配合tracepoint能看出DVS是不是正常触发了。最简单的办法是mount -t debugfs none /sys/kernel/debug cat /sys/kernel/debug/regulator/regulator_summary这个文件会列出所有regulator的当前状态、电压、使用者和引用计数。如果某路电压跟预期不一致很快就能定位到是哪个驱动把它拉偏了。4.3 功耗调优的切入顺序拿到一块板子做功耗调优我建议按这个顺序切先看静态功耗再动态。静态功耗排查时把外设逐一关掉找到耗电大户这一步能发现大多是外设没有真正断电——PMIC那一路虽然关了但电平没有拉低导致漏电。动态功耗就要结合系统的实际负载了。先确认DVS是否正常工作再考虑关掉不需要的电源轨最后再看是否能把某路BUCK切到更低功耗的PFM模式。注意PFM模式在轻载时效率高但负载一上来瞬态响应变差要在性能和功耗之间权衡。整板功耗的测量也有一些门道。不要只看总电流要分电源域测这样才知道功耗到底花在哪里。如果板子设计时没预留电流测量点可以用精密采样电阻加上电流探头来测但精度和带宽都要注意。更实用的办法是在PMIC的每路输出上接入纳米耗电的电流监测芯片通过I2C读实时电流这样在系统跑业务时也能看到功耗变化比拿万用表一下一下量效率高得多。这种调优不是一蹴而就的我习惯每次只改一个参数测一组数据记录下来再改下一个。如果没有数据支撑就盲目改最后很难判断到底是哪个改动起作用了。建议建一个功耗记录表把系统状态、CPU频率、外设开关状态、各路电流、整板功耗都记录下来形成一个调优日志后续产品迭代也能直接参考。5. 硬件设计上的避坑清单5.1 电感电容选型PMIC周围的BUCK电感电容不是随便挑的。电感的饱和电流必须大于最大负载电流加纹波电流否则电感饱和后效率骤降、发热严重电容要考虑容值和ESR直接影响输出电压纹波和瞬态响应。选电感时有一个经验公式供参考纹波电流通常取满载电流的20%到30%。比如负载2A纹波电流取0.5A左右那么电感的纹波电流峰值就是2.25A饱和电流应该至少比这个值再大20%也就是2.7A以上。另外还要注意电感的DCRDCR太大轻载效率会明显变差。电容方面BUCK输出电容建议使用X5R/X7R材质的陶瓷电容注意直流偏置特性——很多陶瓷电容在额定电压下容量会跌到标称值的一半甚至更低。所以选容值时要留足余量。除了陶瓷电容输出端可以再并一颗大容量的钽电容或者电解电容用来应对大的负载瞬变这个设计在很多MPU评估板上都能看到。ST通常在数据手册里给出推荐的电感电容范围和具体型号。我的经验是优先用参考设计同款申请样品测一轮确认没问题再考虑国产替代。替代料的规格书参数看起来可能一样但实际ESR、温度特性、直流偏置下的容量衰减差异很大一定要上板实测。5.2 布局布线的注意点PMIC的布局核心原则是“功率回路要短”。BUCK的输入电容、电感、输出电容要尽量靠近芯片形成小环路否则开关节点的高频噪声辐射出去EMC测试就有得受了。这里有一个需要重点控制的路径BUCK开关节点的铜皮面积不要铺得过大因为它是高频噪声的源头铺得越大辐射越强但也不要太细因为要过较大的电流。建议按照ST参考设计里给出的开关节点铜皮尺寸来做这是一个典型的“热和EMC的平衡点”靠经验很难一次做对参考官方设计是最快的路径。电源反馈引脚FB的走线也要注意。反馈走线要远离开关节点和电感采用开尔文接法直接连到输出电容的负载端避免把开关噪声引入反馈网络。另外PMIC的 AGND 和 PGND 要区分开在芯片底部通过过孔连接到完整的地平面不要让功率地电流流过模拟地的部分。另外PMIC底部的散热焊盘一定要可靠接地并且铺铜加过孔阵列散热。STPMIC25这类芯片满载时热耗不低如果散热没做好温度一高PMIC会降额甚至保护系统在负载高时莫名其妙重启就很头疼。过孔阵列的间距建议在0.8mm到1.0mm之间孔内径0.3mm外径0.6mm左右这样既能保证散热通路又不会让PCB加工难度和成本上升太多。我习惯在PMIC附近铺一块完整的地平面不要被走线割裂。这对信号完整性和EMC都有好处。再强调一句别把高di/dt的开关节点走线拉到板边否则辐射问题非常难处理。5.3 散热与热仿真散热这块很多工程师前期容易忽略。MP2x加PMIC整板功耗可能到几瓦甚至十几瓦如果产品是密闭壳体内部散热条件差热就会堆在PMIC上。建议原理图阶段就做一次粗略的热估算输入电压乘以输入电流减去输出功率就是PMIC的损耗再结合热阻参数估算结温看是否在安全范围内。举个例子12V输入、5V/2A输出输入功率约12W输出功率约10WPMIC损耗就是2W。如果散热焊盘的热阻是20°C/W那么PMIC结温会比环境温度高40°C。在常温25°C环境下结温是65°C看起来还好但如果产品工作在60°C的高温环境结温就会到105°C接近很多PMIC的125°C上限了这时就必须加强散热或者降额使用。有条件的话用热仿真软件做一轮是有价值的。没条件的话至少打样回来后用热电偶实测PMIC壳温满载跑一个小时看温度是否稳定如果结温接近上限就要重新评估散热方案了。热设计的大忌是等到系统测试时才发现过热那时候改板成本就高了。6. 常见故障排查速查表6.1 上电时序异常导致系统起不来现象按下复位后系统没有起来或者起来一段时间后自动复位。排查思路示波器抓各路上电波形先确认是否有电压没起来、时序是否错乱。这里建议用示波器的序列模式或者深存储模式把几十毫秒的上电过程完整记录下来不要只看几个快照。检查PMIC的配置有没有被人为改过恢复到默认值再试。很多时候是调试过程中手滑改了某个寄存器的值导致时序被破坏。确认复位信号释放的时机有时候不是电源没起来而是复位拉太早导致MPU在电压稳定前就开始初始化。可以试着把复位的延时拉到最大看问题是否消失。这个问题的隐蔽之处在于时序问题有时候不是每次都出现而是和温度、输入电压有关。如果输入电压偏低PMIC内部电路启动时间变长时序就会偏移。所以排查时建议把输入电压从低到高扫一遍看问题是否与输入电压相关。6.2 电源噪声导致DDR训练失败现象板子偶尔启动失败概率性DDR init fail。排查思路量DDR电压的纹波尤其是PSTpower supply transient阶段的波形纹波超了PMIC和DDR的规格就不行。检查BUCK的开关频率与DDR频率是否存在谐波干扰。尝试在DDR电源轨上增加电容或者调整PMIC的输出电容参数做补偿。我见过一个案例DDR训练失败的根因是BUCK的开关频率和DDR时钟频率的某个谐波正好重合产生了差拍干扰导致DDR控制器的信号完整性恶化。这种问题本质上是电源噪声耦合到了信号路径上单靠给电源加电容可能不够还要检查DDR走线的参考平面是否被割裂、是否有跨分割问题。6.3 I2C通信异常现象系统启动时打印PMIC I2C probe failed。排查思路确认I2C地址对不对STPMIC25的地址可能因为地址引脚电平而不同用i2cdetect扫一遍最稳。检查I2C上拉电阻阻值太大导致信号边沿太慢总线速度提不上去阻值太小则灌电流过大信号低电平稳不住。确认PMIC的INT脚是否异常拉低导致MPU一直认为有中断干扰了启动流程。I2C问题还有个常见的隐蔽原因PMIC的供电还没完全起来但MPU已经尝试通过I2C去配置它了。如果PMIC内部逻辑还在复位状态I2C通信就会失败。解决方法是确保PMIC的输入电压和内部LDO输出稳定后再启动I2C配置流程或者检查PMIC的复位引脚是否被正确拉高。我把这些做成速查表方便大家直接参考故障现象可能原因验证方法解决方案系统起不来上电时序不满足示波器抓时序恢复PMIC默认配置或按手册重设时序概率性DDR失败电源纹波超标抓DDR电源PST波形调整输出电容、增大去耦电容PMIC I2C探测失败地址或上拉错误i2cdetect扫描修正地址、调整I2C上拉电阻满载自动复位PMIC过温或过流读取PMIC状态寄存器改善散热、降低负载或调整限流点待机功耗超标外设未真正断电分电源域测电流检查GPIO电平、配置负载开关电压跌落触发复位DVS切换过快抓电压切换波形调大电压切换时间、分档切换6.4 一点个人经验最后分享一个我踩过的坑刚开始调STPMIC25时我以为寄存器默认值就是最优解结果某路外设供电的爬坡斜率太慢导致外设上电复位不彻底偶发初始化失败。后来把该路的爬坡时间调短了一点问题就消失了。这类问题在数据手册里写得比较隐晦不实测很难发现。我的建议是拿到新板子以后别急着跑复杂软件先把PMIC的每一路电源波形、时序、纹波都量一遍存个档。后面出现任何疑难杂症都能快速排除电源因素省下大量排查时间。这个习惯我从做MP1项目时就开始养成如今转到MP2x平台上依然适用而且我越发现电源这套东西做好基本功比追着跑各种新特性更能保证项目顺利落地。
返回列表