SD-Karte reagiert plötzlich nicht mehr auf CMD0 (RESET/SPI)

Ein Gerät, das ich über zwei Monate lang getestet hatte, fing plötzlich an, FR_DISK_ERR (ich verwende Elm Chans FAT-FS) [Link] auszugeben . Als ich versuchte zu debuggen, gab der Befehl (CMD0), der eingetaktet werden muss, um die SD-Karte in den SPI-Modus zu versetzen (wie im Datenblatt der SD-Karte - SDcard.org [link] beschrieben ), 0xFF und nicht 0x01 zurück, dh es ist fehlgeschlagen. Meine Frage ist:

*Wenn CMD0 fehlschlägt, bedeutet das, dass der SD-Kartencontroller nicht funktioniert?

*Wird es im SDIO-Modus auch dann noch funktionieren, wenn CMD0 fehlschlägt? (Ich konnte es nicht testen, da mein uC kein SDIO unterstützt)

*Kann ein Betriebssystem (Linux, Windows, Mac) diese SD-Karte formatieren, damit sie wieder funktioniert? Wenn ja, wie macht es das?

Chans FAT-FS hat keine Methode zu lösen, wenn wir einen FR_DISK_ERR haben, also muss ich einen Weg finden, das aus der Ferne zu lösen.

Probieren Sie zwei verschiedene Karten aus und bestätigen Sie mit einem Logikanalysator, was wirklich auf dem Bus passiert. Ich habe mehrere SD-Kartenfehler erlebt.
Ich habe es mit zwei verschiedenen Karten versucht. Sie funktionierten, bis auf diese hier. Ich habe diese SD-Karte auch in einem anderen Gerät ausprobiert, ich habe das gleiche Problem mit dem zweiten Gerät und einer fehlerhaften SD-Karte. Wie wird eine Karte so beschädigt, wie reagiert der uC in der Karte nicht mehr?
Selbst gparted (Linux) kann die SD-Karte nicht erkennen. Ich erhalte eine Fehlermeldung "Eingabe-/Ausgabefehler beim Lesen von /dev/sdb".
Wirf diese Karte einfach weg. Die Karte kann auch gefälscht sein, bunniestudios.com/blog/?page_id=1022 oder diese hatte einfach weniger Glück (ich habe in einem Jahr einmal eine Samsung-Karte in einem Himbeer-Pi getötet, ohne etwas zu schreiben).
@filo, ich habe eine SD-Karte, die nicht auf CMD9 reagiert, die das CSD-Register bekommen soll. Aber dieser Befehl schlägt fehl (Zeitüberschreitung). Kann das daran liegen, dass die Karte nur SDIO unterstützt (CMD9 wird in SDIO nicht unterstützt).
Nein, jede einzelne SD-Karte unterstützt das gute alte SPI. Senden Sie zwei Dummy-Bytes zwischen den Befehlen? Haben Sie ~80 Takte gesendet, bevor Sie irgendetwas mit der Karte begonnen haben?
Ja, kurz bevor wir CMD0 senden, haben wir 74 Dummy-Bytes gesendet. Aber wir senden nur ein Dummy-Byte vor jedem Befehl. Ich verwende einen Treiber von Ya Dan, powermcu.com, dieser funktionierte für alle anderen Geräte, also ist der Treiber in gutem Zustand. Es könnte die SD-Karte sein.

Antworten (1)

Wenn CMD0 fehlschlägt, sind entweder die SPI/SDIO-Pins nicht richtig verbunden (überprüfen Sie Ihre Verbindungen) oder der Controller funktioniert nicht wirklich. In meinem Fall funktionierte der Controller nicht. Ich habe versucht, es auf meinem Linux-PC zu verwenden, selbst gparted konnte es nicht erkennen. Ich bin mir immer noch nicht sicher, warum CMD9 fehlgeschlagen ist, ich habe versucht, den Hersteller zu kontaktieren, mal sehen, was sie darauf reagieren. Und das beantwortet meine eigene Frage.