Forum: Mikrocontroller und Digitale Elektronik Richtig grosses EEPROM


von Breti (Gast)


Lesenswert?

Hi,

für ein Studienprojekt möchte ich an einem Microcontroller (evt.
Atmega128, vielleicht sogar Arm7 (Philips LPC2124)) vergleichsweise
viel Ram und Eeprom anschließen:

-Ram 512 KByte
-Eeprom (oder auch Flash) 2-4 MByte

Nun habe ich dem Forum hier entnommen, dass die I2C Eeproms wohl nur
bis 64KByte (16bit Adr.) reichen. Also stellt sich mir die Frage:

Was für Chips kann ich nehmen? Gibt es da eine (vertretbare) Lösung mit
ausreichend großen (und nicht zu vielen einzelnen) Speicherchips?

Ich habe leider keinen Überblick, was es in dieser Hinsischt an
Speicherchips gibt und wäre für Hinweise von Euch sehr dankbar.

Gruß,
        Thomas

Als Alternative hatte ich überlegt, den Speicher evt. direkt auf ne CF
Karte anstatt eines Eeproms auszulagern. Allerdings weiß ich nicht, ob
der schnell genug wäre. Ca. 60 kbyte/s lesend wären schon nötig, die
Schreibgeschwindigkeit ist weniger wichtig (10 kbyte/s reichen) und
Dateisystem brauch ich auch nicht.
Falls CF zu langsam ist, so könnte man evt. auch das Ram deutlich
größer machen und die notwendigen Daten aus der CF Karte in ein 2-4
MByte Ram laden. Ich würde jedoch die Lösung mit geeigneten Chips
vorziehen.

von Jörn (Gast)


Lesenswert?

Nimm einfach MMC-Flash-Karten.
Werden per I2C abgesprochen, gibt es schon viele Projekte mit und
kosten pro MB weniger als irgendwelche Spezialspeicherchips. (128MByte
für 15,-) (<= 16MB für quasi umsonst bei ebay)

MMC-Halter gibt es z.B. bei farnell, ich glaube bei segor auch.
Bei reichelt leider noch nicht.

jörn

von Jörn (Gast)


Lesenswert?

Ach ja zum RAM:
an den mega128 kannst du "nur" bis zu 64kByte extern anbinden.

Mit einem PLD natürlich aus sehr viel mehr - wäre dann aber langsamer.

ARM7 kann alles, kostet aber auch und du kannst auf weniger freien Code
zurückgreifen.

jörn

von Breti (Gast)


Lesenswert?

Hi,

wow hatte nicht damit gerechnet, dass um diese Uhrzeit jemand antwortet
:)
Also zu der MMC Karte:
Da der Controller eh fürs Backup ne CF Karte mit Dateisystem haben
wird, ist es wahrscheinlich einfacher nen zweiten Slot für die internen
Daten mit anzuschließen (umschalten per CS und fertig). Dann brauch ich
den Code auch nur einmal zu schreiben.
Macht das einen großen Unterschied in der Geschwindigkeit zu MMC
Karten?

Gruß,
      Thomas

PS: Der LPC2124 kostet um die 12 Euro - ist also nicht wirklich mehr
als der Atmega.

von Matthias (Gast)


Lesenswert?

Hi

@Jörn
MMC wird über SPI und nicht I2C angesprochen.

@Breti
Wie lange braucht denn eine Digicam um ein 2MByte Bild auf eine CF zu
schieben? 1s? Du siehst die Transferrate ist kein Problem. Und warum
zwei CF? Eine CF mit einer Partition die nicht die ganze CF belegt.
Dann kannst du den partitionierten Bereich für dein Backup mit FS
nutzen und den unpartitionierten als Datengrab.

Wie willst du den externen RAM nutzen? Wenn er von C aus als
Variablenspeicher genutzt werden soll kommst du um einen Controller mit
externem Speicherinterface mit 512kB Addressraum nicht herum. M16C
dürfte das wa sein. ARM wird mit externem Speicherinterface immer
gleich häßlich groß und der AVR bietet das nicht.

Wenn etwas Handarbeit erlaubt ist (Bankumschaltung per Portleitung und
dann Zugriff per Pointer bzw. []) reicht auch ein Mega128.

Matthias

von Christoph Beurer (Gast)


Lesenswert?

Hallo Breti,

schau dir doch mal den Atmel Butterfly an. Auf diesem Board ist ein
(relativ) großer Flashspeicher (gibt es soweit ich weis als 4 und 16
Mbit Version)

Gruß

Christoph

von KoF (Gast)


Lesenswert?

hmm, wenn es nicht wirklich um geschwindigkeit gehen würde, dann würde
ich den i2c kanal ausbauen, ala KoF ;-)

ich steuere so ein 4mb großes sram an!
ich benute einfach pcf8574's um ports zu erzeugen und habe daran ein
sram (kann man ja auch nach belieben eeprom, flash,... anbinden)
angeklemmt. man sollte nur tunlichst vermeiden dram's zu verwenden!!!

refreshs & lese/schreibevorgange sind busbedingt je nach
geschwindigkeit unmöglich, daher benutze ich srams.
oder man muß einen dram-controller via i2c-portexpander ansteuern ;-)

von Rufus T. Firefly (Gast)


Lesenswert?

Du kannst in der Tat einen zweiten CF-Slot verwenden, dann sparst Du
'ne Menge Entwicklungsaufwand. Alternativ könntest Du eine Ansteuerung
für SM-/xD-Karten entwickeln, das Interface von beiden entspricht dem
der (beispielsweise) von Samsung hergestellten größeren Flash-ROMs. Die
sind in Blöcken à 512 Byte programmierbar. Das Interface besteht aus 8
Datenleitungen und einigen Steuerleitungen - unabhängig von der Größe
des anzusteuernden Bausteines. SM-Karten (SmartMedia) wurden bis 128
MByte Größe hergestellt, bei xD-Karten (die wie gesagt exakt das
gleiche in anderer Verpackung sind) liegt das Ende der Spezifikation
bei 8 GByte.
Ich habe selbst schon einige 64 MByte-Flash-ROM-Chips (aus einer
defekten CF-Karte) mit einem AVR angesteuert, das ist nicht sonderlich
schwer.

Ein wesentlicher Unterschied von solchen Lösungen zum von Dir
gewünschten EEPROM ist allerdings die Tatsache, daß die Dinger nicht
byteweise programmiert werden können, sondern immer nur in ganzen
Blöcken - aber das ist bei CF nicht anders.

von Breti (Gast)


Lesenswert?

Hi,

@Rufus:
also 512b Blöcke sind kein Problem, da meine Daten wahrscheinlich eh in
1,5k Blöcken vorliegen werden. Einige dieser Blöcke liegen dann immer im
Ram und werden bei Bedarf in den Flash Speicher kopiert.

@Chris (Butterfly):
Mach ich, 16mbit wär schon ok.

@Jörn (MMC Lösung):
Also wenn ich es nicht besondere Vorteile gegenüber CF bringt, so werde
ich bei CF bleiben, weil ich da den einen Slot mit Sicherheit benötige -
einen zweiten mit anzuklemmen ist da wirklich einfach. Ich habe mich
deshalb für einen CF Slot entschieden, weil davon auszugehen ist, dass
es CF Karten noch am längsten geben wird. Sie haben einfach den größten
Marktanteil und werden wohl länger überleben, als der Rest.

Gruß,
      Thomas

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.