☰
PCA9422+PIC32MZ2048EFH100低功耗电源管理实战:从LDO乱炖到PMIC一体化
2026/10/10 1:09:15 网站建设 项目流程

前阵子做某便携设备,拿到了 PCA9422 这颗电源管理芯片,配 PIC32MZ2048EFH100 这颗主控,最后把整机从"一堆 LDO 加串电阻分压"的乱炖方案,收拾成了一套带电池充电、多路电源轨、动态调压和深睡联动的完整电源管理体系。这篇文章把原理图怎么接、寄存器怎么配、低功耗怎么压,以及我踩过的坑全部写出来,适合正在做电池供电类产品、手上同样拿着这两颗料的朋友参考。

1. 这套电源方案要解决什么问题:为什么把 PCA9422 和 PIC32MZ2048EFH100 凑在一起

1.1 分立 LDO 方案撑不住的四个场景

我最初那版电源设计其实相当"传统":电池进来先给一颗 DCDC 做 5V 或 3.3V 主轨,其余电压全用 LDO 现拉,充电单独放一颗充电 IC,电池电压检测靠两个大电阻分压进 ADC。听起来没什么问题,实际做下来全是问题。

第一个问题是效率。设备外壳全封闭,里面还有锂电池,LDO 在压差大的时候效率只有五六成,多的能量全变成热量。设备运行时持续两三瓦的损耗,外壳摸着烫手,续航也肉眼可见地短。第二个问题是上电顺序。MCU、存储器、射频模块各自需要的电源轨如果没按顺序起来,轻则外设初始化失败,重则芯片闩锁损坏。用分立 LDO 时我只能在软件里猜时序,靠电容储能延时凑合,极不优雅。第三个问题是充电管理。单节锂电池需要 CC/CV 两段式充电、截止电流判断、充电状态读取,分立充电 IC 能实现,但它和系统电源的管理逻辑是两块独立的,没法统一做状态机。第四个问题是低功耗。设备待机时想关掉部分电源轨,分立方案只能靠 GPIO 控制 LDO 使能脚,几路轨道控制零零散散,每路还要单独算静态电流。

这些问题单独看都不大,叠在一起就让硬件和固件都很累。所以我后来直接换了思路:用一颗集成度足够的 PMIC 把充电、DCDC、LDO、监控、I2C 控制全部收拢,MCU 只通过 I2C 一个口去管整张电源地图。

1.2 PIC32MZ2048EFH100 对电源的真实需求

PIC32MZ2048EFH100 是一颗 200MHz 的 MIPS32 内核 MCU,带 FPU、2MB Flash、512KB RAM,工作电压范围大概在 2.1~3.6V,典型用法是 3.3V 单电源供电。它的内部集成有稳压器和上电/欠压复位电路,看起来对电源"没要求",但实际上它一旦全速运行,瞬态电流会突然拉高,如果电源轨在负载跳变时跌落超过手册范围,BOR 直接复位,设备就当机。

这颗 MCU 的定位决定了整机不会是"点个灯就完"的小玩具。它有能力跑图形界面、协议栈、加密、USB 等大块逻辑,外设也多,所以它的电源不能只做"能开机"这个最低标准,而是要能支撑长时间运行、频繁睡眠唤醒、以及电池在整个生命周期里的电压变化。这就是为什么我选 PCA9422 而不是继续叠 LDO:PCA9422 集成两路同步降压、一路 LDO、锂电池线性充电管理、I2C 从机接口和状态输出脚,输入侧接 USB 5V 或电池,输出侧直接铺成系统多路电源域,单颗芯片就能覆盖"供电+充电+监控+控制"。

这样的搭配还有个好处:电源的每个行为都是可以通过 I2C 寄存器读到的,不是黑盒。充电充到多少、哪路输出是否稳定、哪路过流了,MCU 扫一遍寄存器就全知道,固件和硬件之间终于有了统一的对话语言。

对比项分立方案PCA9422 + MCU
上电时序靠电容和 GPIO 猜PMIC 默认状态+寄存器配置,可复现
低功耗控制每路 LDO 单独 GPIO 拉断一次 I2C 写操作关闭多路
充电管理独立充电 IC,状态要额外读内置充电,状态寄存器与系统共用
故障响应电压比较器+中断拼凑PMIC 故障中断直接上报
物料与面积元件多,布局散单芯片,电源区域集中

