SD-Karte antwortet beim CMD24 immer mit 0x02

OP #4487240
Lesenswert?
• ▲
▼
Hallo,

ich versuche schon seit langem Daten auf eine 2GB SD-Karte von HAMA zu 
schreiben aber es läuft nicht. Das Problem ist, dass die SD-Karte auf 
CMD24 immer mit 0x02 (Erase Reset) antwortet. Ich habe schon alles 
probiert aber ich kriege immer diese Antwort statt 0x00. Was mache ich 
falsch?

Anbei sind 3 C-Dateien zu finden.
- InitSD.c zur Initialisierung der SD-Karte
- sdWriteBlock.c zum Schreiben
- sdSetBlockLength.c zum Setzen der Länge des Datenblocks

Ich freue mich auf irgendwelche Hilfe.
Angehängte Dateien:
#4487872
Lesenswert?
• ▲
▼
Schau Dir mal andere SD Karten Implementationen an oder die Spec. Deine 
Karte ist sicher schon eine SD 2.0 Karte, die möchten IMHO erweitere 
Kommndos sehen (CMD8, ACMD41).

Außerdem funktioniert die Initialisierung so nicht wenn die Karte auf 
CMD0 mit was anderem als 0x01 antwortet. Was sie beim Power-Up durchaus 
tun darf falls sie noch nicht betriebsbereit ist.

Deine sdSetBlockLength() Funktion hat keine Fehlerbehandlung.
OP #4488611
Lesenswert?
• ▲
▼
Jim M. schrieb:

> Außerdem funktioniert die Initialisierung so nicht wenn die Karte auf
> CMD0 mit was anderem als 0x01 antwortet.

Die Initialisierung der SD-Karte funktioniert vollkommen. Ich kriege 
immer 0x00 nach CMD1.

>Deine
> Karte ist sicher schon eine SD 2.0 Karte, die möchten IMHO erweitere
> Kommndos sehen (CMD8, ACMD41).

Die Initialisierung funktioniert auch mit ACMD41 und CMD55.


> Deine sdSetBlockLength() Funktion hat keine Fehlerbehandlung.

Dke für den Hinweis. Ich habe die Funktion gerade angepasst und 
festgestellt, dass CMD16 nicht angenommen wird. Also wird die Länge des 
Datenblocks auf 512 Bytes nicht gesetzt. Deswegen ging das Programm 
nicht weiter. Woran könnte es liegen? Liegt es an der Initialisierung 
der SD?
OP #4488624
Lesenswert?
• ▲
▼
H.Joachim S. schrieb:
> Beliebter Fehler ist die falsche Einstellung der SPI (CPHA, CPOL).

Danke für den Hinweis. Ich steuere zwei SPI gleichzeitig (einen für das 
LCD-Display und das andere für die SD-Karte) und die SPI-Initialisierung 
der SD-Karte war nicht aktiviert. Also ist schon ein Schritt und nach 
der Anmerkung von Jim habe ich bemerkt, dass das Problem eigentlich beim 
CMD24 nicht liegt sondern beim CMD16: Dies wird nicht angenommen und ich 
kriege immer als Antwort 0x01 (SD_BLOCK_SET_ERROR).

Hast du vielleicht eine Ahnung darüber?

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.