logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Wybór pamięci do ATmega128: SPI DataFlash vs I2C EEPROM vs SRAM 62256

wasi 07 Gru 2005 00:32 3534 6
REKLAMA
  • #1 2060962
    wasi
    Poziom 12  
    Posty: 75
    Ocena: 5
    Witam.
    Mam układ (Master), który na podstawie konfiguracji zapisywanej w 8kBajtach pamięci EEPROM (AT24C64) odczytuje dane z ok 100 układów (Slave) rozproszonych w sieci RS485. Układ działa ok i nie ma z nim problemów jednak chciałem przyspieszyć jego działanie, bo ok 90% czasu zajmuje odczyt konfiguracji z pamięci. Układ master jest oparty o AT89C2051. Wymyśliłem, że najciekawszy będzie dla mnie procek ATmega128 a do niego chciałem podłączyć zewnętrzną pamięć, w niej przechowywać konfigurację, tymczasowe wyniki, itp. Problemem jednak jest dla mnie wybór właściwej pamięci. Stąd też moich kilka prostych pytań:

    1. 400kHz I2C a 20MHz ISP. Ile razy szybszy jest odczyt (i ew zapis) pamięci DataFlash od I2c EEPROM?
    2. W EEPROMie można zapisywać do ok 1000000 razy a w DataFlash? Nigdzie nie znalazłem zapisu na ten temat (może ślepy jestem :) ).
    3. Czy zastosowanie SRAM rodzaju 62256 będzie lepszym rozwiązaniem niż DataFlash. W końcu SRAM trzeba podtrzymywać ale z DataFlash jest mniej zabawy (mniej pinów do obsługi).

    Czy ktoś potrafi mi pomóc ?
  • REKLAMA
  • Pomocny post
    #2 2061126
    al555
    Poziom 20  
    Posty: 485
    Pomógł: 32
    Ocena: 8
    Witam,

    wasi napisał:

    1. 400kHz I2C a 20MHz ISP. Ile razy szybszy jest odczyt (i ew zapis) pamięci DataFlash od I2c EEPROM?

    Po pierwsze: nie osiągniesz 20MHz transmisji do pamięci DataFlash bo największa dopuszczalna częstotliwość pracy ATmega128 to 16MHz, a do tego częstotliowść pracy magistrali SPI ( a nie ISP In Cicuit Programing - programownie w układzie ) jest Fkwarcu /2 to wychodzi ok 8MHz.
    Przy odczycie możesz w przyblizeniu podzielić 8MHz/400kHz =~ 20x szybciej.
    Przy zapisie transmisja też odbywa się z taką samą prekością tylko musisz brać pod uwagę czas przerwy potrzebny na zapis (kilka ms) po zapełnieniu bufora np. w DataFlashu 264B..1056B w zalezności od typu, w
    EEPROMie na I2C te bufory są chyba mniejsze więc czasy zapisu będą dłuższe( już nie pamiętam dokładnie ...)
    NIe zapomnij że gotowe biblioteki do DataFlasha nie są tak łatwo dostępne jak dla EEPROMów
    wasi napisał:

    2. W EEPROMie można zapisywać do ok 1000000 razy a w DataFlash? Nigdzie nie znalazłem zapisu na ten temat (może ślepy jestem :) ).

    O ile się nie mylę to DataFlash nie ma ograniczeń.

    wasi napisał:

    3. Czy zastosowanie SRAM rodzaju 62256 będzie lepszym rozwiązaniem niż DataFlash. W końcu SRAM trzeba podtrzymywać ale z DataFlash jest mniej zabawy (mniej pinów do obsługi).

    Zastosowanie zewnętrzengo RAMu to najszybsze rozwiązanie, a ATmega128 ma wyprawodzoną zewnęrzną magistralę, zapisywanie i odczyt danych odbywa się z częstotliwością zegara ( lub 2x mniejszą - nie jestem pewnien) i bez żadnych opóźnień, zapis to jedna linijka w C

    wasi napisał:

    Czy ktoś potrafi mi pomóc ?


    Mam nadzieję że pomogłem.

    Pozdrawiam
  • REKLAMA
  • #3 2062119
    wasi
    Poziom 12  
    Posty: 75
    Ocena: 5
    Rzeczywiście chyba poprzestawiałem literki w ISP/SPI :).

    Jeśli nit ma ograniczenia w ilości zapisów na DataFlash to jet to szeregowa pamięć SRAM "DataFlash employs proven NOR technology (100% good bits) and a robust architecture featuring on-board SRAM buffers, small pages and flexible op codes." (Atmel) ??

    No rozumiem że podłączenie SRAM do mego128 jest najprostsze ze strony programowej ale czy jest opłacalna zabawa z podłączeniem jeśli cena obu układów jest podobna a dodatkowo DataFlash ma w tej samej cenie min 8xwięcej pojemności. Pytam poprostu czy Ty czy ktoś inny miał już do wyboru pomiędzy EEPROM, DataFlash i SRAM i dlaczego nie wybrał DataFlash albo czemu SRAM? Bo jest zasadnicza różnica: EEPROM: mało i wolno, DataFlash: Dużo i 20x szybciej oraz SRAM: 32x więcej (niż EEPROM) i bardzo szybko.
  • #4 2063837
    elektryk
    Poziom 42  
    Posty: 11029
    Pomógł: 439
    Ocena: 241
    Może zaczniemy od tego ile jest tych danych i jak często są odczytywane? Co znaczy że całość pracuje "wolno".
  • REKLAMA
  • #5 2064049
    wasi
    Poziom 12  
    Posty: 75
    Ocena: 5
    W obecnym układzie znajduje się EEPROM 24C64 (8kB). Cała pamięć jest bajt po bajcie odczytywana i na jej podstawie ustalane są wartości podawane cyklicznie do układów w sieci. Zapis konfiguracji odbywa się właściwie jednorazowo. W tej chwili cykl pracy systemu wynosi ok 3 sekund a w nowej wersji chciałbym go skrócić do max 0.5 - 1 sekundy. Chciałbym, przy okazji rozbudowy zwiększyć ilość modułów w sieci, a co za tym idzie również i ilość pamięci konfiguracyjnej. Założyłem, że do konfiguracji wystarczy 32kB (czyli 4x więcej) a do przyspieszenia obliczeń (oraz zminimalizowania ilości wymian w sieci) wykorzystałbym drugie 32kB (nowego RAM). Czyli faktycznie potrzebuję przyspieszenia o 24x (z 3 sek do 0.5 sek * 8kB na 32kB czyli 6*4).
    No i pytanie czy DafaFlash wystarczy do spełnienia tych założeń czy jednak wykorzystać SRAM. Nadmiar pamięci z DataFlash jest dodatkowym atutem :) Problem jest w tym, że na temat DataFlash jest mało informacji na sieci.
    Z obliczeń Al555 wynika, że przy zastosowaniu DataFlash nie uda mi się przyspiesyć odczytu więcej niż o 20x. A dodatkowo jeśli DataFlash będzie używany jako RAM i ilość odczytów wzrośnie 2x to przyspieszenie całości będzie mozliwe na poziomie 10x. Czy moje przypuszczenie jest słuszne ??
  • REKLAMA
  • #6 2064169
    marek_Łódź
    Poziom 36  
    Posty: 3103
    Pomógł: 208
    Ocena: 66
    Jak napisano DataFlash dołączona do AVR na SPI pozwala odczytać bajt w czasie trochę powyżej 1us (8MHz daje 8bit/us jeśli nie uwzględniamy czynności organizacyjnych). Dla 64 kilobajtów daje to czas rzędu 100ms czyli powiedzmy 1/10 sekundy. W przypadku pamięci z interfejsem równoległym (równoległy EEPROM, SRAM) czas ten można skrócić z 10x.

    Oczywiście w przypadku wymiany danych (zapis) dla DataFlash czasy się znacznie wydłużą (20ms/ 0.5KB stronę daje tylko ok. 25KB/s).

    Rozwiązaniem optymalnym czasowo jest w takim przypadku SRAM, ewentualnie z podtrzymaniem (droższy) np. kości Dallasa (Maxim) albo FRAM (nieulotne RAMy). ps jeśli chodzi o jednostkową aplikację to od maxima można wydusić darmowe próbki.

    wasi napisał:
    Problem jest w tym, że na temat DataFlash jest mało informacji na sieci.
    Chodzi o soft (gotowce)?

    http://www.fcdpj.com/news/31/2005-8-23_12504750718.html
    http://www.fractal.com.ru/index.php?p=index&sp=p_asm&ssp=spk1-2&PHPSESSID=c4f67d973ec96337602ee00c2666188d (z cyrylicą w tle - aż oczy bolą).
  • #7 2066418
    elektryk
    Poziom 42  
    Posty: 11029
    Pomógł: 439
    Ocena: 241
    To może zwykłe pamięci SPI z serii 25xxxx też mają zegar do prędkości 20MHz, ale za to są bardziej rozpowszechnione na rynku i raczej więcej się znajdzie przykładów. Jeśli chodzi o koszt końcowy to ja bym optował za zwykłą pamięcią równoległą, można do niej załadować konfiguracje na starcie a potem tylko skanować sieć.