2. 原理图设计:电源轨、I2C 和中断怎么接才稳

2.1 电源域划分与负载分配

画原理图之前先把整机电源域划分清楚。我用的是单节锂电池方案,PCA9422 输入侧一路接电池 VBAT,一路接 USB 5V 用于充电供电。输出侧我分了四个域,见下表。

电源轨来源电压负载开关策略
VDD_SYSBuck13.3VPIC32MZ2048EFH100、逻辑电路、指示灯常开,深睡时维持 PFM
VDD_IOBuck21.8V存储卡、传感器、通信模块可关断,动态调压
VDD_ANALDO3.3VADC 基准、模拟前端可关断,单独控制
VBAT_MON电池直连2.5~4.4VMCU ADC 分压采样常开,功耗取决于分压电阻

Buck1 走 3.3V 给主控和数字逻辑,Buck2 走 1.8V 给那些"平时可以断电"的外设,LDO 走模拟电源。之所以把模拟电源单独用 LDO 拉,是因为 DCDC 的开关噪声对高精度 ADC 采样有影响,模拟前端需要低纹波供电;LDO 的 PSRR 能把 Buck 上的纹波再压一截。这块儿别省,省了后面 ADC 抖动会一直追着你。

VBAT_MON 我没有让 PCA9422 报电压,而是直接用两颗 499kΩ 1% 电阻分压后进 PIC32MZ2048EFH100 的 ADC。分压总阻值约 1MΩ,电池端拉走的电流只有 3.7V/1MΩ 约 3.7µA,基本可以忽略。注意分压电阻一定要选高阻值,不然电池电压一直在被偷偷放电,深睡电流数据会很难看。

2.2 通信与控制信号怎么接

PCA9422 的 I2C 从机地址由引脚配置决定,原理图上必须把地址选择脚用电阻硬拉到电源轨或地,不要在系统运行期间让它悬空或由 GPIO 动态翻转。这一点我在后面踩坑里会细说,这里先记住:地址脚是电源域的"身份证",乱动会导致总线上一会儿一个地址,主控完全找不到设备。

SDA/SCL 接到 PIC32MZ2048EFH100 的 I2C1 外设,上拉电阻我试过 4.7kΩ 和 2.2kΩ 两档。如果总线只挂 PCA9422 一颗从机,通信速率打算跑到 1MHz 的话,建议 2.2kΩ 到 3.3V;如果总线上还有别的高速器件、走线又长,我会降到 400kHz 并适当加大上拉。上拉电阻的选择不是抄参考设计就完事,要按总线电容和通信速率一起算,参考公式是上升沿时间约等于 0.7 倍 RC,总线电容越大、目标速率越高,上拉就要越小,但太小又会增加低电平电流,DCDC 在轻载时的功耗也会被拖高。

中断脚 IRQ 接 PIC32MZ 的一个外部中断输入,极性按 PCA9422 手册配置。PCB 上 IRQ 走线要跟开关节点和电感区隔开,不然每次 DCDC 切换都可能带来毛刺。如果 MCU 在深睡状态下被 IRQ 唤醒,注意中断触发条件要配置成边沿触发而非电平触发,避免唤醒后中断一直挂着导致系统反复醒来。

2.3 布局和无源器件的取舍

电源布局直接决定这颗 PMIC 能不能稳定工作。PCA9422 输入侧至少放一颗 10µF 陶瓷电容加一颗 100nF,位置尽量贴着输入引脚;每路 Buck 输出我都放了 22µF X5R 或 X7R 陶瓷电容并联 100nF,LDO 输出放 1µF。陶瓷电容注意看 DC 偏压特性,小封装 22µF 在 3.3V 偏压下实际容量可能只剩一半,建议按降额后的有效容量去算纹波。

Buck 的反馈采样要走独立的细线回到输出电容远端,不要直接在主功率路径上取电压。大电流路径上的铜箔压降会让负载调节率变差,反馈线取远了才能真正采到负载端的电压。开关节点是整板噪声源,铜箔面积只要够走电流就行,别铺一大片去当地,开关节点正下方不要走模拟信号线和 I2C 线。

ADC 分压采样这部分也有讲究。分压电阻后面我并了一颗 100nF 电容做低通滤波,滤掉电池线和开关噪声带来的毛刺。MCU 那边不要一直开着 ADC 采样,软件里按需打开采样通道、采完立即关掉,这样既能省电又能避免 ADC 内部电路在深睡时漏电。

