Forum: Mikrocontroller und Digitale Elektronik SDIO Interface (LPC3250), SD Karten CMD9 und CMD8 Probleme


von Christian K. (kutschi)


Lesenswert?

Hallo,

ich kämpfe derzeit gerade mit dem LPC3250 und dessen SDIO Interface. Ich 
hab die NXP Bibliothek zum laufen gebracht, soweit so gut, jedoch habe 
ich Probleme mit einigen Kommandos. So bringe ich eine 4GB SDHC Karte 
von Kingston nicht zum laufen, da ich beim Initialisieren mit CMD8 die 
SD Karte immer Busy bleibt, egal was ich mache. Hat hierzu jemand einen 
Tipp für mich?

Das Problem hab ich derzeit durch Verwendung von 2GB Karten umgangen. 
Prinzipiell funktioniert alles, jedoch habe ich jetzt versucht mit CMD9 
das CSD Register auszulesen (wegen Kartenkapazität). Leider bekomme ich 
keine vernünfigen Daten zurück (keine 16Byte wie erwartet), das Auslesen 
des CID Registers funktioniert hingegen tadellos.

Hat vielleicht jemand von euch eine Idee wo mein Problem liegen könnte?
Gibt es Erfahrungen mit dem LPC3250 SDIO Interface und der NXP CLP 
Library?

Vielen herzlichen Dank für eure Tipps und Bemühungen im Voraus.

Viele Grüsse

Christian

von R. W. (quakeman)


Lesenswert?

Hast du im CMD8 die Bits für VHS, Check Pattern und CRC korrekt gesetzt?

Beachtest du beim Initialisieren auch die Unterschiede der Karten nach 
Spezifikation 1.0 und 2.0 und SD und SDHC?

Das Auslesen von CID und CSD ist identisch bis auf die unterschiedliche 
Befehlsnummer. Also wenn der eine geht und der andere nicht ist 
vermutlich an deinem Code order der Hardware schon irgend etwas nicht 
ganz korrekt.

Es gibt mittlerweile haufenweise Threads hier im Forum bezüglich 
SD-Karten. Du solltest vielleicht mal die Suchfunktion benutzen. Denn 
teilweise sind sehr nützliche Tips in den Threads zu Fehlerquellen und 
wie man diese umgeht enthalten.

Ciao,
     Rainer

von Christian K. (kutschi)


Lesenswert?

Hallo Rainer,

danke der Antwort, VHS und Check Pattern sind sicher richtig, bei der 
CRC, bin ich mir immer noch nicht sicher, eigentlich sollte dies ja 
intern richtig berechnet werden, wahrscheinlich ist da irgendwo der Hund 
begraben.

Die Unterschiede bei den den Spezifikationen sowie SD oder SDHC hab ich 
berücksichtigt, aber wie gesagt, solange ich CMD8 nicht hinkrieg, komm 
ich nicht aus dem Busy raus und solange wird es wohl nix mit der 
Initialisierung der 4GB Karte.

Hab schon lange in den Foren gesucht, bevor ich überhaupt den Beitrag 
eingestellt habe, aber zu meinem konkreten Problem hab ich eigentlich 
nichts gefunden.

Hast Du vielleicht konkret zu dem LPC3250 mit SD Interface ein paar 
Tipps um SDHC Karten in Betrieb nehmen zu können? Ist es vielleicht ein 
Problem, daß laut Manual (LPC3250) nur Standard 1.01 unterstützt wird, 
SDHC aber mindestens 2.0 ist?

Vielen Dank

Christian

von R. W. (quakeman)


Lesenswert?

Christian Kutschenreiter schrieb:
> Hast Du vielleicht konkret zu dem LPC3250 mit SD Interface ein paar
> Tipps um SDHC Karten in Betrieb nehmen zu können? Ist es vielleicht ein
> Problem, daß laut Manual (LPC3250) nur Standard 1.01 unterstützt wird,
> SDHC aber mindestens 2.0 ist?

Konkret zum LPC3250 habe ich nichts, da ich nur diverse 8051 kompatible 
Controller programmiere. Du kannst dir gerne meinen C-Code für die 
SD-Karte unter [1] anschauen, der soweit mit jeder SD-Karte funktioniert 
hat.

Bezüglich des 1.0 und 2.0 SD-Karten Standards ist mir etwas unklar, wie 
das von deinem Controller abhängen sollte. Du hast bis jetzt auch noch 
nicht genau gesagt, ob du die SD Karte im SD Modus oder im SPI Modus 
ansteuerst. Im SPI Modus wird die Karte physisch per standard SPI 
Verbindung angesprochen. Und die Unterscheidung zwischen 1.0 und 2.0 
Standard geschieht nur in der Software und ist völlig unabhängig von der 
Hardware. Ebenso ist die Unterstützung von SDHC eine reine 
Softwareangelegenheit und ist ebenfalls von der Hardware unabhängig.

Ciao,
     Rainer

[1] 
https://quakeman.homelinux.net/viewvc/uVision/trunk/Library/SD_Karte_Funktionen.c?view=markup

von Christian K. (kutschi)


Lesenswert?

Hallo Rainer,

danke der Antwort und des Links, den werde ich mir heute abend mal 
angucken.

Ich versuch die Karte nicht im SPI Modus sondern über das SD 
Karteninterface (interner IP Block) anzusprechen und der ist laut Spec 
eben nur für Standard 1.01 ausgelegt. Die Idee ist eben das Interface zu 
verwenden (Hitex LPC3250 USB Stick+LCD IO Board). Ich wollte einfach den 
Standard SD Steckplatz verwenden, bevor ich extra den SPI Block in 
Betrieb nehme und auf dem Board rumlöten muss.

Ich denke ich hab mein Problem irgendwo beim CRC, den den Checkpattern 
krieg ich ja zurück.

Hoffe die nächsten Tage komm ich nochmal intensiv dazu mich mit dem 
Thema SDHC zu beschäftigen.

Danke nochmal

Gruss

Christian

von R. W. (quakeman)


Lesenswert?

Wenn ich mich richtig erinnere ist im SD Modus die CRC immer aktiviert 
und man muss diese per Befehl explizit deaktivieren. Also solltest du 
deine CRCs der Init-Befehle einfach mal überprüfen ob die richtig sind. 
Ansonsten kann ich dir zum SD Modus keine weitere Hilfe geben, da ich 
eben nur den SPI Modus benutze.
Der Link zu meiner Init Routine verwendet ebenfalls den SPI Modus, 
weshalb ich nicht weis, ob diese dir weiterhilft. Ich muss nämlich nur 
CMD0 und CMD8 mit einer gültigen CRC versehen, danach ist diese 
automatisch deaktivert laut Spezifikation.

Ciao,
     Rainer

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.