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:
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.
Antworten:
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.
quelle
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.
quelle