3. 上电时序与默认状态:MCU 醒来之前 PMIC 得先把饭端上桌

3.1 MODE 引脚与默认电压就是"第一口饭"

PCA9422 在开机瞬间还没收到任何 I2C 命令时,输出什么电压完全由 MODE 引脚的电平组合决定。这一点非常重要:主控 PIC32MZ2048EFH100 在上电后要跑程序、要初始化 I2C、要往 PMIC 写配置,这个过程至少几百毫秒到一两秒,期间所有外部设备都在用 PMIC 的"默认电压"工作。如果默认电压配错了,比如 Buck2 默认输出 0.8V 而你的存储卡必须 1.8V 才能握手,那主控还没来得及写寄存器,外设已经进入异常状态。

所以 MODE 引脚的 strap 设计要在一开始就定好"最保守也能开机"的电压组合。我这边 Buck1 的 MODE 配置默认 3.3V,保证主控必起;Buck2 默认 1.8V,因为存储卡和传感器上电就要这个电压;LDO 默认关断,模拟前端由主控起来后再通过 I2C 打开。这样即使固件崩溃、I2C 完全没工作,系统也能保持一个安全可恢复的状态,不会烧外设。

MODE 引脚不要用 MCU 的 GPIO 去驱动。上电瞬间 GPIO 处于高阻状态,电平由内部上/下拉决定,脚上电平不确定,PMIC 可能选到错误的默认配置。用两颗 10kΩ 电阻直接硬拉到对应的电源轨和地最省心,等系统跑起来之后也不需要再动它。

3.2 充电路径与 USB 插入瞬间

USB 插入时系统会同时面对两个需求:给电池充电,同时给系统供电。PCA9422 的充电路径设计是优先满足系统负载,剩余电流才用来给电池充电。这意味着如果你设了 500mA 充电电流,但系统瞬时拉了 600mA,输入侧总共可能要吃掉 1.1A,输入限流必须留够余量。我用 800mAh 单节电池,充电电流设 400mA,系统峰值电流按 300mA 估算,输入限流余量大概留到 800mA,再大就得考虑充电电流往下调。

充电截止电压也要想清楚。4.2V 是锂电最保守的截止电压,循环寿命最好;4.35V 能多放出一点容量,但循环衰减更快。便携设备如果希望用两年后电池还扛得住,我建议选 4.2V;如果产品定位是短生命周期、追求单次续航,再考虑 4.35V。另外,预充电和涓流充电的阈值按电池规格书配,小电池用大电流硬充会加速老化。

NTC 温度检测这块我没有用 PMIC 内置的(或者手册里没给出明确接口),而是把热敏电阻挂在 MCU 的 ADC 上,固件周期采样。一旦电池温度超过 0~45°C 范围,MCU 就通过 I2C 关掉充电。这个功能一定要有,不然设备塞在口袋里一边充电一边大功率运行,电池温度很容易飙上去,风险不小。

3.3 MCU 侧欠压复位与上电自检

PIC32MZ2048EFH100 自带 BOR,但它的阈值是在 MCU 内部设定的,硬件上无法随意调。我的做法是让 BOR 作为最后一道防线,真正的"电池低电量管理"交给 MCU 固件:ADC 采到 VBAT 低于 3.2V 就开始提示低电量,低于 3.0V 就主动进入低功耗模式,低于 2.8V 就彻底关闭非关键负载,只保留最小系统。这样 MCU 永远在 BOR 复位之前就主动做出反应,而不是等电源崩了才发现。

主控上电后我加了一段"电源自检"流程:第一步读 PCA9422 的设备 ID 寄存器,确认 I2C 通路正常;第二步读系统状态寄存器,确认各路输出是否已经稳定;第三步读中断状态寄存器,看看有没有遗留的上电故障。这一段流程放在 main 函数最开始,跑完才继续初始化外设。它的价值在于把"电源问题"和"固件问题"在开发阶段就分开定位,如果设备反复起不来,先看这段自检日志,能省掉大量排查时间。

4. I2C 寄存器操作与动态调压:电压档位也是一种软件资产

4.1 从零写一个 PMIC 驱动

PCA9422 的 I2C 接口是标准从机,主控这边直接用 PIC32MZ2048EFH100 的 I2C1 外设。下面这段是初始化代码,我按 400kHz 通信速率配置,兼顾稳定性和速度:

