題:
需要具有幾乎無限的讀/寫操作能力的非易失性存儲IC
Cerezo
2019-07-05 18:28:31 UTC
view on stackexchange narkive permalink

我需要一個內存解決方案,該解決方案將用於跟踪基於微控制器的項目中的累計計數。

通過累計計數,我的意思是說微控制器使用此存儲位置來保留事件發生的計數。斷電期間需要保留該計數,因此需要非易失性存儲器。

另外,計數遞增事件的發生也很頻繁,因此會向存儲器進行大量寫入操作,因此我不願使用EEPROM。

首選的通信接口將是I2C,但歡迎其他替代方法。

我想到了一個SRAM低功耗易失性存儲器IC,可以選擇在斷電時由備用電池(例如鈕扣電池)供電。

您需要F-RAM。
...這是什麼問題?
如果電源在I2C寫操作過程中開始出現故障,該怎麼辦?您如何確定不會破壞計數?除非您可以檢測到即將發生的功率損耗,否則這個問題比您想像的要困難得多,在這種情況下,您只需將基於RAM的計數器複製到典型的EEPROM中即可。
“頻繁”有多頻繁?對於單個變量,即使是小型EEPROM也將具有非常高的耐久性。萬一您的上次寫入失敗,您還將備份最後的x個計數。
我記得一些老式的非FLASH EE存儲器承諾了1億個週期。
@analogsystemsrf可能不多。更新是“頻繁的”可能意味著每秒大約10000次更新。一年大約為3100萬秒。三年可能還不夠。
七 答案:
Jeroen3
2019-07-05 18:36:46 UTC
view on stackexchange narkive permalink

按照可用大小的順序,三種非易失性存儲器類型滿足您的需求:

  • 損耗均衡的EEPROM / FLASH。
  • 電池備用SRAM。
  • FRAM。

就成本而言,FRAM是最好的。您只需要在芯片內部,包括備用電容器即可完成寫入。但是可用大小很小。
備用電池SRAM龐大且材料昂貴。
損耗均衡的EEPROM需要固件來處理損耗均衡。

