Forum: Mikrocontroller und Digitale Elektronik Compactflash am externen Memory Interface


von Tobias P. (hubertus)


Lesenswert?

Hallo,
ich beschäftige mich grade mit dem Thema Compactflash. In einer 
Anwendung will ich diese Compactflash Karten mit einem uC verbinden, und 
zwar möchte ich dazu das externe Memory Inferface benutzen (LPC2468).
Es stellt sich mir nun die Frage, wie man mit vertretbarem 
Bauteilaufwand eine Hotplug-Fähigkeit der Karte erreichen kann, da am 
Bus noch andere Komponenten wie RAM und dergleichen angeschlossen sind, 
die während des Ein- oder Aussteckens der Karte natürlich nicht gestört 
werden sollen.
Auch frage ich mich, ob es sinnvoll ist, gleich nur den 8 Bit Modus zu 
verwenden. Das wäre mir etwas sympathischer, da ich dann 8 Leitungen 
sparen kann.
Wie seht ihr das so?

Gruss

von Matthias L. (Gast)


Lesenswert?

Vielleicht macht es Sinn, die Busleitungen zu entkoppeln. Für den 
Datenbus könnte man ein 74xx245 nehmen.

von Tobias P. (hubertus)


Lesenswert?

Hallo,
jawoll, den Datenbus muss man wohl mit '245ern entkoppeln. Für die 
Adressleitungen dasselbe.
Was ich mich noch frage:
Im Memory Mapped Mode reicht es, wenn man die Adressleitungen A0 bis A3 
beschaltet. Aber mir ist noch nicht klar, wie man der Karte sagt, ob der 
Datenbus 8 oder 16 Bit breit ist? Und woher weiss die Karte, ob sie im 
IDE Modus oder im Memory Mapped Modus betrieben wird?
Und wie ist das dann mit dem Datenregister. In der CF Spec heisst es, 
dass man entweder 16 Bit breit auf das Datenregister zugreifen soll, 
oder dass man die beiden Bytes nacheinander lesen kann, wenn man 8 
bittig zugreift. Aber in welcher Reihenfolge kommen die Bytes dann aus 
dem Datenregister? Das erschliesst sich mir noch nicht so ganz.

von Star K. (starkeeper)


Lesenswert?

Also ob nun 8Bit oder 16Bit wird über die Beschaltung der Pins an der 
CF-Karte geregelt. Und der Zugriff je nach Modus also MemMapped oder IO 
erfolgt über verschiedene Steuersignale. Dennoch muss man der CF-Karte 
vorher sagen welcher Modus jetzt am Start ist. Ich meine das es 
standardmäßig immer erstmal der Mem-Modus war.

Die Pins für den Modus siehst du hier: 
http://pinouts.ru/Memory/CompactFlash_pinout.shtml

Wichtig bei dem Anschluss an ein Memory-Interface ist die Verwendung des 
WAIT-Signals. Denn so eine CF-Karte hat Teils Zugriffszeiten von bis zu 
300ms! Aber nicht immer und auch nicht die gleichen für Lesen und 
Schreiben. Sodass es ohne die Auswertung des Wait-Signals doch eine 
recht langsamme angelegenheit werden kann.

von Tobias P. (hubertus)


Lesenswert?

Hi,
okay danke erstmal. Hast du eine ungefähre Ahnung, welche Lese- und 
Schreibgeschwindigkeiten man mit einem 8 Bit breiten Bus erreichen kann? 
Ich denke, es könnte auf alle Fälle schneller als SD-Karten sein, aber 
sicher bin ich mir nicht.
Es ist mir auch immer noch nicht klar, ob alle Karten den 8 Bit Modus 
unterstützen bzw. in welcher Reihenfolge die Bytes an D0..D7 raus kommen 
(big oder little endian).
Wenn ich einen Sektor lese, kann ich dann einfach 512 mal von der selben 
Adresse (=Adresse des Datenregisters) lesen? Bei dem 16 Bit Interface 
kann man ja dann dementsprechend 256 mal lesen.

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.