#define PMIC_SLAVE_ADDR 0x51 /* 由 AD 脚电平决定,必须对照手册地址表确认 */ void pmic_i2c_init(void) { I2C1CON = 0; /* 先复位控制器 */ I2C1BRG = 124; /* Fpb=100MHz,400kHz 时 BRG=(100M/(2*400k))-1=124 */ I2C1STAT = 0; I2C1CONbits.ON = 1; /* 使能 I2C1 主模式 */ }

读写时序是标准的"开始-地址-寄存器-数据-停止",读操作中间要插入一次重复开始。给出一段简化但结构完整的读写函数:

static void pmic_i2c_start(void) { I2C1CONbits.SEN = 1; while (I2C1CONbits.SEN); } static void pmic_i2c_stop(void) { I2C1CONbits.PEN = 1; while (I2C1CONbits.PEN); } static void pmic_i2c_wait(void) { while (I2C1STATbits.TRSTAT); } static int pmic_write_byte(uint8_t data) { I2C1TRN = data; pmic_i2c_wait(); return I2C1STATbits.ACKSTAT; /* 0 表示从机应答 */ } uint8_t pmic_read_reg(uint8_t reg) { uint8_t val; pmic_i2c_start(); pmic_write_byte((PMIC_SLAVE_ADDR << 1) | 0); /* 写方向 */ pmic_write_byte(reg); pmic_i2c_start(); /* 重复开始 */ pmic_write_byte((PMIC_SLAVE_ADDR << 1) | 1); /* 读方向 */ I2C1CONbits.RCEN = 1; while (!I2C1STATbits.RBF); val = I2C1RCV; pmic_i2c_stop(); return val; } int pmic_write_reg(uint8_t reg, uint8_t val) { pmic_i2c_start(); pmic_write_byte((PMIC_SLAVE_ADDR << 1) | 0); pmic_write_byte(reg); pmic_write_byte(val); pmic_i2c_stop(); return 0; }

实际项目中我用的是中断方式加超时保护,轮询只是为了演示主逻辑。真正跑产品的时候,I2C 通信一定要加看门狗式超时,不然 PMIC 拉低时钟或者总线被其他设备占住,主控会一直卡死在等待应答上。我见过不止一次因为 I2C 总线挂死、主控没有超时机制导致整机假死的情况。

4.2 初始化序列是照着数据手册排出来的

电源芯片的寄存器配置顺序不能乱来。我按下面这个顺序做,每一步都有目的:

  1. 读设备 ID 寄存器,确认通讯正常。
  2. 配置 Buck1/Buck2 的工作模式(PWM 还是 PFM/PWM 自动切换)和目标电压。先配置再使能输出,避免输出使能瞬间电压不对。
  3. 配置 LDO 输出电压和使能。
  4. 配置充电电压、充电电流、输入限流。
  5. 配置中断使能寄存器,哪些故障要上报、哪些要屏蔽。
  6. 最后统一使能输出,读取状态寄存器确认所有轨都到位。

寄存器地址我没在这里贴全,因为不同批次、不同封装的手册对寄存器地址的定义有可能存在差异,直接抄网上代码很容易翻车。正确做法是把手册里的寄存器表复印一份贴在工位,然后按功能把相关寄存器封装成如下这种语义明确的函数:

enum { PMIC_BUCK1_VOUT, PMIC_BUCK2_VOUT, PMIC_LDO_VOUT, PMIC_CHG_CFG, PMIC_IRQ_EN, PMIC_SYS_STATUS, PMIC_IRQ_STATUS }; void pmic_set_sys_rail(uint8_t rail, uint16_t mv) { /* 查表把 mv 换算成 PMIC 的电压档位编码,写寄存器 */ }

电压档位不是任意值,PMIC 通常按固定步进提供档位,比如每 25mV 或 50mV 一档。固件里做一个表驱动,把"目标电压"换算成"寄存器编码",可读性比直接在调用处写魔法数字好得多,后续要调整电压策略也只需要改表。

4.3 动态调压实测收益

动态调压这步是这套方案里收益最直观的。我的 Buck2 挂在通信模块和传感器上,其中通信模块支持 1.8~3.3V 宽压工作,活跃时用 3.3V 保证射频性能,待机时只需要 1.8V 保持内部 RAM 和寄存器。于是我在固件里做了一件事:通信模块进入待机时,通过 I2C 把 Buck2 从 3.3V 降到 1.8V,同时把模块使能脚拉低。

