Нужна энергонезависимая ИС памяти с почти неограниченными возможностями чтения / записи


12

Мне нужно решение для памяти, которое будет использоваться для отслеживания накопленного количества в проекте на основе микроконтроллера.

Под накопленным счетом я имею в виду, что микроконтроллер использует эту ячейку памяти, чтобы вести подсчет возникновения события. Счет должен быть сохранен во время перебоев в подаче электроэнергии, следовательно, необходима НЕТВОДИМАЯ память.

Кроме того, часто происходит событие увеличения числа отсчетов, поэтому будет много записей в память, поэтому я не решаюсь использовать EEPROM.

Предпочтительным интерфейсом связи будет I2C, но приветствуются другие альтернативы.

Вдобавок ко всему, я представляю микросхему энергонезависимой памяти SRAM с возможностью питания от резервной батареи, например, от батарейки-монетки при отключении питания.


15
Вы хотите F-RAM.
Очаг

3
... а в чем вопрос?
Творог

2
Что вы будете делать, если во время операции записи I2C начнется сбой питания? Как ты можешь быть уверен, что не испортишь счет? Эта проблема сложнее, чем вы думаете, если только вы не можете обнаружить неизбежную потерю мощности, и в этом случае вы можете просто скопировать свой счетчик базы ОЗУ в типичную ЭСППЗУ.
Эллиот Олдерсон

5
Насколько часто "часто"? Для одной переменной даже EEPROM небольшого размера будет иметь довольно тупо высокую выносливость. У вас также будет резервная копия последних значений x на случай, если ваша последняя запись не удалась.
hekete

Я вспоминаю некоторые старые воспоминания без флэш-памяти EE, обещавшие 100 миллионов циклов.
аналоговые системы

Ответы:


21

Три типа энергонезависимой памяти соответствуют вашим потребностям в порядке доступного размера:

  • Носите выровненную EEPROM / FLASH.
  • Резервный аккумулятор SRAM.
  • FRAM.

С точки зрения стоимости, FRAM является лучшим. Все, что вам нужно, это внутри чипа, включая резервные конденсаторы для завершения записи. Однако доступные размеры невелики.
Резервная батарея SRAM большая и дорогая по материалам.
EEPROM с выравниванием износа требует встроенного программного обеспечения для выравнивания износа.


1
Благодарю. Я проверил FRAM, как предложено @Hearth, и я думаю, что это лучше всего соответствует моим потребностям. Просто надеюсь, что смогу найти вариант I2C. Также переменная аккумулятора должна иметь длину всего 32 бита. Таким образом, размер не является большой проблемой.
Cerezo

3
@GH_eng I²C FRAM чипсы . Поскольку память идет, это довольно дорого (будучи относительно новой технологией), но для того, что вам нужно, альтернативы, вероятно, будут стоить дороже.
Очаг

3
Существует также MRAM
DKNguyen

1
@ GH_eng TI MSP430FR * встроена в FRAM, я думаю. Хотя вы уже можете быть ограничены в отношении вашего MCU.
детально

21

Вот что я сделал с продуктом, который все еще находится в массовом производстве.

  • Храните все параметры и счетчики в оперативной памяти
  • Подключите линию прерывания к пороговому детектору напряжения питания
  • Когда прерывание срабатывает, отключите все, что потребляет электроэнергию (большинство периферийных устройств, светодиоды и т. Д.), И выполните резервное копирование всей оперативной памяти для прошивки.

Оказалось, что между триггером низкого напряжения и временем, когда микросхема управления питанием включала и выключала все (упорядоченно), было около 10-20 мс времени. Работает ли это или нет, зависит от накопителя энергии в вашем блоке питания, но даже небольшой блок питания может замедлить это настолько, чтобы вы могли надежно записать небольшой набор данных.


1
@ Хилмер Это довольно умно! Хорошо знать. Вероятно, CAP резервуара, размещенный перед входами EEPROM и MCU, еще больше увеличит задержку по времени. Единственный недостаток, вероятно, больше компонентов на печатной плате.
Сересо

В то время это было однозначно самое дешевое решение, включая недвижимость на печатных платах. Конечно, это зависит от вашей специфики: у нас была запасная линия GPIO, поэтому она была бесплатной. Остальное было всего несколько желейных бобов (небольшие недорогие SMD-детали)
Хильмар

Вы, вероятно, можете растянуть эти 10-20 мсек, если вам действительно нужно, поместив elcap в запас, достаточно большой, чтобы помочь, и не слишком большой, чтобы иметь неприятные побочные эффекты.
Мачта

