在嵌入式系统设计中,电源管理是决定系统稳定性、性能和功耗的关键因素。尤其对于高性能应用处理器如恩智浦(NXP)的 i.MX 系列,电源管理集成电路(PMIC)的使用尤为重要。本文将基于恩智浦官方技术文档探讨 i.MX 处理器中 PMIC 的选型、硬件连接与软件配置,重点以 i.MX8M Mini 为例,提供从理论到实践的完整指南。
1. PMIC 在 i.MX 系统中的作用与优势
PMIC 是一种高度集成的电源管理芯片,它将多路电源输出(如 Buck 转换器、LDO 等)整合在单一芯片中,具备以下优势:
- 高集成度:取代多个分立电源芯片,减小 PCB 面积。
- 高效能:支持动态电压调节(DVS),优化功耗。
- 灵活可控:通过 I?C 接口实现软件可编程的电源管理。
- 保护机制:内置过压、过流、过热等保护功能。
2. i.MX 系列推荐 PMIC 选型指南
NXP 为不同 i.MX 处理器提供了专门的 PMIC 推荐方案,如下表所示:
| i.MX 系列 | 推荐 PMIC 型号 |
| i.MX 6UL/ULL/ULZ | PF1510 / PF3000 / PF3001 / PF5020 |
| i.MX 7系列 PF3000 | PF3000 / PF1510 |
| i.MX 8M Mini/Nano | PCA9450 系列 |
| i.MX 8QM / 8QXP | PF8100 / PF8200 系列 |
| i.MX 8DualMax/X | PF81/PF82 或 PF7100(汽车级) |
3. i.MX8M Mini 的电源架构与 PMIC 配置
3.1 电源轨(Power Tree)设计
i.MX8M Mini 内部包含多个电源域,每个电源轨的电压和电流需求如下:
| 电源轨名称 | 核心用途 | 电压范围(Min-Typ-Max) | 最大电流(mA)? | 备注 |
| VDD_ARM | 四核 A53 内核供电 | 0.805V-0.850V(1.2GHz) | 2200 | 1.6GHz 时需 0.900V-0.950V |
| VDD_SOC | SoC 逻辑电路供电 | 0.780V-0.820V(无 PCIe) | 1000 | 带 PCIe 时需 0.805V-0.850V |
| VDD_DRAM | DDR 控制器供电 | 0.805V-0.850V(1.0GHz) | - | 1.5GHz 时需 0.900V-0.950V |
| NVCC_DRAM | DRAM 核心供电 | 1.1V(默认) | 1000 | 可通过软件调整为 1.2V(LPDDR4)/1.35V(DDR3L) |
| VDD_VPU | 视频处理单元(VPU)供电 | 0.850V-0.900V(450MHz) | - | 700MHz 时需 0.900V-0.950V |
| NVCC_SNVS_1P8 | SNVS 银行 GPIO 预驱动器供电 | 1.620V-1.800V-1.980V | - | 低功耗场景关键电源轨 |
3.2 常用 PMIC 对比:BD71847 与 PCA9450
| 特性 | 罗姆 BD71847AMWV | 恩智浦 PCA9450AAHN |
| 核心输出模块 | 6 路降压转换器(Buck)+ 6 路 LDO | 6 路降压转换器(Buck)+ 5 路 LDO |
| 额外功能 | 内置 SDXC 卡 1.8V/3.3V 开关、32.768kHz 晶振缓冲器 | 内置 400mA 负载开关、2 通道电平转换器、32.768kHz 晶振驱动器 |
| 输入电压范围 | 2.7V~5.5V(支持锂电池 / USB 输入) | 适配 i.MX8MM 供电需求,支持宽压输入 |
| 转换效率 | 最高 95%(Buck 转换器) | 高效率设计,匹配 i.MX8MM 低功耗需求 |
| DDR 电压调节 | Buck8 默认 1.1V,软件可调 1.2V/1.35V | Buck6 默认 1.1V,软件可调 1.2V/1.35V |
| 保护功能 | 输出短路、过压、过流、热关断 | 完善的过压 / 过流 / 热保护,符合工业标准 |
4. PMIC 软件配置实战:从 BD71847 迁移到 PCA9450 的步骤
当 i.MX8MM 开发板从 BD71847 更换为 PCA9450 时,需在 U-Boot 和 Linux 内核中修改驱动与配置,以下是经过验证的完整步骤:
4.1 U-Boot 部分修改(核心是添加 PCA9450 驱动与配置)
U-Boot 阶段需完成 PMIC 初始化,确保 DDR、CPU 核心供电正常,步骤如下:
| 步骤 | 操作内容 | 具体路径与代码示例 |
| 1 | 拷贝 PCA9450 驱动文件 | 将pca9450.h和pmic_pca9450.c拷贝至 U-Boot 驱动目录:root/drivers/power/pmic/ |
| 2 | 修改 Kconfig,启用 PCA9450 支持 | 在drivers/power/pmic/Kconfig中添加:
config POWER_PCA9450 bool "Support PCA9450 PMIC" |
| 3 | 修改 Makefile,编译 PCA9450 驱动 | 在drivers/power/pmic/Makefile中添加:obj-$(CONFIG_POWER_PCA9450) += pmic_pca9450.o |
| 4 | 配置板级头文件,禁用 BD71837(BD71847 兼容驱动) | 在include/configs/imx8mm_evk.h中添加:
#undef CONFIG_POWER_BD71837 #define CONFIG_POWER_PCA9450 |
| 5 | 修改设备树(DTS),添加 PCA9450 节点 | 在arch/arm/dts/imx8mm-evk.dtsi的 I2C1 节点下添加:
pmic: pca9450@25 { compatible = "nxp,pca9450"; reg = <0x25>; pinctrl-0 = <&pinctrl_pmic>; interrupts = <3 IRQ_TYPE_LEVEL_LOW>; /* 配置Buck/LDO参数 */ }; |
| 6 | 修改 SPL 初始化代码,替换 PMIC 寄存器配置 | 在board/freescale/imx8mm_evk/spl.c中,将 BD71847 的初始化逻辑替换为 PCA9450 的寄存器配置 |
4.2 Linux 内核部分修改(适配 PCA9450 regulator 驱动)
内核阶段需配置 PMIC 的电压调节器(regulator),确保系统运行中动态电压调节正常:
| 步骤 | 操作内容 | 具体路径与代码示例 |
| 1 | 拷贝 PCA9450 内核驱动文件 | 将pca9450.h(放include/linux/mfd/)和pca9450-regulator.c(放drivers/regulator/)拷贝至对应目录 |
| 2 | 修改 regulator 驱动的 Kconfig 与 Makefile | 在drivers/regulator/Kconfig添加:
config REGULATOR_PCA9450 tristate "PCA9450 Regulator Support" 在drivers/regulator/Makefile添加: obj-$(CONFIG_REGULATOR_PCA9450) += pca9450-regulator.o |
| 3 | 修改 MFD 驱动的 Kconfig 与 Makefile(PCA9450 属于 MFD 设备) | 在drivers/mfd/Kconfig添加 PCA9450 支持,Makefile 中添加编译规则 |
| 4 | 修改内核配置文件(defconfig),启用 PCA9450 支持 | 在arch/arm64/configs/xxx_defconfig中添加:
CONFIG_REGULATOR_PCA9450=y CONFIG_MFD_PCA9450=y |
| 5 | 完善设备树(DTS)的 regulator 节点配置 | 在 PCA9450 节点下添加 regulators 子节点,示例:
regulators { buck1_reg: BUCK1 { regulator-name = "VDD_SOC"; regulator-min-microvolt = <600000>; regulator-max-microvolt = <2187500>; regulator-boot-on; nxp,dvs-run-voltage = <850000>; }; /* 其他Buck/LDO配置类似 */ }; |
5. 关键注意事项
- 非 PMIC 方案参考:若不使用集成 PMIC,需采用分离电源设计,可参考 i.MX6ULL 的电源树方案,确保各电源轨的电压精度、纹波满足 i.MX 芯片要求;
- DDR 电压调节:无论是 BD71847 还是 PCA9450,均需在 U-Boot SPL 阶段(DDR 初始化前)调整 DDR 电压,避免因电压不匹配导致 DDR 启动失败;
- 官网资料优先:i.MX 产品上 PMIC 的使用
- 兼容性验证:更换 PMIC 后,需通过高低温测试、功耗测试验证稳定性,确保在目标应用场景下(如工业 - 40℃~85℃)正常工作。
i.MX 系列产品的 PMIC 设计核心是 “选型匹配 + 硬件适配 + 软件配置” 三者结合:先根据 i.MX 型号选择官方推荐的 PMIC,再依据电源轨需求设计硬件连接,最后通过 U-Boot 和内核的驱动修改完成适配。以 i.MX8MM 的 PCA9450 方案为例,其软件迁移步骤具有通用性,其他 i.MX 型号的 PMIC 修改可参考此逻辑,最终实现系统的稳定供电与高效功耗控制。
1046