Alternatywy dla korzystania z EEPROM

9

Jak rozumiem, EEPROM jest częścią komputera (w moim przypadku mikrokontrolera AVR), który przechowuje dane i utrzymuje je nawet wtedy, gdy urządzenie całkowicie się wyłączy. Pozwala na zapisywanie danych i czytanie z nich.

Problem, który widzę, polega na tym, że ma on skończone życie i dość krótkie. Innymi słowy, mogę czytać / pisać skończoną liczbę razy, zanim wyczerpię pamięć EEPROM.

To, czego szukam, to sposób na osiągnięcie tej samej funkcjonalności co EEPROM, ale w niewielkiej obudowie. Przypuszczam, że mogę użyć czegoś takiego jak karta microSD, ale wolałbym rozwiązanie, które nie wymaga od użytkownika zakupu karty pamięci. Dodatkowo potrzebuję tylko najwyżej kilku bajtów miejsca. Powiedzmy, że 1 kB jest bardzo, bardzo konserwatywny. Wydałbym więcej niż potrzeba, aby pomieścić jakąkolwiek kartę pamięci.

Jakie są moje opcje? Czy są jakieś wspólne rozwiązania IC, które pozwoliłyby mi osiągnąć taki rodzaj przechowywania / wyszukiwania danych, bez krótkiej żywotności i wysokich kosztów?

capcom
źródło
3
Jak często trzeba zapisywać te kilka bajtów? Oto kluczowe pytanie. Czy to jest każda minuta? Godzina? milisekunda?
Gustavo Litovsky
Na przykład pamięć EEPROM ATmega32 ma żywotność 100 000 cykli zapisu / odczytu. To może być więcej niż wystarczające, w zależności od aplikacji.
m.Alin
3
Powiedziałeś „Mogę tylko czytać / pisać skończoną liczbę razy, zanim wyczerpię pamięć EEPROM”, co nie jest całkiem właściwe. Zużywasz pamięć EEPROM zapisami, ale ogólnie odczyty nie są ograniczone.
Photon
@GustavoLitovsky Powiedzmy, raz na minutę. W takim przypadku dla ATmega32, który jest stale włączony, będzie trwał dwa lata. Myślę, że to w porządku, kiedy patrzę na to z perspektywy.
capcom
@ThePhoton Ah, ok. Nigdy tego nie wiedziałem, dzięki. Nie żeby nic to zmieniało, ponieważ wymagam zarówno odczytu / zapisu.
capcom

Odpowiedzi:

4

Tak, EEPROM to rodzaj pamięci nieulotnej, która może przechowywać dane nawet bez zasilania przez znaczny okres czasu (rzeczywisty czas zależy od temperatury i innych warunków).

Istnieje kilka innych nielotnych rozwiązań, które należy rozważyć:

1) Wewnętrzna pamięć Flash - większość dzisiejszych mikrokontrolerów ma Flash do przechowywania kodu, a niektóre zapewniają także dane użytkownika i logowanie. Ma to również ograniczone cykle zapisu i wymaga wymazywania bloku przed zmianą bitów z „1” na „0” (w międzyczasie przechowujesz dane gdzie indziej, a następnie przepisujesz je).

2) Wewnętrzna pamięć FRAM - TI ma urządzenia z pamięcią FRAM, która jest nieulotna, można uzyskać do niej bardzo prosty dostęp (jak każda inna lokalizacja w pamięci. Odczyty są również destrukcyjne podczas zapisu (choć w twoim przypadku może to nie mieć znaczenia, ponieważ liczba cykli wynosi 10) ^ 13 lub mniej więcej przy 85 stopniach Celsjusza).

3) Zewnętrzna pamięć Flash - Możesz dodać pamięć zewnętrznie, aby pomieścić kilka megabitów danych raczej niedrogo.

W zależności od tempa, w jakim chcesz oszczędzać (i czy możesz dobrze zamknąć), możesz zwiększyć efektywną liczbę dostępnych cykli.

Gustavo Litovsky
źródło
12

Sposobem na pokonanie ograniczenia wytrzymałości pamięci EEPROM jest zastosowanie algorytmu wyrównywania zużycia. Zasadniczo dla każdego rekordu, który chcesz zapisać, przydziel do niego N-razy wymaganą pamięć i odpowiednią przestrzeń dla wartości indeksu N, a następnie użyj wnioskowania, aby dowiedzieć się, który jest „bieżącym rekordem”, a który następnym rekordem do zapisania do. Jest to dobrze opisane w tej nocie aplikacji AVR .

