【STM32H7S78-DK测评】第4篇 FLASH ECC学习
[复制链接]
ECC(ErrorCorrect-ionCode)校验是一种内存纠错原理,它是现在比较先进的内存错误检查和更正的手段。ECC内存即纠错内存,简单的说,其具有发现错误,纠正错误的功能。首个 ECC 由数学家 Richard Hamming 发明。第一个 Hamming 码使用 7 位存储 4 位信息,冗余位用于纠正和检测错误。
“不同于NOR Flash内部结构,NAND Flash存储单元(cell)是串行组织的,当读取一个单元的时候,读出放大器(sense amplifier)所检测到信号强度会被这种串行存储结构削弱,这也难免降低了所读信号的准确性。因此如何保证NAND Flash数据的可靠性成了一个问题。ECC作为一种解决手段,被广泛使用”
为什么现在高端一些的或者汽车MCU都开始带FLASH ECC呢?
在 Flash 存储器中,数据会随时间衰减,尤其是在高温下。存储温度会对 Flash 存储器数据产生影响,但循环(编程)温度的影响更大。 Flash 存储器只能对每个存储字进行一定量的重写,这就需要在数据存储的情况下实现平均抹写存储区块。这两种类型的故障(一位错误和两位错误)均不可避免,但正确使用 ECC 可以防止数据丢失。而且随着芯片的制造工艺水平越高,带电粒子产生的位翻转就越多,此时的ECC是必须要有的,一般可以纠正1-2个bit
来看下H7的FLASH ECC介绍吧
使能一下错误中断吧
void HAL_FLASHEx_EnableEccDetectionInterrupt(void)
{
__HAL_FLASH_ENABLE_IT(FLASH_IT_DBECCERR);
}
进入错误中断后设置标志
进入回调函数
|