• 正文
  • 相关推荐
申请入驻 产业图谱

STM32N6 eMMC 启动配置:从封装兼容到实操落地

11/21 15:41
1074
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

STM32N6 无内置 Flash,eMMC 启动是其核心启动方式之一(属于 Flash Boot),核心逻辑是通过 BootROM 识别启动源、配置 SDMMC 接口与 eMMC 设备通信,最终加载 FSBL(第一阶段引导程序)。配置关键在于 “封装匹配 + OTP 参数配置 + SDMMC/eMMC 时序协同”,以下是分步实操指南。

资料获取:STM32N6如何配置EMMC启动

1. 核心前提:封装与 eMMC 启动兼容性

并非所有 STM32N6 封装都支持 eMMC 启动,需先确认硬件封装,避免无效配置:

封装型号 SDMMC 接口数量 eMMC 启动支持情况 备注
STM32N6xxX0(264Pin) 2 个(SDMMC1/2) 支持 可选择 SDMMC1/2 启动
STM32N6xxL0(223Pin) 2 个(SDMMC1/2) 支持 可选择 SDMMC1/2 启动
STM32N6xxB0(198Pin) 1 个(SDMMC1) 支持 仅支持 SDMMC1 启动
STM32N6xxI0(178Pin) 1 个(SDMMC1) 支持 仅支持 SDMMC1 启动
STM32N6xxA0(169Pin) 不支持 无 SDMMC 接口
STM32N6xxZ0(142Pin) 不支持 无 SDMMC 接口

关键提醒:仅具备 SDMMC1/2 接口的封装可配置 eMMC 启动,需提前核对硬件型号。

2. 硬件核心配置:3 大关键步骤

2.1 Boot Mode 引脚设置(Flash Boot 模式)

eMMC 启动属于 Flash Boot,需通过 Boot0/Boot1 引脚设置启动模式:

  • 配置要求:Boot0 = 1(高电平),Boot1 = 0(低电平)
  • 作用:上电后 BootROM 识别为 Flash Boot,进入 eMMC/SD 卡等 Flash 设备启动流程

2.2 OTP 参数配置(核心关键)

STM32N6 通过 OTP(一次性可编程寄存器固化启动配置,需重点配置 2 个关键 OTP 字:

(1)Flash Boot Source 配置(OTP11,BOOTROM_CONFIG_2)

通过flash_boot_source[8:5]位指定 eMMC 对应的 SDMMC 接口,配置值如下:

配置值 对应启动源 SDMMC 接口 适用场景
2 eMMC SDMMC1 仅支持 SDMMC1 的封装(如 B0/I0)
8 eMMC SDMMC2 支持 SDMMC2 的封装(如 X0/L0)

(2)HSLV 高速低压模式配置(OTP124,HCONF1)

VDDIO4/5 供电为 1.8V 时(SDMMC1 对应 VDDIO4,SDMMC2 对应 VDDIO5),需使能 HSLV 模式:

  • 配置位:HSLV_VDDIO4(位 14)→ 对应 SDMMC1;HSLV_VDDIO5(位 13)→ 对应 SDMMC2
  • 配置值:1 = 使能 HSLV 模式,适配 1.8V 低压高速传输;0 = 禁用(默认 3.3V)

2.3 电源与 I/O 配置

  • 供电要求:VDDIO4(SDMMC1)、VDDIO5(SDMMC2)需与 eMMC 供电电压一致(1.8V 或 3.3V)
  • I/O 引脚配置:SDMMC 启动时仅使用 1 根数据线(D0),引脚及 AF 功能如下:
SDMMC 接口 CK 引脚 CMD 引脚 D0 引脚 AF 功能
SDMMC1 PC12 PH2 PC8 AF10
SDMMC2 PC2 PC3 PC4 AF11

注意:引脚需正确配置 AF 功能,且 VDDIO 供电电压需与 HSLV 配置匹配,否则会导致通信失败。

3. SDMMC 与 eMMC 设备配置

3.1 SDMMC 接口默认配置(BootROM 自动初始化)

BootROM 会自动配置 SDMMC 接口参数,无需软件干预,关键参数如下:

  • 总线宽度:1 位(仅使用 D0 引脚)
  • 传输模式:SDR(单倍数据率),不支持 DDR 和 HS200 模式
  • 时钟频率:SDMMC_CK = 16MHz(由 64MHz 内核时钟分频得到)
  • 电源控制:自动上电(PWRCTRL = 0x3),时钟始终使能(PWRSAV = 0x0)

3.2 eMMC 设备配置(需匹配 BootROM 时序)

eMMC 设备需按以下要求配置寄存器(EXT_CSD 寄存器),确保与 BootROM 时序兼容:

eMMC 寄存器 位域 / 配置项 配置值 作用
EXT_CSD[179] BOOT_ACK 1 引导过程中发送确认应答(ACK)
EXT_CSD[179] BOOT_PARTITION_ENABLE 0x1/0x2 使能引导分区 1/2
EXT_CSD[177] BOOT_MODE 0x0 单倍数据率(SDR)+ 向后兼容时序
EXT_CSD[177] BOOT_BUS_WIDTH 0x0 引导模式下 1 位总线(匹配 SDMMC)
EXT_CSD[226] BOOT_SIZE_MULT 按需配置 引导分区大小 = 128KB × 配置值

3.3 时序要求(必须遵守)

  • eMMC 应答时间:收到 CMD0(参数 0xF0F0F0F0)后,需在 50ms 内给出 ACK 应答(010)
  • 数据传输时间:CMD 线拉低 1 秒内,开始发送第一个引导数据
  • 传输模式:仅支持 SDR,数据输出和采样均在 CLK 上升沿完成

4. 启动流程与验证

4.1 完整启动流程

  1. 上电复位:BootROM 执行,读取 Boot0/Boot1 引脚,识别为 Flash Boot
  2. OTP 读取:获取 flash_boot_source 和 HSLV 配置,确定 SDMMC 接口
  3. SDMMC 初始化:BootROM 配置 SDMMC 接口参数(1 位总线、16MHz 时钟)
  4. eMMC 通信:发送 CMD0 命令,等待 eMMC 应答,读取引导分区数据
  5. 加载 FSBL:从 eMMC 引导分区加载 FSBL,执行后续启动流程

4.2 配置验证步骤

  1. 烧录 FSBL:将编译好的 FSBL 烧录到 eMMC 的引导分区(需匹配配置的 BOOT_PARTITION)
  2. 上电测试:设置 Boot0=1、Boot1=0,上电后观察是否成功加载 FSBL
  3. 故障排查:若启动失败,优先检查 OTP 配置、VDDIO 电压、SDMMC 引脚 AF 功能、eMMC 时序参数

STM32N6 eMMC 启动配置的核心是 “三层匹配”:封装与 SDMMC 接口匹配、OTP 参数与供电匹配、SDMMC 与 eMMC 时序匹配。只要按步骤完成 Boot 引脚设置、OTP 配置、eMMC 寄存器配置,即可实现稳定启动。

相关推荐