动态功耗跟电压平方成正比,待机时模块内部数字电路从 3.3V 降到 1.8V,静态功耗直接降到原来的约 30%;加上 Buck2 在轻载下自动进入 PFM 模式,这一路待机电流从 2.3mA 降到了 0.4mA 左右。虽然绝对值不大,但这是 24 小时常开的一路,一天下来能省几十毫安时,对 800mAh 的电池来说就是实打实的续航。

调压动作一定要有前后顺序:先拉低模块使能脚,再降电压;恢复时先升电压,再拉高使能脚。反过来的话,模块供电电压还没到位就尝试通信,总线 NACK、寄存器读错都是常见现象。

4.4 故障中断与状态机

PMIC 的故障上报是我在中断里处理的。IRQ 触发后,MCU 读中断状态寄存器,判断是哪一类故障再决定动作。我粗略分成三类:

  • 电源轨过流或短路:立即进入关断流程,记录故障码,然后尝试复位 PMIC 输出。
  • 输入过压或欠压:如果是 USB 输入电压异常,关闭充电;如果是电池电压过低,进入低功耗模式。
  • 过温:降低充电电流,必要时关掉非关键负载。

中断处理函数里不要做耗时的 I2C 操作,正确做法是 ISR 里只置一个标志位,主循环检测到标志后再去读寄存器、跑状态机。我以前图省事在 ISR 里直接读一串寄存器,结果中断嵌套加上 I2C 等待,时序乱了,反而触发第二次故障中断,最后变成一个死循环式的中断风暴。

5. 低功耗联动:整机休眠电流怎么从毫安级压到微安级

5.1 三档功耗状态的设计

"完整电源管理"最后要落到整机功耗上。我把系统功耗状态分成三档,每一档都有明确的 PMIC 配置和 MCU 状态:

状态MCUBuck1(3.3V)Buck2(1.8V)LDO(3.3V)实测整机电流
运行态全速 200MHzPWM开启开启约 45mA
空闲态Sleep + 周期唤醒PFM 轻载开启关闭约 1.2mA
深睡态Deep Sleep + RTCCPFM 轻载关闭关闭约 27µA

深睡态的关键是让 MCU 的主电源轨 Buck1 仍然保持输出,但 PMIC 在轻载下自动切到 PFM 脉冲模式,降低开关频率和静态损耗。PIC32MZ2048EFH100 的 Deep Sleep 模式电流在微安级,加上 RTCC、分压电阻、PMIC 自身静态电流和漏电,整机做到 27µA 是我这块板的实际结果。如果想再往下压,就得考虑把 Buck1 也关掉、用一颗超低功耗 LDO 单独维持 MCU 深睡供电,但那样唤醒时的电源切换逻辑会复杂不少,我这次没有做。

5.2 充电期间的睡眠策略

设备插着 USB 充电时进入深睡,这事有个容易忽略的坑:线性充电本身会把输入电压和电池电压的压差变成热量,如果充电电流 400mA、压差 1.3V,充电功率损耗约 0.5W,板子局部温度会上升。此时如果再让系统保持高频运行,热上加热,PMIC 的过温保护或者电池 NTC 都可能跳闸。所以我的策略是:检测到 USB 插入后,如果系统没有用户交互,就自动进入空闲态而不是深睡态,保持充电正常进行;电池充满后,通过 I2C 关闭充电使能,只让 PMIC 维持系统供电,避免电池一直处于"满充浮充"状态,这对电池寿命更友好。

充电状态我在固件里挂了中断:充电完成事件触发 MCU 唤醒,MCU 读充电状态寄存器确认充满后,把充电使能关掉,再继续睡。千万不要做成"唤醒后什么都不管继续睡",那样电池会在满电和浮充之间反复横跳。

5.3 唤醒路径与上电恢复顺序

深睡唤醒后的动作顺序是整机低功耗设计成败的最后一步。我的恢复流程固定如下:

  1. RTCC 或外部中断唤醒 MCU。
  2. MCU 初始化时钟和外设。
  3. 通过 I2C 开启 Buck2 和 LDO,使能对应外设电源。
  4. 等待一小段稳压时间(我一般留 2~5ms,视负载电容大小调整)。
  5. 读 PCA9422 状态寄存器,确认所有轨稳定。
  6. 恢复外设初始化、继续业务逻辑。

