Wie kann das Einlegen/Entfernen der SD-Karte erkannt werden?

Ich verbinde eine 32-GB-Micro-SD-Karte mit PIC32MX795F512L. Ich folge den Beispielen im Buch von Lucio de Jasio. In einem ihrer Beispiele verwenden sie, while( !getCD());um zu überprüfen, ob die Karte vorhanden ist oder nicht. Aber das scheint in meinem Fall nicht zu funktionieren, denn wenn ich die Karte entferne, gibt es keinen Fehler und bewegt sich vorwärts. Unten ist sein Code:

// SD card connector presence detection switch
int getCD( void)
// returns TRUE card present
// FALSE card not present
{
 return !SDCD;
}

In der Hardware SD-CDist Pin mit verbunden RA15. Wie wird also das Vorhandensein der Karte erkannt?

BEARBEITEN:

Geben Sie hier die Bildbeschreibung ein

Oben ist das Schema für SD-Kartenverbindungen. SD-CD#pin ist der Pin für die Kartenerkennung. Ich überprüfe die Spannungsänderung an, R34aber es gibt keine Änderung. Wenn die Karte entfernt wird, wird angezeigt 3.5v, und wenn die Karte eingeführt wird, wird erneut angezeigt 3.5v. Mache ich etwas falsch oder hat die Hardware ein Problem?

indem Sie den Zustand dieses Pins lesen?
Sie meinen, wenn es hoch ist, ist die Karte vorhanden
@PlasmaHH Wenn die Karte nicht erkannt wird, bedeutet dies, dass sie nicht weiter initialisiert wird. Ist die Kartenerkennung wirklich wichtig?
Die Kartenerkennung kann wichtig sein. Es hängt wirklich von mehreren Dingen ab und davon, wie die Software für den Zugriff auf die Kartenschnittstelle geschrieben ist. Wenn der Zugriff auf die Schnittstelle gestartet wird, ohne dass eine Karte vorhanden ist, kann die Software beim Warten auf eine Antwort hängen bleiben. Ebenso könnte die Karte beschädigt werden, wenn zum Schreiben auf eine Karte zugegriffen wird und ein Entfernen nicht ordnungsgemäß gehandhabt wird.
Das SanDisk-Datenblatt gibt an, dass die Kartenerkennung durch Lesen des SD-internen 50K-Pullup-Widerstands am SD-CS#-Pin erfolgen kann. In Ihrer Schaltung wird dies durch Ihren eigenen Klimmzug getötet. Ich würde versuchen, R28 zu entfernen und dann einen Pulldown-Widerstand von 500 K / 1 M hinzuzufügen, um sicherzustellen, dass an diesem Pin eine 0 gelesen wird, wenn sich keine Karte im Steckplatz befindet. Nicht wirklich ein Problem, aber beachten Sie, dass SD Specs zwar eindeutig das Vorhandensein dieses Pull-up-Widerstands angeben, dies jedoch für den alten MMC-Standard nicht der Fall ist.

Antworten (1)

Die SD-Kartenerkennung erfolgt normalerweise über einen mechanischen Schalter, der direkt in den SD-Kartensteckplatz eingebaut ist. Es öffnet und schließt sich beim Einstecken und Herausnehmen der Karte. Sie müssen untersuchen, wie dieser Schalter in Ihrer Hardware angeschlossen ist, und testen, ob dies bis zum PIC32-Pin korrekt funktioniert, bevor Sie überhaupt anfangen, über Softwareprobleme nachzudenken.

Das Testen der Hardware sollte so einfach sein wie das Betrachten des Signals, das zum PIC32-Pin geht, mit einer Oszilloskopsonde oder einem Multimeter im Volt-Messmodus. Mit der PIC32-Platine versorgter Monitor, wenn es Zustandsänderungen im Signal gibt, wenn eine Karte eingesteckt oder entfernt wird. Wenn dies nicht funktioniert, ist der Schalter in der Steckdose nicht richtig angeschlossen. Typisch ist, dass eine Seite dieser Schalter mit GND verbunden ist. Die andere Seite hat einen Pullup-Widerstand gegen +3,3 V und ist ebenfalls mit dem PIC32-Pin verbunden. Wenn es richtig funktioniert, sollten Sie sehen, dass es zwischen 3,3 V und GND wechselt.

Nachdem Sie die Hardwareverbindung überprüft haben, ist es an der Zeit, den Aspekt der PIC32-Software zu untersuchen. Die spezielle Pin-Verbindung muss ein Allzweck-Eingangsport-Pin am Mikroprozessor sein. Dann muss dieser Port-Pin richtig konfiguriert werden, um als digitaler Eingangspin zu fungieren. Wenn es nicht richtig konfiguriert ist, wird es keine Freude machen, das Statussignal der SD-Karte einzulesen.