Podsumowanie tematu

✨ Dyskusja dotyczy wyboru odpowiedniej pamięci zewnętrznej do mikrokontrolera ATmega128 w celu przyspieszenia odczytu konfiguracji i zwiększenia pojemności pamięci w systemie sterującym siecią RS485. Porównano trzy typy pamięci: SPI DataFlash, I2C EEPROM (np. AT24C64) oraz SRAM 62256. DataFlash oferuje znacznie wyższą prędkość transmisji (do około 8 MHz na SPI, co jest około 20 razy szybciej niż 400 kHz I2C EEPROM) oraz większą pojemność przy podobnej cenie, jednak ma ograniczenia czasowe związane z zapisem (kilka ms na stronę) i mniejszą dostępność gotowych bibliotek. EEPROM cechuje się dużą trwałością zapisu (około 1 000 000 cykli), natomiast trwałość zapisu DataFlash nie jest jednoznacznie określona, ale jest uważana za wysoką. SRAM 62256 zapewnia najszybszy dostęp dzięki równoległemu interfejsowi i braku opóźnień zapisu, lecz wymaga podtrzymania zasilania, co zwiększa koszty i złożoność systemu. W praktyce, dla wymaganej pojemności 32 kB konfiguracji i dodatkowych 32 kB pamięci tymczasowej, SRAM jest optymalny pod względem szybkości, natomiast DataFlash oferuje większą pojemność i prostszą obsługę bez konieczności podtrzymania zasilania. Rozwiązania alternatywne to pamięci FRAM lub pamięci z podtrzymaniem (np. Dallas/Maxim). Wskazano również, że standardowe pamięci SPI z serii 25xxxx mogą być dobrym kompromisem ze względu na powszechność i dostępność przykładów. Ostateczny wybór zależy od wymagań dotyczących szybkości, pojemności, trwałości zapisu oraz kosztów implementacji.
Wygenerowane przez model językowy.
REKLAMA