Forum: Mikrocontroller und Digitale Elektronik Suche Speicher-IC (EEPROM / Flash)


von Adam P. (adamap)


Lesenswert?

Morgen zusammen,

für ein kleines Projekt mit einem ATmega2560 suche ich ein externen 
Speicher, da die internen 4 kbytes EEPROM leider nicht ausreichen.

Meine Recherchen haben mich eher verunsichert als, dass ich das perfekte 
Produkt gefunden hätte.

Mein Wunsch war eine kleine Platine mit dem IC drauf, Arduino-Style -
doch da habe ich nichts passendes gefunden:
Ein einzelnes IC und eine 8 Pin SOIC Adapterplatine wirds auch tun.

64 kybtes sollten es dann schon mindestens sein, mehr ist immer besser.

Die meisten verwenden SPI mit max 3,6V...
5V wird man wohl nicht finden, oder?

OK, da könnte ich ein Pegelwandler dazwischen hängen, doch welche sind 
für höhere Geschwindigkeiten ausgelegt.
Die "YF08E" habe ich mal mit einem Frequenzgenerator und Oszi getestet, 
da sah das Signal bei 1MHz nicht mehr so dolle aus.

Gefunden habe ich ICs von Winbond und Macronix (64 Mbit / 16 Mbit).
So wie ich es richtig gesehen habe, benötigt man bei denen einen 4 kbyte 
Buffer um zu lesen/schreiben? Das ist natrülich schon viel.
2 kbyte könnte ich spendieren, gibt es evtl. noch kleinere Page Größen?

Hoffe Ihr habt ein paar Ideen.
Gruß Adam

von Purzel H. (hacky)


Lesenswert?

Schau mal unter FRAM, im SO8 Gehaeuse, nicht zu teuer.
Oder NOR Flash zB AT45DB040

: Bearbeitet durch User
von H. H. (Gast)


Lesenswert?


von H.Joachim S. (crazyhorse)


Lesenswert?

5V schränkt die Suche natürlich deutlich ein, es wird immer weniger. 
Falls du oft und/oder schnell schreiben willst: FRAM.

MB85RC256 wären 32k, kannst mehrere an den Bus hängen.

von Adam P. (adamap)


Lesenswert?

H.Joachim S. schrieb:
> Falls du oft und/oder schnell schreiben willst: FRAM.

Es muss nicht schnell sein und oft auch nicht.
Eigentlich 1x bei der Inbetriebnahme und dann vllt. ab & zu mal im 
Jahresverlauf.

von weiter weg (Gast)


Lesenswert?

Adam P. schrieb:
> So wie ich es richtig gesehen habe, benötigt man bei denen einen 4 kbyte
> Buffer um zu lesen/schreiben?

Du musst dir erst mal klar werden dass es Flash Speicher und
EEPROM Speicher gibt. Bei Flash brauchst du internen Speicher
um mindestens eine Page zu progrsmmieren. Bei EEPROMs kannst
du jede Zelle einzeln beschreiben und brauchst damit keinen
Buffer.

EEPROMs haben eher ihre Grenzen in der Speichergrässe, aber
für deine Erfordernisse könnte es gerade noch welche geben.

https://www.mouser.de/c/semiconductors/memory-ics/eeprom/?interface%20type=3-Wire%2C%20SPI&memory%20size=1%20Mbit

von H.Joachim S. (crazyhorse)


Lesenswert?

Als serielles EEPROM gibts ja noch ausreichend 5V-Teile.

von Peter D. (peda)


Lesenswert?

Adam P. schrieb:
> 64 kybtes sollten es dann schon mindestens sein

Der 24C512 wird gerne genommen.

128-Byte Page Write Mode:
– Partial page writes allowed

von Adam P. (adamap)


Lesenswert?

Peter D. schrieb:
> Der 24C512 wird gerne genommen.

Ja der würde sogar ausreichen.

Hab noch die gefunden:
- 25CSM04
- M95M04

Wobei ich zu den zweien auf die schnelle keine Bsp.-Library gefunden 
habe.
Das würde die Entwicklungszeit deutlich verkürzen.

von Adam P. (adamap)


Lesenswert?

Erstmal vielen Dank!

Ich bestell mir zum Ausprobieren nun die 2 Stück:
- AT24C512B
- AT24CM02

: Bearbeitet durch User
von weiter weg (Gast)


Lesenswert?

Peter D. schrieb:
> 128-Byte Page Write Mode:
> – Partial page writes allowed

weiter weg schrieb:
> Bei EEPROMs kannst
> du jede Zelle einzeln beschreiben und brauchst damit keinen
> Buffer.


Adam P. schrieb:
> Ich bestell mir zum Ausprobieren nun die 2 Stück:
> - AT24C512B
> - AT24CM02

Das sind I2C-Speicher, die sind naturgemäss etwas langsamer im
Zugriff als ihre SPI-Kollegen. Vielleicht ist dir das noch nicht
geläufig .....

von Adam P. (adamap)


