Forum: Mikrocontroller und Digitale Elektronik Compactflash im Memory Mode


von Bernd Schubart (Gast)


Lesenswert?

Hi,

ich habe schon vor längerer Zeit ein IDE-Interface an einem
Mikrocontroller realisiert, komplett mit FAT16 Dateisystem. Daran habe
ich als Master eine HDD angeschlossen und als Slave eine CF-Karte (True
IDE), und konnte so Daten zwischen den beiden Medien hin und
herkopieren.

Nun soll das Projekt erweitert werden, und ich brauche dafür unbedingt
eine Hot-Plug Unterstützung, also die CF soll bei eingeschaltetem Gerät
gezogen und gesteckt werden können.
Da das im True IDE-Mode nicht geht, muss ich das CF-Interface auf
Memory Mode umstellen.

So nun habe ich mich durch diverse Seiten und Specs gewühlt, und bin
nicht so recht schlau geworden, was ich nun als externe Glue-Logic für
diesen Mode genau brauche.

Wenn ich es richtig sehe, wird die CF folgendermaßen angesteuert:
#CE1 = low,  #CE2 = low  => Word Zugriff
#CE1 = low,  #CE2 = high => Byte Zugriff
#CE1 = high, #CE2 = high => CF inaktiv

Stimmt das soweit?

Ich habe nun ein CS-Signal vom Mikrocontroller, das ich zum Aktivieren
der CF benutze (low-aktiv).
Word-Zugriff brauche ich nur bei Zugriff aufs Datenregister, bei allen
anderen Registern Byte-Zugriff. Beim Datenregister sind A2, A1 A0 = 0.

Die Glue Logic habe ich mir nun folgendermaßen überlegt:

#CS______________________________ #CE1
    |
    |____
 A0______
 A1______  Oder-Gatter ________ #CE2
 A2______

Also #CS, A0, A1, A2 als Eingang auf ein ODER, #CE2 als Ausgang.

Als Frage hätte ich eigentlich nur:
Kann mir vielleicht jemand bestätigen dass das so richtig ist? (da ich
eine Platine ätzen lassen muss, und das möglichst auf Anhieb klappen
soll :-))
Danke schonmal!

von Bernd Walter (Gast)


Lesenswert?

True IDE sollte auch mit Hot-Plug gehen.
Du musst nur die Versorgungsspannung über die CD* Leitungen schalten.

von Bernd Schubart (Gast)


Lesenswert?

hm das wäre mir jetzt neu...
ich habe gelesen, dass true ide nur in systemen verwendet werden soll,
wo die cf nicht im laufenden betrieb gesteckt oder gezogen werden
muss.

wie meinst du das genau mit spannung über die CD pins schalten?
an den cd pins habe ich pullups vorgesehen, und die cf verbindet die
pins beim einstecken mit gnd.

von Bernd Walter (Gast)


Lesenswert?

Die Pull-Ups brauchst du eigendlich nur wenn du das Signal Digital
auswerten willst, da die ohne Medium offen sind.
Im einfachsten Fall reicht es mit einer der Leitungen über einen
Vorwiderstand einen PNP Transistor anzusteuern, der in Emiterschaltung
die Betriebsspannung fürs CF liefert.
Sauberer wäre es natürlich beide CD Leitungen auszuwerten.
Wenn du die Signale zum Controller ziehst, dann kannst du auch von
diesem die Spannung schalten.
Es geht ja nur darum, daß das Medium saubere Mode Signale beim
Initialisieren sieht, was sonst nicht der Fall ist, da die
Powerleitungen längere Stifte haben.
Da die CD Leitungen die kürzesten Stifte haben sind zu diesem Zeitpunkt
bereits alle anderen Signale verbunden.

von Bernd Schubart (Gast)


Lesenswert?

hi

sorry hatte den thread hier irgendwie vergessen.

also danke für die infos, aber ich denke ich werde trotzdem mal den
memory mode ausprobieren. scheint mir einfach sinnvoller, da es in den
specs als der ideale mode für embedded systeme mit
hotplug-unterstützung beschrieben wird.
deine lösung wird wohl auch funktionieren, ist mir aber irgendwie ein
bisschen zu sehr getrickst :-)

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.