Ich habe ein benutzerdefiniertes ARM Cortex M3-Board, das über UART mit einem Raspberry Pi 4 kommuniziert. Nur drei Drähte verbinden den Pi mit der MCU: Tx, Rx, GND. Wenn die MCU-Stromversorgung ausgeschaltet wird, schaltet sich das Gerät nicht ab, sondern zieht 17 mA vom Rx-Pin und kann die 3,3-V-Schiene auf 1,7 V bringen, was ausreicht, um die MCU am Laufen zu halten oder zumindest ein Zurücksetzen zu verhindern. Vermutlich geschieht dies über die Schutzdioden, wenn die 3,3-V-Versorgung ausgeschaltet ist.
Der Pi und die MCU werden von unabhängigen Netzteilen betrieben, sind jedoch im selben Gehäuse montiert und teilen sich eine Masse. Das UART-Kabel ist zwischen ihnen nur 10 cm lang.
Was ist der richtige Weg, um die Stromversorgung zwischen diesen Geräten zu trennen und gleichzeitig die UART-Kommunikation zu ermöglichen? Ich benötige keine galvanische Trennung, ich möchte nur den Rückfluss der Stromversorgung verhindern. Irgendwelche Vorschläge?
Ich habe derzeit 1-kΩ-Widerstände in Reihe mit den Rx- und Tx-Leitungen, was verhindert, dass die MCU vom Pi mit Strom versorgt wird. Es fließt jedoch immer noch Strom zum 3,3-V-Bus, und ich weiß nicht, ob dies die seriellen Daten beeinträchtigen wird.
(Bearbeiten: Ich möchte die allgemeine Natur dieser Frage betonen. Es ist üblich, Push-Pull-Verbindungen zwischen Geräten mit Schnittstellen wie SPI, UART oder nur GPIO-Bits zu haben. Diese alle haben das Potenzial, ein nicht mit Strom versorgtes Gerät über mit Strom zu versorgen die Schutzdioden.)
Es gibt Puffer, die das beheben (Suchbegriff: "ioff partial power down"). Solange der Puffer von der VCC der benutzerdefinierten ARM-Platine mit Strom versorgt wird, blockiert er den Strom, wenn VCC fehlt.
Sie können es aber auch mit zwei Transistoren beheben, einem PMOS wie dem BSS84 und einem NMOS wie dem BSS138. Siehe Schema unten. Verwenden Sie V CC auf Ihrer benutzerdefinierten Armplatine, um den BSS138 einzuschalten. Dadurch wird wiederum der BSS84 eingeschaltet, damit das Signal durchkommen kann.
Aber wenn VCC nicht vorhanden ist, schaltet sich der BSS138 aus, und dann schaltet sich auch der BSS84 aus, und es kann kein Strom von PI_TX zu PI_TX_SW fließen. R2 wird wahrscheinlich nicht benötigt. Es gibt wahrscheinlich schon etwas zwischen VCC und GND, das VCC zusammenbrechen lässt.
Dies ist die kurze Version der Antwort, da ich beurteile, dass Ihr Erfahrungsniveau bereits ziemlich fortgeschritten ist. Bitte zögern Sie jedoch nicht, bei Bedarf eine Ausarbeitung oder Klarstellung im Kommentarbereich anzufordern.
Wenn es nicht notwendig ist, auf der PI-Seite sparsam mit Strom umzugehen, können Sie R1 auf etwa 10 kOhm ändern.
Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan
Der klassische Weg ist die Verwendung eines "4050" ( Beispiel ) zum Puffern des eingehenden Signals. Ein 4050 leitet keinen Strom vom Eingang an Vdd weiter. Vdd sollte an die Stromversorgung des M3-Boards angeschlossen werden. Es gibt viele weitere moderne "Level-Übersetzer" -Chips, die Sie ebenfalls verwenden könnten.
Vielleicht einen nicht invertierenden Tri-State-Puffer in die TX-Leitung einbauen. Wie ein SN74AHC1G125 oder ähnlich. Verwenden Sie einen Pullup auf /OE zum Pi und fahren Sie ihn mit der MCU aktiv niedrig.
devnull
Nur ich
Mike
Mike
mkeith
David Molony
Mike