@Mast: это, вероятно, будет слишком дорого, и вам может быть лучше с альтернативным решением
Хилмар

6

Toggle MRAM (магниторезистивная RAM), как утверждается, обладает практически бесконечной стойкостью записи (они не знают ни о каком механизме, который заставил бы запись износиться). Я не знаю ни о каких таких чипах, которые говорят на I2C, поэтому вам придется согласиться на SPI. Вот одна из таких частей: https://www.digikey.com/product-detail/en/everspin-technologies-inc/MR25H256ACDF/819-1064-ND/8286370


5

Похоже, вы можете просто использовать чип или модуль часов RTC. У них есть резервная батарея, дополнительная SRAM для пользовательских данных и поставляется с интерфейсом I2C.

Или для начала просто используйте MCU с SRAM с батарейным питанием, поэтому внешние компоненты не нужны.


Например DS1307, DS1338.
filo

1
К сожалению, RTCC используется на плате DS3231M. Та же конфигурация контактов, что и у DS1307 RTCC, но без внутренних резервных регистров данных. Выбрал это из-за его встроенного генератора. Я чувствую полный обзор цепи :(!
Cerezo

5

Cypress делает то, что они называют энергонезависимой SRAM . Это стандартная SRAM, которая автоматически выполняет резервное копирование при сбое питания. Поскольку он записывает данные только в энергонезависимую память при сбое питания, он потенциально обладает гораздо большей долговечностью. Он поставляется в последовательной и параллельной версиях. Это может быть немного излишним, так как самый маленький - 64Kb.

При нормальной работе nvSRAM ведет себя как обычная асинхронная SRAM с использованием стандартных сигналов и синхронизации. nvSRAM выполняет параллельное чтение и запись произвольного доступа со скоростью 20 нс.

При сбое питания nvSRAM автоматически сохраняет копию данных SRAM в энергонезависимой памяти, где данные защищены более 20 лет. Передача между SRAM и энергонезависимой памятью полностью параллельна, что позволяет завершить операцию за 8 мс или меньше без какого-либо вмешательства пользователя.

При включении nvSRAM возвращает данные обратно в SRAM, и работа системы продолжается с того места, где она остановилась. nvSRAM также предоставляет управляемые пользователем программные команды STORE и RECALL, а также управляемую пользователем аппаратную команду STORE в большинстве версий.

Блок-схема NVSRAM



это великолепно!
Томачи

4

Для одной 4-байтовой переменной EEPROM вполне подойдет.

Допустим, вы пишете в него один раз в секунду, и у вас типичная 32-килобайтная EEPROM, и мы идем с консервативной стойкостью в 100 000 циклов записи.

Вы можете написать свои 4 байта 8000 раз, прежде чем вам понадобится очистить. Так что это должно быть 800 миллионов раз, что вы можете написать это, даже используя консервативную оценку.

Теперь в году только 31,5 миллиона секунд в год, поэтому на одну запись в секунду потребуется 25 лет, чтобы достичь низкой оценки выносливости EEPROM.


1
Конечно, запись в EEPROM довольно медленная (миллисекунды), поэтому для «частой записи» OP может потребоваться более быстрое решение ... вы предполагали это раз в секунду, но OP оставил нас в неведении по этому вопросу. И «очистка» EEPROM займет очень и очень много времени (секунд). Я предполагаю, что вы могли бы просто перезаписать старые значения вместо стирания, но если значения счетчика не являются строго последовательными, было бы трудно определить, какое значение было последним записанным значением.
Эллиот Олдерсон

@ElliotAlderson Вы, вероятно, могли бы предположить, что самое высокое значение будет последним. Понятно, что понятия не имеет, считается ли раз в секунду «частым» или нет в этом случае. Просто отметив, что для частот записи с интервалом более 1 секунды EEPROM все еще полностью жизнеспособен.
Гекете

0

Здесь есть много вариантов, но реальная проблема - предотвратить повреждение данных. Потеря питания во время записи может повредить данные. I2C - хороший вариант, чтобы избежать этого, потому что, например, с SPI вы можете обнаружить, что запись (с точки зрения памяти) завершается на полпути путем обновления, скажем, 4 байтов 32-битного слова. I2C немного более устойчив, но только немного.

Мой совет будет хранить 4 копии стоимости. Таким образом, даже если запись прерывается, два всегда будут совпадать.

FRAM или аналогичный, вероятно, лучший вариант.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.