第四步的等待时间很多人会忽略。Buck 输出大电容充电需要时间,立刻读写外设大概率失败。我用示波器实测过,22µF 输出电容从 0 到 90% 大概需要 1~3ms,和开关频率和负载有关,所以代码里留 5ms 是稳妥的。这个延时只在唤醒路径上存在,对实时性影响可以忽略。

唤醒后还有一个细节:不要每次都重新全量写一遍 PMIC 配置寄存器。我维护了一个"当前配置缓存"和"目标配置",唤醒时只写有变化的寄存器。这样既减少 I2C 通信时间,也避免在深睡期间 PMIC 配置被人为修改后,固件里还是陈旧值导致状态不一致。

6. 实测数据、踩坑清单和重做时我会改的地方

6.1 实测功耗数据

这块板子最终调完,我在 3.7V 电池电压下做了几组实测。运行态全速 200MHz、外设全开时系统电流约 45mA,其中主控占大头;空闲态主控 Sleep、外设保持供电时降到 1.2mA;深睡态关闭 Buck2 和 LDO 后稳定在 27µA。充电端用 5V USB 输入,设置 400mA 充电电流,实测稳定在 392~406mA 之间,符合预期。

我还测了动态调压的收益:通信模块待机时 Buck2 从 3.3V 降到 1.8V,这一路的功耗从 2.3mA 降到 0.4mA。注意这个数据是在模块本身处于待机模式、只有保持电流时测的,如果模块还在工作,电压降低会导致性能下降,不要盲目调低。

6.2 我踩过的五个坑

第一个坑是 I2C 通信速率。最初按 PCA9422 的最高速率 1MHz 跑,但我的 I2C 走线比较长,还经过了一个连接器,结果频率高了总线信号变形,偶尔出现从机无应答。最后把速率降到 400kHz,换 2.2kΩ 上拉,问题消失。教训是:支持 1MHz 不代表你的板子能跑 1MHz,走线、连接器、上拉都要配套。

第二个坑是 IRQ 毛刺。上电瞬间 PMIC 输出还没稳定,IRQ 脚会有一个不确定的跳变,如果 MCU 此时已经使能了外部中断,会立刻误唤醒一次。解决办法是把 IRQ 中断在系统初始化最后再使能,并在中断服务程序里加一点软件去抖,连续读到两次有效电平才处理。

第三个坑是 MODE 引脚。最初我图方便用 GPIO 控制 MODE 脚,想通过固件切默认电压,结果上电时 GPIO 高阻,电平被板上的寄生电容带着乱飘,PMIC 偶尔默认输出错误电压,导致存储卡初始化失败。改回电阻硬配置后,再也没出现过。

第四个坑是关断 Buck2 后外设反向漏电。存储卡这类器件有多个电源引脚,如果卡的其他电源域还有电,关掉主供电轨之后,电流会从其他引脚通过内部保护二极管倒灌进 Buck2 的输出端,导致电压降不下去,Buck2 白关了。解决办法是关轨之前先把外设切换到断电安全状态,把相关 GPIO 全部拉低,再关电源轨。

第五个坑是 ADC 采电池电压不准。分压电阻后面没并电容的时候,采样值跳动有几十毫伏,低电量判断会误触发。并在分压点并了 100nF 电容后,纹波基本消失。另外采样时要等 ADC 建立时间足够,我开了两次采样,第一次丢弃,取第二次的值。

6.3 如果重新打板,我会改这些

第一,每路电源输出都预留测试点,方便调试时用示波器直接量,不用探针去戳芯片引脚。第二,I2C 上拉电阻的位置留三种可选焊盘,方便现场换阻值调试。第三,电池分压采样电阻我会选精密 1% 并做好温度系数考虑,低电量判断依赖的是长期稳定性,不能省。第四,PCB 上会给 PCA9422 的输入侧留一个较大的铜皮散热区,线性充电时 PMIC 温度能低个好几度。

最后再说一句我个人的体会:电源管理这块工作,花在"设计电源域划分"上的时间远比花在"写 I2C 驱动"上的时间更有价值。电源域的划分决定了整机能睡多深、能调多活、能扛多久,寄存器代码只是把设计意图翻译成芯片能听懂的语言。如果你的产品也是电池供电、也有多路电源轨需求,推荐按这个思路把电源当成一个独立的子系统来设计,而不是当成分立元件的堆砌。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询