Danke für die nützlichen Informationen. Ich habe meine Frage bearbeitet und den Schaltplan hochgeladen. Bitte werfen Sie einen Blick darauf.
@ user007 - Nun, zumindest wissen Sie jetzt, dass mit der Hardware möglicherweise etwas nicht stimmt. Der SD-Kartensteckplatz könnte defekt sein oder der Steckplatz hat keinen Schalter....
Ich denke, es gibt ein Problem im Kartenanschluss. Vielleicht ist sein Schalter kaputt. Vielen Dank.!
Ich habe mehrere uSD-Kartenanschlüsse getestet und große Qualitätsunterschiede zwischen ihnen festgestellt. Ich habe ungefähr 8 oder 10 verschiedene gekauft, um bei der Auswahl einer Steckdose für ein Projekt, an dem ich arbeitete, zu helfen. Ich kann auch sagen, dass einige der Buchsen mit dem Push-Push-Einschub- und Auswurfmodus ernsthaft beschädigt werden können, wenn die Karte in der Halteposition gewaltsam herausgezogen wird. Wenn Sie sich also für einen Push-Push-Sockel entscheiden, sollten Sie nach einem suchen, der bei Verwendung in Verbindung mit dem Produktgehäuse keinen normalen Zugriff zum Herausziehen der Karte ohne die Push-Eject-Aktion ermöglicht.
Ich denke, mein SD-Kartenanschluss ist kein Push-Push-Anschluss, da ich zum Entfernen der Karte aus dem Anschluss den Anschluss nicht hineindrücken musste, sondern ihn einfach durch Herausziehen entfernte. Es gibt keinen Schalter im Anschluss, der die Karte auswirft, während wir die Karte hineinschieben. Ich bin verwirrt, weil jeder SD-Kartenanschluss einen Schalter hat, der beim Entfernen der Karte hilft, aber dieser hat keinen Schalter. Also ist dieser Stecker defekt oder es ist ein anderer Steckertyp und es ist in Ordnung.
Ich denke, es ist ein Stecker vom Typ zum manuellen Einsetzen / Entfernen, aber dann gibt er mir keine Spannungsänderung, während ich die Karte einsetze oder entferne. Ich überprüfe die Spannung gemäß den von Ihnen beschriebenen Schritten, indem ich die Spannung über dem Widerstand überprüfe, aber es gibt keine Spannungsänderung. Was könnte das Problem sein?
Sehr wenige, wenn überhaupt, SD- und uSD-Kartenanschlüsse unterstützen eine Auswurftaste. Steckdosen gibt es in drei Grundtypen. 1) Einfache Einführungs-/Entnahmeart, bei der es keine mechanische Sperre gibt, um die Karte an Ort und Stelle zu halten. 2) Geben Sie dort ein, wo das Einführen der Karte eine Raste kreuzt, die einen Reibungshalt auf der Karte bewirkt, und das Greifen der Karte, um sie herauszuziehen, überwindet die Raste. 3) Push-Push-Buchse, bei der die Karte gegen die Federspannung hineingedrückt wird und in Position einrastet, um die Karte an Ort und Stelle zu halten, und ein zweites Hineindrücken die Verriegelung löst und die Feder die Karte teilweise herausdrücken kann. (Fortsetzung)
(Fortsetzung von oben). Innerhalb dieser Variationen gibt es die Buchsen in umgekehrter und normaler Ausführung. Umgekehrte Typen werden auf der Unterseite einer Leiterplatte montiert und lassen die Etikettenseite der Karte immer noch nach oben zeigen.
Vielen Dank für die Erklärung der Arten von Anschlüssen. Mine ist ein Stecker vom 2. Typ. Diese Arretierung gibt uns also das Signal für die Kartenerkennung, oder diese Art von Anschluss hat keine Typerkennungsfunktion.
Ob der SD- oder uSD-Kartensteckplatz einen Kartenerkennungsschalter unterstützt, ist eine andere Frage als die Art des Kartenrückhaltemechanismus, den der Steckplatz unterstützt. Bei den meisten Steckdosen ist der Schaltkontakt zur Kartenerkennung in die Steckdose eingebaut. Allerdings bin ich mir sicher, dass es einige Typen ohne Schalter gibt, um ein paar Cent Kosten zu sparen. Beachten Sie, dass diese Schalter ziemlich empfindlich sind, insbesondere für uSD-Kartensteckplätze, und leicht beschädigt werden können. Sie sollten nachsehen, ob einer der SMT-Füße Ihres Sockels nicht richtig gelötet werden konnte. Versuchen Sie zweitens, den Sockelhersteller zu finden, und sehen Sie im Datenblatt des Teils nach.