Lesenswert?

weiter weg schrieb:
> Das sind I2C-Speicher, die sind naturgemäss etwas langsamer im
> Zugriff als ihre SPI-Kollegen. Vielleicht ist dir das noch nicht
> geläufig .....

Doch klar ist mir das geläufig.
Wie kommst du darauf?

Habe bereits erwähnt:

Adam P. schrieb:
> Es muss nicht schnell sein

: Bearbeitet durch User
von EAF (Gast)


Lesenswert?

Wurden die 23LCV1024 schon genannt?
Die gibts (noch?) in DIP, sind SPI und 5V

von Adam P. (adamap)


Lesenswert?

EAF schrieb:
> Wurden die 23LCV1024 schon genannt?
> Die gibts (noch?) in DIP, sind SPI und 5V

Das ist doch SRAM?

von EAF (Gast)


Lesenswert?

Adam P. schrieb:
> Das ist doch SRAM?
Ja, verschleißfrei!
Schnell. 20MHz? Also schneller als dein Mega je sein könnte.
Relativ leicht für Bastler zu montieren.

Und eine Li Knopfzelle kostet nun wirklich nicht die Welt.

von Adam P. (adamap)


Lesenswert?

EAF schrieb:
> Ja, verschleißfrei!

EAF schrieb:
> Und eine Li Knopfzelle kostet nun wirklich nicht die Welt.

OK, vllt. für nächstes Projekt :)
Bei diesem spielt es keine Rolle.

: Bearbeitet durch User
von EAF (Gast)


Lesenswert?

Adam P. schrieb:
> Bei diesem spielt es keine Rolle.

Du wolltest einen 5V Speicher.
Ich habe dir einen genannt.

Mehr nicht.

von Adam P. (adamap)


Lesenswert?

EAF schrieb:
> Du wolltest einen 5V Speicher.
> Ich habe dir einen genannt.
>
> Mehr nicht.

Ja alles gut, die Idee ist nicht schlecht, aber die Suche bezog sich auf 
EEPROM/Flash.

Grund:
Falls die Knopfzelle doch mal leer sein sollte,
wären 100+ eingelernte Kabelverbindungen weg...das wäre blöd.

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

>ATmega2560
der Mega2561 hat ein "external Bus interface", damit kann man den 
Speicher bis 64 k ausbauen, allerdings kostet es viele I/O-Pins. Also 
z.B. batteriegepuffertes SRAM oder ein paralleles EEPROM.

von Noob A. (strippenzieher)


Lesenswert?

Christoph db1uq K. schrieb:
>>ATmega2560
> der Mega2561 hat ein "external Bus interface", damit kann man den
> Speicher bis 64 k ausbauen, allerdings kostet es viele I/O-Pins. Also
> z.B. batteriegepuffertes SRAM oder ein paralleles EEPROM.

hat der Mega2560 auch...

hier schon für 32k mit Arduino-Integration vorbereitet: 
https://github.com/MasteringTheMess/Mega2560-XMEM

muß man nur noch den Speicherbaustein via Latch an den µC flanschen

von Adam P. (adamap)


Lesenswert?

Vielen Dank an alle.

Die Idee mit einem gepuffertem SRAM werde ich mir im Hinterkopf 
behalten, vllt. kommt ja mal ein Anwendungsfall.
Die FRAM werde ich in Zukunft auch mal ausprobieren.

Heute kamen die AT24C512 und AT24CM02 an.
Der AT24C512 funktioniert wie er soll.

Grüße

von utzutr (Gast)


Lesenswert?

externers SPI flash 2-8MB und SPIFFS
brauch keine 4Kb nur 2x 256kb RAM

von Veit D. (devil-elec)


Lesenswert?


von Falk B. (falk)


Lesenswert?

Adam P. schrieb:
> Die Idee mit einem gepuffertem SRAM werde ich mir im Hinterkopf
> behalten, vllt. kommt ja mal ein Anwendungsfall.
> Die FRAM werde ich in Zukunft auch mal ausprobieren.

Batteriegepuffertes SRAM oder FRAM benutzt man nur, wenn man eine SEHR 
hohe Schreibzyklenzahl braucht oder zu faul ist, eine passende 
Speicherfunktion zu programmieren, welche die Schreibzugriffe minimiert.

https://www.mikrocontroller.net/articles/Speicher#EEPROM-Schreibzugriffe_minimieren

Für normale Kalibrierdaten oder Geräteeinstellungen, die nur selten bis 
mäßig oft geschrieben werden, ist das gute, alte EEPROM genau das 
Richtige. Wobei die auch meistens 1 Million Schreibzyklen pro Zelle 
vertragen. Da muss man schon VERDAMMT oft Kalibrierdaten speichern, um 
das zu erreichen.

von EAF (Gast)


Lesenswert?

Falk B. schrieb:
> Batteriegepuffertes SRAM oder FRAM benutzt man nur, wenn man eine SEHR
> hohe Schreibzyklenzahl braucht oder zu faul ist, eine passende
> Speicherfunktion zu programmieren, welche die Schreibzugriffe minimiert.

