ACMD42-Befehl für SD-Karte

Laut Datenblättern der SD-Karte gibt es einen internen Pull-up-Widerstand auf der DAT3-Leitung, und wir können diese Leitung verwenden, um die Karte zu erkennen. Zusätzlich wird der ACMD42-Befehl beschrieben, der verwendet wird, um diesen Pull-up-Widerstand zu deaktivieren. Wenn ich jedoch nach einem SD-Gerätetreibercode suche, sehe ich, dass sie diesen Befehl nicht senden.

Ist das Senden des ACMD42-Befehls ein Muss oder eine Empfehlung? Was passiert, wenn wir diesen Befehl nicht senden?

Sind das zwei Fragen? Sie scheinen nicht verwandt zu sein.
Meine Erklärung wurde versehentlich gelöscht. Danke für den Hinweis! @ Austin

Antworten (1)

Sie haben Recht, dass die DAT3-Leitung laut Spezifikation mehrere Verwendungszwecke hat.

Im SD-Modus ist es die vierte Datenleitung und im SPI-Modus das Chip-Select-Signal. Die Physical Layer Simplified Specification Version 4.10 sagt:

Beim Einschalten ist für diese Leitung ein 50-KOhm-Pullup in der Karte aktiviert.

Und fährt fort zu sagen (Hervorhebung von mir):

Bei der Kartenerkennung erkennt der Host, dass die Leitung hochgezogen ist. Dieser Pullup sollte vom Benutzer während der regulären Datenübertragung mit dem Befehl SET_CLR_CARD_DETECT (ACMD42) getrennt werden

Die Spezifikation besagt also ausdrücklich, dass ACMD42 verwendet werden sollte, um den Pull-up-Widerstand zu trennen.

Was würde passieren, wenn der Gastgeber dies nicht tut? Es gibt drei Szenarien:

  1. Im 1-Draht-SD-Modus ist dieser Pin (wahrscheinlich) unbenutzt, also würde es vielleicht keinen Unterschied machen.
  2. Im 4-Draht-SD-Modus ist dies eine Datenleitung, also muss alles, was den Bus antreibt, den 50k-Pull-Up überwinden. Vielleicht wäre das ein Problem bei hoher Geschwindigkeit.
  3. Im SPI-Modus ist dies der Chip-Select-Pin. Es ist unwahrscheinlich, dass Sie beim Umschalten bei den beteiligten Geschwindigkeiten auf Probleme stoßen.

Über den SD-Modus kann ich nur raten, da dieser Teil der Spezifikation nicht öffentlich ist.

Beachten Sie, dass eine große Menge an Online-Code für SD-Karten von ziemlich schlechter Qualität ist. Es gibt verschiedene Teile der Spezifikation, die ziemlich klar darüber sind, was ein Host an verschiedenen Stellen tun muss. Diese werden in der Regel in öffentlichem Code vereinfacht. Dieser Code wird jedoch in 90 % der Fälle noch funktionieren.

Zusammenfassend: Die Spezifikation besagt, dass Sie den Widerstand trennen sollten, aber wenn Sie dies nicht tun, werden Sie im SPI-Modus wahrscheinlich keine Probleme haben.

Ich habe ähnliche Dinge mit dir gedacht. Deine Erklärung gibt mir Gewissheit. Danke @David!