Мне нужно решение для памяти, которое будет использоваться для отслеживания накопленного количества в проекте на основе микроконтроллера.
Под накопленным счетом я имею в виду, что микроконтроллер использует эту ячейку памяти, чтобы вести подсчет возникновения события. Счет должен быть сохранен во время перебоев в подаче электроэнергии, следовательно, необходима НЕТВОДИМАЯ память.
Кроме того, часто происходит событие увеличения числа отсчетов, поэтому будет много записей в память, поэтому я не решаюсь использовать EEPROM.
Предпочтительным интерфейсом связи будет I2C, но приветствуются другие альтернативы.
Вдобавок ко всему, я представляю микросхему энергонезависимой памяти SRAM с возможностью питания от резервной батареи, например, от батарейки-монетки при отключении питания.
Ответы:
Три типа энергонезависимой памяти соответствуют вашим потребностям в порядке доступного размера:
С точки зрения стоимости, FRAM является лучшим. Все, что вам нужно, это внутри чипа, включая резервные конденсаторы для завершения записи. Однако доступные размеры невелики.
Резервная батарея SRAM большая и дорогая по материалам.
EEPROM с выравниванием износа требует встроенного программного обеспечения для выравнивания износа.
источник
Вот что я сделал с продуктом, который все еще находится в массовом производстве.
Оказалось, что между триггером низкого напряжения и временем, когда микросхема управления питанием включала и выключала все (упорядоченно), было около 10-20 мс времени. Работает ли это или нет, зависит от накопителя энергии в вашем блоке питания, но даже небольшой блок питания может замедлить это настолько, чтобы вы могли надежно записать небольшой набор данных.
источник
Toggle MRAM (магниторезистивная RAM), как утверждается, обладает практически бесконечной стойкостью записи (они не знают ни о каком механизме, который заставил бы запись износиться). Я не знаю ни о каких таких чипах, которые говорят на I2C, поэтому вам придется согласиться на SPI. Вот одна из таких частей: https://www.digikey.com/product-detail/en/everspin-technologies-inc/MR25H256ACDF/819-1064-ND/8286370
источник
Похоже, вы можете просто использовать чип или модуль часов RTC. У них есть резервная батарея, дополнительная SRAM для пользовательских данных и поставляется с интерфейсом I2C.
Или для начала просто используйте MCU с SRAM с батарейным питанием, поэтому внешние компоненты не нужны.
источник
Cypress делает то, что они называют энергонезависимой SRAM . Это стандартная SRAM, которая автоматически выполняет резервное копирование при сбое питания. Поскольку он записывает данные только в энергонезависимую память при сбое питания, он потенциально обладает гораздо большей долговечностью. Он поставляется в последовательной и параллельной версиях. Это может быть немного излишним, так как самый маленький - 64Kb.
источник
Для одной 4-байтовой переменной EEPROM вполне подойдет.
Допустим, вы пишете в него один раз в секунду, и у вас типичная 32-килобайтная EEPROM, и мы идем с консервативной стойкостью в 100 000 циклов записи.
Вы можете написать свои 4 байта 8000 раз, прежде чем вам понадобится очистить. Так что это должно быть 800 миллионов раз, что вы можете написать это, даже используя консервативную оценку.
Теперь в году только 31,5 миллиона секунд в год, поэтому на одну запись в секунду потребуется 25 лет, чтобы достичь низкой оценки выносливости EEPROM.
источник
Здесь есть много вариантов, но реальная проблема - предотвратить повреждение данных. Потеря питания во время записи может повредить данные. I2C - хороший вариант, чтобы избежать этого, потому что, например, с SPI вы можете обнаружить, что запись (с точки зрения памяти) завершается на полпути путем обновления, скажем, 4 байтов 32-битного слова. I2C немного более устойчив, но только немного.
Мой совет будет хранить 4 копии стоимости. Таким образом, даже если запись прерывается, два всегда будут совпадать.
FRAM или аналогичный, вероятно, лучший вариант.
источник