Hallo, ich habe ein Problem mit meiner SD-Karte. Initialisierung klappt soweit, die Karte liefert mir auch schön alle Werte zurück die ich brauche (Status-Flags/Kapazität etc.) Nur wenn ich versuche zu lesen bekomme ich nur 0x00 zurück. Die Adresse die ich anlege (0) wird auch so quittiert. Der Gegenversuch eine Adresse die nicht durch 512 teilbar ist zu senden wird auch mit einem Adressfehler zurückgewiesen. Jetzt habe ich mal getestet ob es am Mode/Adressierung etc. der Karte liegen könnte und habe einfach mal den ersten Block löschen lassen mit START_SEL_BLOCK, END_SEL_BLOCK und ERASE. Das hat auch wunderbar funktioniert, daher sollte die Kommunikation mit der Karte ja eigentlich ok sein.. Brauche ich an DAT0-DAT3 vielleicht Pull-Ups ? ich habe gemessen und laut SD Physical Spec sollten im Ruhemodus bei DAT0-DAT3 High-Pegel anliegen. Das ist aber nur bei DAT3 der fall, die anderen sind low und mit oscilloskop ist da auch keinerlei aktivität feststellbar. Grüße
Hallo, bist Du zwischenzeitlich mit Deinem Problem weitergekommen? Ich hab gerade das gleiche Problem. Initialisieren geht, Schreiben auch, nur lesen gibt 00 zurück (komischerweise ging es heute mittag mal eine zeitlang, dann habe ich was am Toplevelcode geändert (nicht im Physical layer..), leider keine Sicherheitskopie, und jetzt lese ich nur noch "0x00". Die Karte scheint ok zu sein, zwei andere Karten weisen das gleiche Fehlerbild auf.
ich habe auch einen Aufbau am Laufen, auch ohne Pullups und es funktioniert (noch) einwandfrei. Ich kann sogar bei einem Wert anfangen zu lesen, der nicht durch 512 teilbar ist :) Wenn einer von euch rausfindet, dass man irgendwo Pullups braucht, gebt Bescheid, dann bau ich die auch noch ein, will ja schließlich, dass es auch weiterhin funktioniert
in der SDCARD Spec steht eindeutig, dass man im SPI-Mode die nicht benutzten SD-Datenleitungen mit Pull-Ups versehen soll. Ich denke das spannende Thema sind die SPI Datenleitungen. hier sieht man die unterschiedlichsten Varianten im Netz.
Hallo, es wäre gut zu wissen wenn man euch helfen soll, welcher Controller, SDHC oder SD, FAT16 oder FAT32, SPI-Ansteuerung oder nicht und einen kleinen Codeausschnitt, wo ihr die Leseroutine macht. Gruss
Aso und Pull-Ups braucht ihr nicht meine läuft schon seit Jahren ohne!!! Gruss
Hallo, das komplette File (Ansteuerung im SPI-Mode mit dsPIC, ältere Sandisk 16MB SDCARD, eine 2. 32MB Type von Sandisk zeigt den gleichen fehler). Im Hauptprogramm initialisiere ich die Karte mit InitSD, dann InitMedia, danach beschreibe ich ein paar Sektoren mit writeSector und lese einen des Sektoren in einen Buffer zurück. Funktioniert alles bis ich den Sektor lesen möchte. Hier liefert readSector "0x01" zurück.
>Hier liefert readSector "0x01" zurück. > return ( r == DATA_START); // return TRUE if successful Was soll auch anderes zurückgegeben werden wenn das DATA_START Token gefunden wurde ? Wenn ne 0 zurückkommt hast du ein Problem.
hallo, danke für die Antwort. ich initialisiere "buffer[]" vor dem Sektor-Auslesen mit "0x05", nach "readSector" müßte dort aber das LSB der Adresse stehen, das ich zuvor reingeschrieben habe.
T. H. schrieb: > in der SDCARD Spec steht eindeutig, dass man im SPI-Mode die nicht > benutzten SD-Datenleitungen mit Pull-Ups versehen soll. Wo steht das denn? Ich finde das weder in der SD-Spezifikation noch in der (überholten) MMC-Spezifikation von JEDEC.
Nase schrieb: > Wo steht das denn? > Ich finde das weder in der SD-Spezifikation noch in der (überholten) > MMC-Spezifikation von JEDEC. Respekt! 10 Jahre! Das empfiehlt sich allein schon aus der Tatsache, dass SD-Karten in der Initialisierung im Open-Drain-Modus arbeiten. Hosts sollten dies auch, tun es aber je nach Hersteller/Derivat nicht. Je nach Spec. genügen die Host-internen PU's.... oder auch nicht.
Nase schrieb: > Wo steht das denn? In der "Einleitung" zu Kapitel 6. Du brauchst die ganze Spezifikation, in der frei verfügbaren Simplified Spec ist dieser Teil nicht enthalten. Gruss brue
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.