我需要将文本文件存储到STM32 F446RE内部闪存中。这个文本文件将包含需要写入并一致更新的日志数据。我知道有几种写入方式,包括将文本作为常量字符串/数据嵌入源代码中,或者实现文件系统(由于扇区方向而不适合STM32 F4闪存),. It共有7个扇区大小不同。扇区0-3每个包含16 kB,4包含64 kB,每台5到7都包含128 kB,这意味着总共有512个kB的闪存。这些都不足以满足我想要的东西,我想知道是否有人有想法?我正在使用STM32CubeIDE。
发布于 2022-05-25 20:20:27
写入闪存首先需要擦除操作。似乎您已经知道擦除操作必须对整个扇区执行。还请注意,闪存会随着重复的擦除/写入循环而耗尽。
我建议了三种方法中的一种,这取决于您必须存储多少数据和您的编码能力。
一种“片内”方法是在RAM中实现循环缓冲区,并在那里维护日志。如果电源丢失,则需要代码将RAM缓冲区提交给闪存。在启动电源时,需要代码从闪存中恢复RAM缓冲区。这意味着您的设计不会受到频繁的电源周期的影响,并且您可以为微控制器维护足够长的时间来将缓冲区从RAM保存到闪存。
下一个选项是使用外部内存芯片。EEPROM不是非常快,也会被磨损。FRAM速度快,在穿衣服之前经历了数万亿次的写作。它可以作为I2C或SPI使用,因此您可以实现许多芯片,以提供合理的缓冲区大小,并在处理程序代码中处理芯片到内存的映射。但是FRAM并不便宜。
最后,还有一个添加SSD驱动器的选项。这些设备包括“磨损平衡”,以保持其活动寿命。然而,您需要一个合适的接口,如USB或PCI。
HTH
https://stackoverflow.com/questions/68124668
复制相似问题