我目前在一个嵌入式项目中工作,其中有一个计数器将一直处于活动状态。如果断电,那么我还必须存储上一个计数器状态,并在下次启动时将其加载回去。因此,我打算使用EEPROM,在其中我将连续写入计数器值。但是我读过某个地方EEPROM具有大约100,000的读/写寿命,我将每24小时更新该计数器大约120,000。因此,我正在寻找替代方法来完成此任务。请给我您的建议。
我目前在一个嵌入式项目中工作,其中有一个计数器将一直处于活动状态。如果断电,那么我还必须存储上一个计数器状态,并在下次启动时将其加载回去。因此,我打算使用EEPROM,在其中我将连续写入计数器值。但是我读过某个地方EEPROM具有大约100,000的读/写寿命,我将每24小时更新该计数器大约120,000。因此,我正在寻找替代方法来完成此任务。请给我您的建议。
Answers:
另一种解决方案是使用带有非易失性FRAM的微控制器。FRAM的写入周期不受EEPROM的限制。
TI的某些MSP430产品可与FRAM一起使用,这是与您所描述的应用程序相似的链接:
这是有关FRAM的维基百科文章:FRAM
我在当前项目中有这个问题。
我处理它的方法是将计数器的实时值保留在RAM中。我添加了一些硬件,以便微控制器可以检测到原始输入电源电压低。如果是这样,它将停止正在执行的操作,将实时计数器值保存在EEPROM中,然后等待查看原始电源电压。如果它返回并带有一些滞后,则微控制器实际上会重新启动。否则,如果电源继续掉电,则微控制器最终将停止运转。下次重启时,计数器值从EEPROM加载,然后再次在RAM中实时使用,直到下次掉电为止。
将很小的值写入EEPROM不需要很长时间。现有电源系统很可能具有足够的能量存储,可以检测到电压变低,并且在微控制器的电源低于工作或EEPROM写入阈值之前,仍具有足够的保证运行时间。
在我的情况下,唯一的附加硬件是一个肖特基二极管,以防止直流电源在向下的途中从本地储能器中吸取电荷,并使用两个电阻作为分压器,以便微控制器可以读取原始输入电压。剩下的就是固件。
重要的是要注意,您应该注意最终电源为微型计算机供电的输入电压,而不是直接为微型计算机的电源电压供电。当后者变低时,可能为时已晚。希望有一个电压范围低于一切正常运行时的最坏情况,并且高于微控制器的电源以保证微控制器的稳压电压。在我的情况下,微控制器的电源是由48 V供电的降压稳压器,因此有很大的范围低于正常范围,但微控制器仍可以可靠地工作。
使用FRAM芯片,例如FM24C04B。它们具有极高的写入耐久性,并且是非易失性的。
https://www.mouser.com/ds/2/100/001-84446_FM24C04B_4_KBIT_512_X_8_SERIAL_I2C_F-RAM-477782.pdf
您也可以使用电池供电的SRAM(NVRAM)模块。例如M48Z02-150PC1
我决定使用“ ds1307 RTC”。因为它具有54byte的后备电源SRAM。这允许无限的读/写周期。
A)在关闭期间,使用100 µF或更大的电容器为计数器加电。或保持计数器值所需的任何逻辑。
B)使用磁芯存储器,它们可能很难设置。
C)制作一个电动机控制的电位器(例如伺服系统),在某个时候您的计数器会溢出,对吗?将其映射到360度。然后建立一个反馈回路,以便您可以数字方式设置电位计的值并以数字方式读取它。
D)每隔一分钟将您的计数器值发送到一个或多个服务器,并让它们在关闭时间为您记住该值。然后,一旦电源恢复供电,即可取回计数器值。