我需要一個內存解決方案,該解決方案將用於跟踪基於微控制器的項目中的累計計數。
通過累計計數,我的意思是說微控制器使用此存儲位置來保留事件發生的計數。斷電期間需要保留該計數,因此需要非易失性存儲器。
另外,計數遞增事件的發生也很頻繁,因此會向存儲器進行大量寫入操作,因此我不願使用EEPROM。
首選的通信接口將是I2C,但歡迎其他替代方法。
我想到了一個SRAM低功耗易失性存儲器IC,可以選擇在斷電時由備用電池(例如鈕扣電池)供電。
我需要一個內存解決方案,該解決方案將用於跟踪基於微控制器的項目中的累計計數。
通過累計計數,我的意思是說微控制器使用此存儲位置來保留事件發生的計數。斷電期間需要保留該計數,因此需要非易失性存儲器。
另外,計數遞增事件的發生也很頻繁,因此會向存儲器進行大量寫入操作,因此我不願使用EEPROM。
首選的通信接口將是I2C,但歡迎其他替代方法。
我想到了一個SRAM低功耗易失性存儲器IC,可以選擇在斷電時由備用電池(例如鈕扣電池)供電。
按照可用大小的順序,三種非易失性存儲器類型滿足您的需求:
就成本而言,FRAM是最好的。您只需要在芯片內部,包括備用電容器即可完成寫入。但是可用大小很小。
備用電池SRAM龐大且材料昂貴。
損耗均衡的EEPROM需要固件來處理損耗均衡。
這是我對仍處於批量生產中的產品所做的工作。
結果證明,從低壓觸發器到電源管理IC插入並關閉所有設備(有序關閉)的時間大約有10-20ms。是否有效取決於電源中的能量存儲,但是即使是小容量的電源也可以使此速度足夠慢,從而可以可靠地寫入較小的數據集。
Toggle MRAM(磁阻RAM)具有有效的無限寫入耐力(他們不知道任何會導致寫入用盡的機制)。不過,我還不知道有哪些此類芯片會使用I2C,因此您必須選擇SPI。這是一個這樣的部分: https://www.digikey.com/product-detail/zh-CN/everspin-technologies-inc/MR25H256ACDF/819-1064-ND/8286370
聽起來像您只能使用RTC時鐘芯片或模塊。這些具有備用電池,用於用戶數據的額外SRAM,並帶有I2C接口。
或者首先使用帶有電池供電的SRAM的MCU,因此不需要任何外部組件。
賽普拉斯製造了他們所說的非易失性SRAM。這是標準的SRAM,在斷電時會自動備份。由於它僅在電源故障時寫入非易失性存儲器,因此可能具有更大的耐久性。它有串行和並行版本。可能有點過大,因為最小的一個是64Kb。
在正常操作下,nvSRAM的行為類似於使用標准信號和時序的常規異步SRAM。 nvSRAM可以執行並行隨機訪問讀取和寫入,最快20 ns。
在發生電源故障時,nvSRAM會自動將SRAM數據的副本保存到非易失性存儲器中,該數據將受到20多年的保護。 SRAM和非易失性存儲器之間的傳輸是完全並行的,從而可以在8 ms或更短的時間內完成操作,而無需任何用戶干預。
上電時,nvSRAM將數據返回給SRAM,並且系統從中斷處繼續操作。 nvSRAM還提供用戶控制的軟件STORE和RECALL初始化命令,以及大多數版本中的用戶控制的硬件STORE命令。
對於單個4字節變量,EEPROM完全可以。
假設您每秒寫入一次,並且您具有典型的32Kb EEPROM,那麼我們可以承受100,000個寫入周期的保守壽命。
在進行清除操作之前,您可以寫入4個字節8000次。因此,即使使用保守的估計,也應該可以寫出8億次。
現在一年中只有3150萬秒,因此每秒寫一次就需要25年才能達到EEPROM耐久性的低端估算值。
這裡有很多選擇,但是真正的問題是阻止數據損壞。寫入期間斷電可能會損壞數據。I2C是避免這種情況的好選擇,因為例如使用SPI,您可能會發現(從內存的角度來看)出現寫操作,以完成更新32位字的4個字節的過程。I2C更強大,但只有一點。
我的建議是存儲該值的4個副本。這樣即使寫入中斷,兩個也總是匹配。
FRAM或類似的東西可能是最好的選擇。