Hallo, Ich benötige an einem AVR-Projekt etwas mehr nichtflüchtigen Zusatzspeicher. Nur bin ich im Moment völlig durcheinander, was ich da nehmen soll. EEProm, Flash, FRam..??? Ich schreibe mal, worauf es mir ankommt, vielleicht kann dann jemand meinen Gedanken die richtige Richtung geben. - 512Byte-1K je 8Bit wären toll, gerne mehr. - Zugriffszeit unwesentlich, kann auch total langsam sein. - BYTEweises lesen und schreiben. NICHT(!) blockweise! - möglichst wenig Portleitungen, also seriell, etc. - zuverlässiger Datenerhalt ohne Spannung für min. 1-2 Jahre. - Mein AVR läuft an 5V, möglichst keine/wenig Pegelwandlung. - IO-Protokoll, das einen nicht den letzten Nerv kostet. - bezahlbar und auf diesem, oder benachbartem Planeten erhältlich. Gruss Dennis
Bei 1KB ist EEPROM via I2C oder SPI wohl er einfachste Weg. Lässt sich byteweise schreiben und ist problemlos und günstig für 5V erhältlich.
Ich hätte jetzt einfach ein serielles I²C EEPROM mit 4KB-16KB genommen (z.B. ST 24C128, 24C32). Kostet zwischen 0,35-1,05€
Vorsicht, ein EEPROM funktioniert immer Blockweise, jedoch wird das intern gehandhabt. Einen Block in den Buffer lesen, 1 Byte geändert, Buffer zurückschreiben. Dadurch wird immer auf 8 bzw. 16 Bytes geschrieben. EEPROMS lassen nur eine maximale Anzahl Schreibvorgänge zu. Je nach Datenblatt z.B. 10^6. Das sind bei einem Schreibvorgang pro Sekunde 1.000.000/3600=277 Stunden. Ein Flash hat das selbe Problem. Für sowas geht dann nur ein RAM. Man könnte 1 - 10 Minuten im normalen Ram arbeiten und dann den Wert einmal wegspeichern. Ein Flash bietet viel Speicher, wie z.B. 512KByte. Ein 29F040 funktioniert ganz gut, wenn man sich mit der Ansteuerung Mühe gibt. Gelöscht wird blockweise, hier 64 kByte. Dann sind alle Zellen auf 0xFF. Schreiben kann man byteweise. Das ist gut, um etwas zu loggen wie z.B. der Fehlerspeicher beim Auto. Dann gibt es gebufferte RAMs mit Huckepack - Batterie. Zur Datensicherheit könnten die Daten doppelt gespeichert werden, jeweils mit Checksumme. Stimmt eine der Checksummen nicht, wird der defekte Teil wiederhergestellt. Es gibt I2C Uhren mit eingebautem RAM oder gleich ein PCF8570 mit 256 Byte statischem Ram. Hier ist auch eine Pufferbatterie notwendig.
Schaut mal bei den FRAMs nach, die gibt es im Pinout eines EEPROMs mit nahezu identischer Ansteuerung. Kein Blockmanagement, keine Delays und keine begrenzte Anzahl Schreibzugriffe. 4..128kByte kosten 3..10€. Ramtron FM24Cxx sollten für diese Anwendung ideal sein, das Interface kann man sich aussuchen: SPI oder I2C. Gruß, Ulrich
Bernd Weeber wrote: > Vorsicht, ein EEPROM funktioniert immer Blockweise, jedoch wird das > intern gehandhabt. Einen Block in den Buffer lesen, 1 Byte geändert, > Buffer zurückschreiben. Aber das ist doch genau der Unterschied zwischen Flash-ROM und EEPROM. EEPROMs können byteweise geschrieben werden, ohne interne blockweise read-modify-write Zyklen durchführen zu müssen. Dass EEPROMs oft auch optional in pages und/oder Blöcken operieren können hat eher mit der Schreibrate zu tun, denn ein 64KB EEPROM nur einzelbyteweise vollzuschreiben dauert recht lang. Siehe Microchip AN1019.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.