Ausfall des Stromkreises der Micro-SD-Karte

7

Beschreibung

Ich entwerfe ein System, in dem es eine Schaltung gibt, die die an eine Micro-SD-Karte angelegte Leistung steuert (aktivieren / deaktivieren).

Die Schaltung ist die folgende:

Geben Sie hier die Bildbeschreibung ein

Die Leistungssteuerschaltung wird von einem P-MOSFET ausgeführt, der standardmäßig deaktiviert ist.

Das Signal MICROSD_PWR_EN ist mit einem Pin eines als Open-Drain konfigurierten Mikrocontrollers verbunden.

Problem

Die gemessene Spannung am Pin VDD der Micro-SD-Karte sollte standardmäßig 0 V betragen. Diese Spannung liegt jedoch nahe + 1 V, was weder eine logische "0" noch eine logische "1" ist. Die am Knoten "+ 3,3 V" gemessene Spannung beträgt + 3,288 V und die am Gate des Q5 P-MOSFET gemessene Spannung beträgt + 3,285 V.

Haben Sie eine Idee zu diesem Thema?

Könnte das mit der 3-mV-Differenz zwischen der Source und dem Gate des Transistors zusammenhängen?

Firmware-Lösung

Zunächst einmal vielen Dank für Ihre Antworten.

Es scheint, dass ich das Problem durch Firmware gelöst habe: Indem ich die GPIOs der SD-Karte als Open-Drain-Ausgang konfiguriert und auf logisch "0" gesetzt habe, liegt die Spannung am VDD-Pin der SD-Karte jetzt nahe 0V.

Wie alle betonten, hängt es wahrscheinlich mit Schutzdioden der SD-Kartenchip-GPIOs zusammen.

johsey
quelle
Ich frage mich, ob es durch die Pull-up-Widerstände bis zu einem gewissen Grad selbst mit Strom versorgt wird. Versuchen Sie vielleicht, sie vorübergehend zu entfernen, wenn dies einfach genug ist und wenn dies der Fall ist, schließen Sie sie nach dem FET an.
PeterJ
Google 'Schutzdioden'. Ich denke jedoch, dass eine solche Schaltleistung zu Datenverlust führen kann. Was ist, wenn Sie die Stromversorgung wechseln, während die Karte intern Daten schreibt? Können Sie stattdessen einfach die Zeile _DETECT bearbeiten?
Markrages
@markrages In meinem System gibt es nur Lesezugriffe auf die SD-Karte. Es gibt also keinen Fall, in dem Daten verloren gehen können. Der Grund für die Verwendung dieser Leistungssteuerung besteht darin, zu Beginn des Systems sicherzustellen, dass sich die Karte in einem korrekten Zustand befindet, indem ein Ausschalten und dann ein Einschalten erzwungen wird. Ich habe SD-Karten gesehen, die sich nach dem Systemstart in einem unbekannten Zustand befanden, und ich möchte dies vermeiden.
Johsey

Antworten:

5

Die verbleibenden + 1 V, die Sie sehen, werden durch Vorspannung an den anderen Signalstiften der USD-Karte verursacht. Der Strom fließt entweder von hohen Pegeln an den an der SDIO-Schnittstelle angeschlossenen E / A-Pins des Mikrocontrollers oder über die 47K-Widerstände, die Sie auf diesen Leitungen haben, in den Controller-Chip auf der uSD-Karte. Von dort gelangt es über das Eingangsschutznetzwerk an diesen Pins zum VDD-Pin der USD-Karte, wo es auf 1 V-Ebene angezeigt wird.

Sie können diese Situation korrigieren, indem Sie die folgenden Schritte ausführen:

1) Verbinden Sie die Versorgungsleitungsseite der Pullup-Widerstände mit dem geschalteten VDD der uSD-Karte.

2) Immer wenn die Mikrocontroller-Firmware das Signal MICROSD_PWR_EN auf High setzt, um die Kartenleistung zu deaktivieren, setzen Sie alle Ausgangspins der SDIO-Schnittstelle auf einen niedrigen Pegel, indem Sie 0-Bit-Werte an ihre Port-Register-Bits ausgeben. Beachten Sie, dass in einigen Fällen, in denen das SDIO für ein dediziertes integriertes Peripheriegerät auf dem Mikrocontroller aktiviert ist, diese Ausgangspins möglicherweise wieder in den GPIO-Modus versetzt werden müssen, damit die FW die Kontrolle über die Pins erlangen kann.

3) Für alle Signale, die von der SDIO-Schnittstelle in den Mikrocontroller eingegeben werden, müssen Sie dafür sorgen, dass diese auf einen niedrigen Pegel gehen, wenn der Mikrocontroller das Signal MICROSD_PWR_EN auf High setzt. Dies kann auf zwei Arten erfolgen. Sie können den 47K-Pullup-Widerstand in einen Pulldown auf diesen spezifischen Leitungen ändern. Andernfalls könnten die Eingangspins zurück in den GPIO-Modus programmiert und dann als Ausgänge auf einen niedrigen Pegel gesetzt werden. Letzteres kann einfacher sein, da dann die E / A-Pins genauso behandelt werden wie die Ausgangs-Pins.

Zu dem Zeitpunkt, an dem der Mikrocontroller die USD-Stromversorgung wieder aktiviert, indem das Signal MICROSD_PWR_EN auf niedrig gesetzt wird, wird die Firmware geschrieben, um alle SDIO-Schnittstellen-Pins wieder in ihren normalen Betriebsmodus zu versetzen.

Michael Karas
quelle
0

Es ist sehr wahrscheinlich, dass Sie den Leckstrom von den Bildleitungen und Pull-up-Widerständen messen, der eine kleine Spannung an den anderen Pins erzeugt, und dass dieser aufgrund interner Dioden in der SD-Karte zum Power-Pin durchläuft.

Sie messen diese Spannung wahrscheinlich mit einem hochohmigen Voltmeter. Versuchen Sie, 100 kOhm vom Vdd-Pin auf Masse zu legen. Reduziert dies die von Ihnen gemessene Spannung?

Eine Leckage durch den FET ist bei diesen hohen Impedanzen wahrscheinlich ebenfalls signifikant.

Andy aka
quelle
Ich habe einen 100K-Widerstand zwischen dem VDD-Pin der SD-Karte und der Masse angelegt. Die gemessene Spannung ist größer als zuvor (+ 2,45 V).
Johsey