Forum: Mikrocontroller und Digitale Elektronik SD-Karte am AT91SAM7S256


von Peter P. (axis)


Lesenswert?

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

von Christian Julius (Gast)


Lesenswert?

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

von Christian Julius (Gast)


Lesenswert?

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.

von Simon K. (simon) Benutzerseite


Lesenswert?

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?

von Christian Julius (Gast)


Lesenswert?

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.

von Peter P. (axis)


Lesenswert?

@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
Noch kein Account? Hier anmelden.