Hallo NG, habe mir gerade die Demo zu SD/MMC vom AT91SAM764 angeschaut (C). Ich würde auch gerne eine SD-Karte ansprechen (nur lesend und ohne FAT16/32). Und natürlich wie immer in Assembler. Vor allem würde ich gerne weiterhin ohne Stack arbeiten, weil ich den Speicher für andere Dinge brauche. Kann mir jemand ein paar Tipps geben, wo ich ne richtig schöne Step-by-Step Vorgehensweise finde, um die Karte via SPI anzusprechen? http://elm-chan.org/docs/mmc/mmc_e.html hab ich schon gefunden. Bin aber noch nicht so 100% begeistert. Vielleicht gibts ja noch was tolleres :-) Was mir auch noch nicht ganz klar ist: Muss ich immer einen kompletten Block (512Byte) von der Karte lesen, oder kann ich auch kleinere Häppchen bekommen? Muss die Adresse, von der ich anfange zu lesen immer ein "Blockbeginn" sein? Vielen Dank für jeden Hinweis! Peter
Hallo, vielleicht solltest Du mal den Einstieg in C überdenken, denn das wird sonst ein 10-faches der Zeit brauchen. Ich habe C-Routinen geschrieben, allerdings ohne FAT. Das Protokoll ist nicht ganz einfach aber es geht, nur stürzen die Karten gern an, Du brauchst einen P-Mosfet als Einschalter, um notfalls resetten zu können wenn die interne State Machine abschmiert. Wie gesagt, alles vorhanden, nur in C für PIC aber gut konvertierbar... mFG Christian
Nachwort: Du solltest 512 Byte zwischenspeichern können. Man kann byteweise lesen und schreiben aber nur seriell und dann darf man die CS leitung auch nicht loslassen, nichts anderes zwischendurch machen. Die Karten sind statisch. Man kann nur Blöcke adressieren und muss mit 32 Bit Zahlen dabei rechnen. Sagen wir es mal so: Ohne ein Dateisystem ist das Ganze recht witzlos. Ich habe fixe Dateigrössen vorgegeben und eine Art Tabelle vorn abgelegt. Will man dynamisch vorgehen braucht es einen Riesenaufwand dazu. Aber Sourcecodes in C für FAT16 kann man auch kaufen, ca 40 USD.
Christian Julius wrote: > Aber Sourcecodes in C für FAT16 kann man auch kaufen, ca 40 USD. Ja, oder in der Codesammlung, ca 0 USD > Du brauchst einen P-Mosfet als > Einschalter, um notfalls resetten zu können wenn die interne State > Machine abschmiert. Dass man sowas "braucht" höre ich hier zum ersten mal. Meine SD-Karte ist noch nie abgeschmiert. Welche schmiert denn bei dir immer ab?
Hallo, ich habe diverse Karten hier in meinem Board ausprobiert. http://www.der-chris.de/temp/b100.jpg Wenn etwas schiefgeht beim Schreiben, dann hängt die Karte bis sie neu gebootet wird. Tagelang läuft es und auf einmal geht was schief, Karte antwortet nicht etc. Kommerzielle Anwendungen haben ebenfalls einen Ausschalter für die Karte, wie zB Datenlogger zudem die Karten reichlich Strom fressen, wenn sie nicht in den Idle Mode gesetzt werden. Ich weiss nicht ob es bei den AVR so ist wie bei den PICs aber wenn ich die SPI benutze, dann werden die Port als Schmitt Triger geschaltet und dann reichen die Pegel nicht mehr, bzw nicht immer. daher habe ich zwei Inverter davor geschaltet. Kann sein, dass es bei den AVRs so ist, muss aber nicht sein.
@christian:
> Das Protokoll ist nicht ganz einfach aber es geht,
Welches Protokoll meinst Du? SPI? Der Arm hat ein SPI on Chip...
MfG
Peter
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.