你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32H5 EDATA (高寿命数据区) 使用指南与注意事项

[复制链接]
Yude 发布时间:2026-3-31 18:08

image.pngSTM32H5 EDATA (高寿命数据区) 使用指南与注意事项


STM32H5 系列微控制器提供的 EDATA 功能是专为 EEPROM 模拟设计的 Flash 存储区域,支持高达 100,000 次的擦写循环。为了确保系统稳定性和访问效率,开发者必须正确配置选项字节、内存保护单元 (MPU) 并妥善处理 ECC 纠错引起的 NMI 中断。

  • 高可靠性存储 :EDATA 提供 100k 次擦写寿命,远高于标准 Flash 扇区。
  • 强制非缓存配置 :必须通过 MPU 将 EDATA 区域设置为 non-cacheable,否则会导致系统 HardFault。
  • ECC 与 NMI 机制 :读取未初始化的 EDATA 区域会触发 NMI 中断,需在中断服务程序中进行首次擦写处理。
  • RWW 性能优化 :建议将代码运行与 EDATA 存储分布在不同的 Bank,以实现读写同时进行 (Read-While-Write)。

STM32H5 EDATA 核心技术规范与配置流程

1. EDATA 选项字节配置与空间规划

STM32H5 的 EDATA 空间通过选项字节 EDATA(1/2)_EN 和 EDATA(1/2)_STAT 进行定义。在 STM32CubeProgrammer 中,EDATA_STAT 的取值范围为 0 至 7,其中 0 代表保留 Bank 的最后 1 个扇区,7 代表保留最后 8 个扇区。若通过 HAL 库代码配置,EDATASize 取值范围为 0 至 8(0 表示禁用)。每个 EDATA 扇区的大小通常为 6KB,并带有 6-bit ECC 校验位。

2. MPU 内存属性强制要求

由于 STM32H5 的 EDATA 区域通过 AHB 总线访问,默认情况下 AHB 内存区域属性为 cacheable。然而,STM32H5 EDATA 硬件特性要求其必须为不可缓存区域。开发者必须使用 Cortex 内存保护单元 (MPU) 将 EDATA 对应的地址范围(例如 Bank1 的 0x0900 0000 - 0x0900 BFFF)配置为 "Normal non-cacheable" 属性。如果未配置 MPU,CPU 访问该区域时将直接触发硬件异常 (HardFault)。

3. ECC 纠错与初次读取异常处理

STM32H5 EDATA 采用 128-bit Flash 字对应 9-bit ECC 的机制,或在某些模式下为 16-bit 字对应 6-bit ECC。对于从未写入过数据的“处女”区域,其 ECC 校验值是不确定的。直接读取这些未初始化的区域会触发 ECC 错误并产生不可屏蔽中断 (NMI)。在生产或首运行流程中,建议先执行擦除或写入操作再进行读取;或者在 NMI_Handler 中调用 HAL_FLASHEx_ECCD_IRQHandler(),识别出 EDATA 区域的 ECC 错误后进行格式化处理。

4. RWW (Read-While-Write) 架构优化

为了获得最高的访问效率,推荐采用跨 Bank 布局策略。将应用程序代码存放在 Flash Bank 1 中运行,而将 EDATA 存储区配置在 Flash Bank 2。这种双 Bank 配置允许 CPU 在执行代码的同时对 EDATA 进行擦写操作,避免了单 Bank 下因 Flash 忙导致的流水线停顿,显著提升实时性。


常见问题解答 (FAQ)

为什么读取 EDATA 会导致 STM32H5 进入 HardFault?

这是因为 EDATA 区域未在 MPU 中配置为 non-cacheable。默认的 cacheable 属性与 EDATA 硬件访问机制冲突,必须显式禁用缓存。

EDATA 区域支持的最大扇区数量是多少?

STM32H5 每个 Bank 最多支持配置 8 个 EDATA 扇区。通过 EDATASize 参数可以灵活调节启用数量(1~8个)。

如何在代码中判断 EDATA 触发了 ECC 错误?

可以在 NMI 中断服务程序中通过 HAL_FLASHEx_GetEccInfo() 获取产生错误的地址,若地址落在 EDATA 范围内且数据为 0xFFFF,则通常是未初始化导致的错误。

在 TrustZone 工程中使用 EDATA 有什么限制?

在 TrustZone 环境下,安全区与非安全区的调用函数默认存放在 Flash 最后一个扇区。由于 EDATA 也占用末尾扇区,需修改分散加载文件 (Linker Script) 以避免地址冲突。

更多内容,请下载 LAT1571 STM32H5使用EDATA时的注意事项

收藏 评论0 发布时间:2026-3-31 18:08

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版