Потрібен енергонезалежний об'єм пам'яті з майже необмеженою здатністю операцій читання / запису


12

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

Під накопиченим підрахунком я маю на увазі сказати, що мікроконтролер використовує це місце пам'яті, щоб зберігати підрахунок події. Кількість потрібно зберігати під час відключення електроенергії, отже, потреба в НЕЗАПАДНОМУ пам'яті.

Крім того, часто відбувається збільшення події підрахунку, тому в пам'ять буде багато записів, отже, я вагаюся використовувати EEPROM.

Кращим інтерфейсом для зв'язку буде I2C, але інші альтернативи вітаються.

У верхній частині голови я передбачаю, що мікросхема енергонезалежної пам’яті SRAM з низькою потужністю, з можливістю живлення від резервного акумулятора, як монета, при відключенні живлення.


15
Ви хочете F-RAM.
Hearth

3
... і в чому питання?
Сир

2
Що ви зробите, якщо живлення починає виходити з ладу в середині операції запису I2C? Як ви можете бути впевнені, що ви не зіпсуєте рахунок? Ця проблема складніше, ніж ви думаєте, якщо ви не зможете виявити неминучі втрати електроенергії, і в такому випадку ви можете просто скопіювати лічильник бази оперативної пам'яті в типовий EEPROM.
Елліот Алдерсон

5
Як часто «часто»? Для однієї змінної навіть невеликий розмір EEPROM мав би досить тупо високу витривалість. Ви також матимете резервну копію останніх підрахунків x, якщо ваше останнє записування не вдалося.
hekete

Я пригадую, що деякі спогади, що не стосуються FLASH EE, пообіцяли 100 мільйонів циклів.
analogsystemsrf

Відповіді:


21

Три типи енергонезалежних пам'яті відповідають вашим потребам у порядку доступного розміру:

  • Носіть вирівняний EEPROM / FLASH.
  • Резервне копіювання акумулятора SRAM.
  • ФРАМ.

З точки зору вартості найкраща FRAM. Все, що вам потрібно, знаходиться всередині мікросхеми, включаючи резервні конденсатори для завершення запису. Однак доступні розміри низькі.
Резервне копіювання акумуляторної батареї SRAM - це велика і витратна матеріали.
Знос рівня EEPROM для вирівнювання зносу вимагає прошивки.


1
Дякую. Я перевірив FRAM, як запропонував @Hearth, і я думаю, що він найкраще відповідає моїм потребам. Просто сподіваюся, що я можу знайти варіант I2C. Також змінна акумулятора повинна бути довжиною лише 32 біти. Тож розмір насправді не є великою проблемою.
Сересо

3
@GH_eng I²C FRAM чіпи . Оскільки пам'ять йде досить дорого (будучи відносно новою технологією), але для того, що вам потрібно, альтернативи, ймовірно, коштують дорожче.
Hearth

3
Є також MRAM
DKNguyen

1
@GH_eng TI MSP430FR * вбудований у FRAM, я думаю. Хоча ви, можливо, вже обмежені у своєму MCU.
детлі

21

Ось що я зробив на продукт, який все ще знаходиться у масовому виробництві.

  • Зберігайте всі параметри та лічильники в оперативній пам'яті
  • Підключіть лінію переривання до детектора порогу напруги живлення
  • Коли спрацьовує перерва, вимкніть все, що споживає живлення (більшість периферійних пристроїв, світлодіодів тощо) та створіть резервну копію всієї ОЗУ, щоб миготіти.

Виявилося, що між тригером низької напруги та часом, коли ІС управління електроживленням запустив і зачинив усе (впорядковано), пройшло приблизно 10-20 мс. Працює це чи ні, залежить від накопичення енергії у вашому джерелі живлення, але навіть невеликий джерело може досить сповільнити це, щоб ви могли надійно записати невеликий набір даних.


1
@Hilmer Це дуже розумно! Добре знати. Можливо, CAP резервуару, що знаходиться перед входами EEPROM та MCU, додатково збільшить затримку часу. Тільки недоліком, ймовірно, є більше компонентів на друкованій платі.
Cerezo

На той час це було явно найдешевше рішення, включаючи нерухомість PCB. Звичайно, це залежить від вашої специфіки: у нас у запасних була запасна лінія GPIO, тож це було безкоштовно. Інше було всього кілька желейні боби (невеликі недорогі частини SMD)
Hilmar

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

@Mast: що, ймовірно , буде занадто дорого , і ви можете бути краще з альтернативним рішенням
Hilmar

6

Стверджується, що переключення MRAM (магніторезистивної оперативної пам’яті) має фактично нескінченну витривалість при записі (вони не знають жодного механізму, який спричинив би їх зношення). Я не знаю жодних подібних чіпів, які говорять про 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.
філо

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

5

Cypress робить те, що вони називають енергонезалежним SRAM . Це стандартний SRAM, який автоматично створює резервну копію при відмові живлення. Оскільки він записує лише енергонезалежну пам'ять при відключенні живлення, він має потенційно набагато більшу довговічність. Він випускається в серійній та паралельній версіях. Це може бути трохи зайвим, оскільки найменший - 64 Кбіт.

При нормальній роботі 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 досить повільно (мілісекунди), тому "часті записи" ОП можуть потребувати більш швидкого рішення ... ви припускали, що раз на секунду, але ОП залишила нас у темряві з цього приводу. І "очищення" EEPROM дійсно займе дуже-дуже тривалий час (секунди). Я припускаю, що ви можете просто перезаписати старі значення замість стирання, але якщо значення підрахунку не є суворо послідовними, важко буде зрозуміти, яке значення було останньою записаною величиною.
Елліот Олдерсон

@ElliotAlderson Ви, напевно, могли припустити, що колись було найвищим значенням, було б останнім. Очевидно, що немає ідеї, якщо раз у секунду вважається "частим" чи ні в цьому випадку. Тільки зазначивши, що для частот запису більше 1 секунди один від одного, EEPROM все ще є повністю життєздатним.
hekete

0

Тут є маса варіантів, але справжньою проблемою є запобігання пошкодження даних. Втрати потужності під час запису можуть пошкодити дані. I2C є хорошим варіантом для уникнення цього, оскільки, наприклад, за допомогою SPI ви зможете виявити, що запис (з точки зору пам'яті) з’являється для завершення на півдорозі через оновлення скажімо 4 байтів 32-бітного слова. I2C трохи міцніший, але лише трохи.

Моєю порадою було б зберігати 4 копії цінності. Таким чином, навіть якщо запис буде перервано, два завжди будуть відповідати.

FRAM або подібне, мабуть, найкращий варіант.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.