謝謝。我按照@Hearth的建議檢查了FRAM,我認為它最適合我的需求。只是希望我能找到一個I2C變種。同樣,累加器變量僅需為32位長。因此,大小並不是一個大問題。
@GH_eng [I²CFRAM芯片](https://www.digikey.com/products/zh/integrated-circuits-ics/memory/774?k=&pkeyword=&sv=0&pv2043=2&sf=1&FV=ffe00306%2Cf040013&quantity=&ColumnSort=0&page= 1&pageSize = 25)。隨著內存的發展,它相當昂貴(是一種相對較新的技術),但是對於您所需要的替代品可能會花費更多。
也有MRAM
@GH_eng我認為TI MSP430FR *內置了FRAM。儘管您可能已經對MCU有所限制。
Hilmar
2019-07-05 20:56:40 UTC
view on stackexchange narkive permalink

這是我對仍處於批量生產中的產品所做的工作。

  • 將所有參數和計數器保留在RAM中
  • 將中斷線連接到電源電壓閾值檢測器
  • 當中斷觸發時,請關閉所有消耗功率的設備(大多數外圍設備,LED等),並備份所有RAM以刷新。

結果證明,從低壓觸發器到電源管理IC插入並關閉所有設備(有序關閉)的時間大約有10-20ms。是否有效取決於電源中的能量存儲,但是即使是小容量的電源也可以使此速度足夠慢,從而可以可靠地寫入較小的數據集。

@Hilmer真是太聰明了!很高興知道。可能在EEPROM和MCU的輸入之前放置一個存儲器CAP將進一步增加時間延遲。唯一的缺點可能是PCB上的組件更多。
當時,它顯然是包括PCB房地產在內的最便宜的解決方案。當然,這取決於您的具體情況:我們有一個備用的GPIO線,所以這是免費的。其餘的只是幾個軟心豆粒(廉價的小型SMD零件)
如果確實需要,可以在電源中放一個足夠大的Elcap,而又不會太大而不會帶來麻煩的副作用,則可以延長10-20ms。
@Mast:可能太貴了,您可能會選擇其他解決方案更好
Joseph Sible-Reinstate Monica
2019-07-06 07:51:47 UTC
view on stackexchange narkive permalink
據稱

Toggle MRAM(磁阻RAM)具有有效的無限寫入耐力(他們不知道任何會導致寫入用盡的機制)。不過,我還不知道有哪些此類芯片會使用I2C,因此您必須選擇SPI。這是一個這樣的部分: https://www.digikey.com/product-detail/zh-CN/everspin-technologies-inc/MR25H256ACDF/819-1064-ND/8286370

Justme
2019-07-05 18:49:38 UTC
view on stackexchange narkive permalink

聽起來像您只能使用RTC時鐘芯片或模塊。這些具有備用電池,用於用戶數據的額外SRAM,並帶有I2C接口。

或者首先使用帶有電池供電的SRAM的MCU,因此不需要任何外部組件。

例如DS1307,DS1338。
不幸的是,板上使用的RTCC是DS3231M。引腳配置與DS1307 RTCC相同,但沒有內部備用數據寄存器。選擇它是因為它具有集成的振盪器。我感覺到了完整的電路審查:(!
crj11
2019-07-06 05:33:20 UTC
view on stackexchange narkive permalink

賽普拉斯製造了他們所說的非易失性SRAM。這是標準的SRAM,在斷電時會自動備份。由於它僅在電源故障時寫入非易失性存儲器,因此可能具有更大的耐久性。它有串行和並行版本。可能有點過大,因為最小的一個是64Kb。

在正常操作下,nvSRAM的行為類似於使用標准信號和時序的常規異步SRAM。 nvSRAM可以執行並行隨機訪問讀取和寫入,最快20 ns。

在發生電源故障時,nvSRAM會自動將SRAM數據的副本保存到非易失性存儲器中,該數據將受到20多年的保護。 SRAM和非易失性存儲器之間的傳輸是完全並行的,從而可以在8 ms或更短的時間內完成操作,而無需任何用戶干預。

上電時,nvSRAM將數據返回給SRAM,並且系統從中斷處繼續操作。 nvSRAM還提供用戶控制的軟件STORE和RECALL初始化命令,以及大多數版本中的用戶控制的硬件STORE命令。

NVSRAM Block Diagram

[Microchip有一些類似的產品。](https://www.microchip.com/design-centers/memory/serial-sram-serial-nvsram)
那東西很棒!
hekete
2019-07-05 20:36:45 UTC
view on stackexchange narkive permalink

對於單個4字節變量,EEPROM完全可以。

假設您每秒寫入一次,並且您具有典型的32Kb EEPROM,那麼我們可以承受100,000個寫入周期的保守壽命。

在進行清除操作之前,您可以寫入4個字節8000次。因此,即使使用保守的估計,也應該可以寫出8億次。

現在一年中只有3150萬秒,因此每秒寫一次就需要25年才能達到EEPROM耐久性的低端估算值。

當然,寫入EEPROM的速度非常慢(毫秒),因此OP的“頻繁寫入”可能需要更快的解決方案……您假設每秒一次,但是OP在那一點上使我們陷入了黑暗。確實,“清除” EEPROM將花費非常非常長的時間(秒)。我想您可以覆蓋舊值而不是擦除,但是如果計數值不是嚴格順序的,則很難確定哪個值是最後寫入的值。
-1
user
2019-07-09 21:20:53 UTC
view on stackexchange narkive permalink

這裡有很多選擇,但是真正的問題是阻止數據損壞。寫入期間斷電可能會損壞數據。I2C是避免這種情況的好選擇,因為例如使用SPI,您可能會發現(從內存的角度來看)出現寫操作,以完成更新32位字的4個字節的過程。I2C更強大,但只有一點。

我的建議是存儲該值的4個副本。這樣即使寫入中斷,兩個也總是匹配。

FRAM或類似的東西可能是最好的選擇。



該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 4.0許可。
Loading...