FRAM leiden unter Lesezugriffen genau so, wie beim Schreiben.
Die Zyklen sind also begrenzt.
Sehr viele, aber begrenzt.
SRAM kennt diese Grenze nicht.

von Adam P. (adamap)


Lesenswert?

Falk B. schrieb:
> Für normale Kalibrierdaten oder Geräteeinstellungen, die nur selten bis
> mäßig oft geschrieben werden, ist das gute, alte EEPROM genau das
> Richtige. Wobei die auch meistens 1 Million Schreibzyklen pro Zelle
> vertragen. Da muss man schon VERDAMMT oft Kalibrierdaten speichern, um
> das zu erreichen.

Ja, so habe ich mir das halt auch gedacht.

von Patrick L. (Firma: S-C-I DATA GbR) (pali64)


Lesenswert?

Falk B. schrieb:
> FRAM benutzt man nur, wenn man eine SEHR
> hohe Schreibzyklenzahl braucht oder

..oder es wie ein RAM benutzen will, oder die Schnelligkeit der FRAM 
nutzt.

Ich verwende wen immer möglich anstelle von EEPROM oder FLASH, ein FRAM, 
da sie keine Löschzyklenzeit brauchen und auch so schnell schreiben wie 
es der BUS zulässt.
Nicht nur die hohe R/W Zyklenzahl, sondern auch die Schnelligkeit, und 
den Stromverbrauch, machen die FRAM interessant.

Bei den MSP430FRXXXX Verwende ich gerne das FRAM (Teil Protected für 
Software und Teil Unprotected als Datenspeicher (F)RAM.
Somit umgehe ich die meist zu geringe RAM Kapazität in den µC.

Habe noch den Vorteil das bei Stromunterbrechung der Speicher erhalten 
bleibt.

Dies als Tipp, wen du bei deinem µC FRAM als externen Speicher nutzen 
willst.

Du kannst ihn nutzen wie ein normales externes RAM.

73 55

: Bearbeitet durch User
von Rüdiger B. (rbruns)


Lesenswert?

Warum nimmst du keine SD-Karte ?

von Patrick L. (Firma: S-C-I DATA GbR) (pali64)


Lesenswert?

Rüdiger B. schrieb:
> Warum nimmst du keine SD-Karte ?

Warum der TO diese nicht nutzt weiss ich nicht,
Aber wenn die Daten nicht Portable sein müssen, dann ist mir der 
Overhead
an Konfigurationen/Software/Management zu groß und die 
Lösch-/Schreib-/Lese- Zeit einfach zu Träge.

SD Karten habe ihre Vorzüge wenn die Daten, Portabel sein sollen.
Aber nur als Zwischenspeicher ist ein externes FRAM einfacher und 
schneller.

: Bearbeitet durch User
von Adam P. (adamap)


Lesenswert?

Patrick L. schrieb:
> Rüdiger B. schrieb:
>> Warum nimmst du keine SD-Karte ?
>
> Warum der TO diese nicht nutzt weiss ich nicht,
> Aber wenn die Daten nicht Portable sein müssen, dann ist mir der
> Overhead
> an Konfigurationen/Software/Management zu groß und die
> Lösch-/Schreib-/Lese- Zeit einfach zu Träge.
>
> SD Karten habe ihre Vorzüge wenn die Daten, Portabel sein sollen.
> Aber nur als Zwischenspeicher ist ein externes FRAM einfacher und
> schneller.

Weil das sowas von überdimensioniert wäre.

1 Datensatz beträgt nach ersten Einschätzungen ca. 533 Byte.
Maximal sind zur Zeit 100 Datensätze angedacht = max. 64 KByte

Außerdem die ganze SPI Implementation mit SD Protokoll usw...
muss nicht sein, bei so wenig.

Da ist eine Abwandlung von diesem schneller abgeändert und eingebunden:
https://www.nongnu.org/avr-libc/examples/twitest/twitest.c

: Bearbeitet durch User
von Adam P. (adamap)


Lesenswert?

Patrick L. schrieb:
> Dies als Tipp, wen du bei deinem µC FRAM als externen Speicher nutzen
> willst.
>
> Du kannst ihn nutzen wie ein normales externes RAM.

Werde ich mir merken.
Hatte schon oft den Wunsch etwas im "RAM" zu halten, was nach einem 
Reset von Vorteil wäre, es wieder zu haben.

von Patrick C. (pcrom)


Lesenswert?

Die entschiedung hab ich auch machen mussen vor 8 Jahren und bin froh 
das ich doch SD gewaehlt habe und nicht SPI/I2C basierte eeprom
* SD war einfach implementiert mittels FatFS
* Benutze ich mittlerweile fuer viel mehr sachen so wie error logging, 
bootloading via sd-karte usw
* Ich habe immer gerne fuer jeden chip ein second source.
* Ich benutze 2GB

Grusze Patrick aus die Niederlaende

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.