Memory 使用用户数据写入和擦除内部闪存的次数
在我的stm32 mcu上没有eeprom。因此,我使用内部闪存保存一个字节的用户数据,以便在两次电源循环之间保留数据。我按照以下方式进行操作Memory 使用用户数据写入和擦除内部闪存的次数,memory,stm32,flash-memory,Memory,Stm32,Flash Memory,在我的stm32 mcu上没有eeprom。因此,我使用内部闪存保存一个字节的用户数据,以便在两次电源循环之间保留数据。我按照以下方式进行操作 在链接器脚本的内存中添加数据节 记忆 { RAM(xrw):原点=0x20000000,长度=8K 闪光(rx):原点=0x8000000,长度=64K 数据(xrw):原点=0x8003800,长度=2K//分配了一个完整的闪存页 } 创建用户数据部分 .用户数据: { .=对齐(4); *(.用户数据) .=对齐(4); }>数据 创建一个变量以
我的问题是,通过这种方式可以对内部闪存进行多少次写入以保存用户数据?STM32内部闪存的特性始终在产品数据表中详细说明。例如,在STM32H743上,耐久性为10周 您可以由此推断,内部闪存不适合您的用例(除非电源循环是异常事件)
如果您确实需要多次编写内部Flash(我强烈怀疑),您可能需要了解Flash翻译层的概念。它是一个软件层,提供一种虚拟到物理内存映射,并允许减少闪存磨损。您正在使用的特定部件的数据表应该说明闪存的额定写入周期。并非所有的stm32设备都是一样的。@NateEldredge我也这么认为。但我似乎在数据表和参考手册数据表中找不到该信息-参考手册-我在第17页找到了eeprom仿真的应用说明,其中有各种stm32 MCU的闪存耐久性表-查看设备数据表中的“闪存耐久性和数据保留”表(不是参考手册)。我可以找到我使用的每个控制器的te信息。如果我使用mcu的电源电压检测器功能,并且仅在断电时打开闪光灯,在通电时读取。那也会减少磨损,对吧?我不知道。断电的频率有多高?如果这是一个例外事件,可能就足够了。