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

关于硬件ECC

[复制链接]
Xa__ 提问时间:2026-1-5 10:50 / 未解决

硬件 ECC 由 STM32 的 FMC 控制器集成,当我读写 NAND 的数据 时,硬件ECC是自动生成 ECC 校验码 并写入 OOB 的专属区域吗,自动读取 OOB 中的 ECC 码并校验主数据、自动纠正位翻转错误,还是怎么操作的,有这方面的手册或者别的文件吗?;

收藏 评论2 发布时间:2026-1-5 10:50

举报

2个回答
fafa1 回答时间:昨天 11:47

STM32 的 FMC(或 FSMC)里确实带有一块“硬件 ECC 计算单元”,但它只负责实时计算 Hamming/BCH 校验码 ,真正的“写入 OOB、读出比对、纠错”仍然要由软件完成。流程可以分成下面三步看:

  1. 写页

    • 先把 FMC 的 ECCEN 置 1,指定 ECC 页大小(256/512/…/8192 字节)。

    • 通过 FMC 向 NAND 写主数据,硬件在同一时刻把数据流送进 ECC 单元,写完一页后读 FMC_ECCR 寄存器,得到 22~32 bit 的校验码。

    • 软件把这段校验码再写进 OOB 的约定位置(字节地址由你定,FMC 不会自动写)。

    • 发 PAGE-PROGRAM 命令完成写入

  2. 读页

    • 再次把 ECCEN 置 1。

    • 通过 FMC 读主数据,硬件重新计算“新 ECC”。

    • 软件把 OOB 里保存的“旧 ECC”读出来,与“新 ECC”做异或。

    • 如果异或结果为 0 表示无错;结果中有 11 个 bit 为 1 说明 1 bit 可纠错;其他情况视为不可纠错的 2 bit 以上错误

    • 若需要纠正,软件根据异或值定位翻转位并取反即可;硬件不会自动改数据。

  3. 关于纠错能力

    • 旧系列(F1/F2/F4)的 Hamming 单元只能“纠 1 检 2”。

    • H7/MP1 等新型号可选 BCH,支持“纠 4 检 8”或“纠 8 检 16”,但算法仍然由软件完成,硬件只提供两套校验码

官方文档

  • 《RM0090》STM32F4 FSMC 章节(ECC 结果寄存器说明)
  • 《STM32H745/757 Reference Manual》23.8.6 节(NAND ECC 计算流程)
  • 《STM32MP157 Reference Manual》26.9.6 节(Hamming/BCH 选择)

结论: “硬件 ECC”= 自动计算校验值,省去软件逐字节做位运算的时间; “写入/读取 OOB、比对、纠 1 bit”= 必须由用户软件完成。只要记住这一点,手册里的寄存器序列就能看懂了。

butterflyspring 回答时间:昨天 12:11
在手册有相应步骤的描述

STM32H750 FMC ECC .PNG
执行以下序列以进行ECC计算:
1.    在FMC_PCR寄存器中使能ECCEN位。
2.    向NAND闪存页写入数据。在NAND页写入期间,ECC模块计算ECC值。
3.    等待ECC码准备就绪(FIFO清空)。
4.    从FMC_ECCR寄存器读取ECC值并存储至变量。
5.    清除ECCEN位,随后在FMC_PCR寄存器中重新启用该位,再从NAND页读回写入数据。读取NAND页期间,ECC模块将计算ECC值。
6.    从FMC_ECCR寄存器读取新ECC值。
7.    若两个ECC值相同,则无需校正;否则存在ECC错误,软件校正程序将返回错误可否修复的信息。

所属标签

相似问题

官网相关资源

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