我想在微控制器的闪存中存储 3 个整数值,这样如果设备断电,这些值就不会丢失。
我试图了解为此目的使用哪种类型的内存,以及如何准确地写入和读取这个内存块。
我正在做一个爱好项目,使用 HMI 将数据输入到 PLC,然后驱动多个电机来控制玩具四轴飞行器的运动。
我正在使用 Keil uvision IDE。
一些附加说明:
- 这些值将每 2-3 个月更改一次。
- 值更新过程中可能会出现断电。
- 如果进程被中断并且我们丢失了输入的最新值,这并不重要。
我想在微控制器的闪存中存储 3 个整数值,这样如果设备断电,这些值就不会丢失。
我试图了解为此目的使用哪种类型的内存,以及如何准确地写入和读取这个内存块。
我正在做一个爱好项目,使用 HMI 将数据输入到 PLC,然后驱动多个电机来控制玩具四轴飞行器的运动。
我正在使用 Keil uvision IDE。
一些附加说明:
对于不经常进行但需要可靠的参数存储,我推荐以下方法。
最后注。您可以将我上面描述的可靠性算法方案应用于任何非易失性存储器技术、串行 EEPROM、闪存、EEPROM 仿真。它只是不具备 F-RAM 类型存储设备的非常好的优点。在我的一些应用程序中,我必须存储可能变得非常大的数据集,而这正是铁电技术真正大放异彩的地方。在某些应用程序中,我将参数数据分为两部分,仅当用户更改某些设置时才会更改,而另一部分(通常更小)会经常更新。经常变化的数据可能是累积计数器或产品使用时间计。
您可以使用所谓EEPROM emulation
的 ,它使用一部分 Flash 存储器用作 EEPROM。
您可以在以下文档中阅读有关 STM40x/STM41x 的所有信息:
当然这个 EEPROM 存储器会比普通的 Flash 存储器减少。需要分配一整页(不确定有多少字节),但是一页对于您的 3 个字节来说绰绰有余。
请注意考虑磨损均衡,以防您需要经常存储这 3 个值(如果需要,请使用不同的页面)。
对于其他人:其他 STM32 型号有不同的应用笔记。