vicatcu
źródło
7

Innym potencjalnym rozwiązaniem jest trochę statycznego taranowania i bateria. Ma to ograniczoną żywotność, ponieważ bateria w końcu umrze, ale jest nieograniczona w cyklach zapisu. Możesz również użyć czegoś takiego jak kondensator o dużej pojemności, jeśli wiesz, że twój czas wyłączenia będzie niewielką wartością. Komórka litowa może długo pracować w takich aplikacjach, jeśli odpowiednio ją zaprojektujesz.

Istnieją również części, które zawierają RTC, nvram i baterię (aby utrzymać działanie zegara) w jednej części. Wadą jest to, że jeśli wewnętrzne źródło zasilania ulegnie uszkodzeniu, stracisz całą część (nie tylko akumulator), ale w zależności od tego, jak długo twój produkt powinien trwać, może to nie stanowić problemu.

Michael Kohne
źródło
2

Nie wiem, jaki masz budżet, ale możesz rzucić okiem na MRAM , który jest szybki jak DRAM, ale nieulotny jak Flash. Oczywiście są one znacznie droższe niż układy EEPROM.

Mam wiele przykładowych układów scalonych z Freescale wiele lat temu, ale nigdy nie miałem okazji ich użyć, więc nie mogę naprawdę powiedzieć, czy skończysz z dużo prostszym obwodem, niż jeśli musisz podłączyć kartę SD otwór.

Szymon
źródło
1

Jestem raczej informatykiem niż inżynierem elektrykiem, ale myślę, że istnieje inne podejście do problemu cyklu życia pamięci flash:

Rozumiem, że problem cyklu życia we flashu polega na usuwaniu, a nie pisaniu. Możesz pisać tyle razy, ile chcesz, z wyjątkiem drobnych szczegółów, że zapisy są tylko jednokierunkowe.

Ponieważ potrzebna pamięć jest niewielka w porównaniu z wielkością nawet małych urządzeń, które możesz (zakładając, że masz wystarczająco niski poziom dostępu do sprzętu) wypisać ją wiele razy, za każdym razem w innym miejscu. Upewnij się, że dane można odróżnić od niepisanej pamięci (uzupełnij ją, jeśli to konieczne, aby to zrobić), a ostatnia zapisana komórka to bieżąca wartość.

Co więcej, jeśli twoje dane są faktycznie zwiększane licznikiem raz na zapis, możesz uzyskać jeszcze więcej, nie zapisując ich wcale, ale raczej zapisując jeden bit na tik, liczba jest liczbą zapisanych bitów.

Loren Pechtel
źródło
1

Seryjny NVSRAM od Microchip może pasować do twojego rachunku:

Serial NVSRAM offers non-volatile RAM storage and is ideal for applications that need to write very often to the memory. This device is significantly lower cost than other non-volatile RAM devices and the data is backed using an external battery. This 8-pin, SPI device supports unlimited instantaneous writes to the memory array, making it ideal in applications such as meters, data loggers, data recorders, black boxes. These devices are available in 512Kbits and 1Mbit densities.

Ta rodzina pamięci szeregowych obsługuje tworzenie kopii zapasowych baterii. Datasheet wspomina pobór prądu 1UA od akumulatora. Cena jest mniejsza niż 2 USD za 1 000 sztuk, a bezpłatne próbki są oferowane przez Microchip. Układy scalone są dostępne w przyjaznych hobbystom pakietach PDIP i SOIC.

Chetan Bhargava
źródło
1

Możesz zajrzeć do szeregowej pamięci RAM. Głównym producentem wydaje się być Cypress (z domu Ramtron). Oto jedna część:

http://www.cypress.com/?rID=73530

Jest dostępny w dużych rozmiarach (największy, jaki widziałem to 2Mbit), jest zgodny z protokołem MRAM lub flash, ma bajt do odczytu i zapisu bez konieczności kasowania, jest szybki --- pisze zgodnie z protokołem SPI --- i retencja jest absurdalnie wysoka.

To powiedziawszy, trochę trudno znaleźć. Niewielu dystrybutorów go nosi, a ci, którzy wydają się sprzedawać natychmiast --- Cypress ma własny sklep (bezpłatna wysyłka) i między mną, zamawiając dwie części FM25V04, które zostały wyprzedane. Najwyraźniej sześć tygodni.

David Given
źródło