Hallo zusammen! Bei der Auslegung von Schaltungen stolpere regelmäßig auf das Problem, dass GPIOs oder andere Eingange von allen möglichen Chips (zuletzt ein Raspbery Pi 4 CM) laut Datenblatt im unversorgten Zustand keine Spannung vertragen. Nun passiert es in meinen Projekten öfters mal, dass Teile miteinander kommunizieren, die unterschiedliche Spannungsversorgungen haben. Zuletzt war das konkret das Raspberry 4 CM mit einem Chip von TI (siehe [hier](https://www.ti.com/product/TMS320F28377S)), die über UART kommunizieren. Laut Datenblatt darf beim Raspi im unversorgten Zustand nirgens Spannung anliegen. Bei unterschiedlichen Spannungsversorgungen ist ja nicht sichergestellt, dass eine davon mal nicht an. Selbst wenn sie am gleichen Rail hängen, haben sie auch unterschiedliche Zeiten, die die Spannungsversorgungen zum für ihren Startup brauchen. (Sequencing ist keine Option, da die Schaltungsteile im Notfall auch ohne einander funktionieren sollen) Darum meine Frage: Wie geht ihr dieses Problem in der Praxis an? (Bzw geht ihr es überhaupt an :D ) Wenn man ganz penibel ist, müsste man ja beim jedem Signal einen Tristate-Buffer schalten, der die Spannung unversorgt aushält. Den Enable-Pin des Buffers an die Versorgung des zu schützenden Teils gehängt. Aber selbst dann ist nur schwer aus dem Datenblatt des jeweiligen Tristate Buffers zu lesen, ob der Ausgang im unversorgten Zustand auch hochohmig ist. Dazu ist das nicht gerade eine wirtschaftliche Lösung. Im konkreten Fall des Raspis und dem UART befindet sich ja an dem zu schützenden GPIO eine Push/Pull Ausgangsstufe. Wenn man an der Spannung anlegt, fließt über die Bodydiode des "oberen Mosfets" Strom Richtung der eigentlichen Versorgung. Dieser Mosfet ist nach meinem Verständnis auch der Teil, der abrauchen würde. Ein entsprechender Serienwiderstand zur Strombegrenzung könnte somit auch eine - zugegebenermaßen relativ wilde und unschöne - Lösung sein. Vll gibt es ja auch andere Methoden, wie man dieses Problem angeht. Freue mich schon auf eure Erfahrungen! Dominik
Dominik schrieb: > Ein entsprechender Serienwiderstand > zur Strombegrenzung könnte somit auch eine - zugegebenermaßen relativ > wilde und unschöne - Lösung sein. Sehe ich nicht so, der Widerstand soll das Signal nicht wesentlich beeinflussen, aber die Schutzwirkung haben. Macht man öfters. Grüsse
in software lösen, quell io pin erst auf ausgang schalten, wenn vom spannungsregler pg indiziert wird.
Was macht den dein TI wenn der TX zu stark belastet wird? geht der auch über den jordan? oder begrenzt der bereits auf x mA. bzw wie viel mA verträgt das CM an so einem pin.
Gebhard R. schrieb: > Sehe ich nicht so Gebhard R. schrieb: > Macht man öfters. Gut zu hören. Flip B. schrieb: > in software lösen, quell io pin erst auf ausgang schalten, wenn vom > spannungsregler pg indiziert wird. Das ist auch eine gute Idee!
Dominik schrieb: > Das ist auch eine gute Idee! Das sollte eigentlich der Normalzustand sein, das so zu programmieren. Auch im fail safe Fall werden die Ausgänge und Eingänge schutzgeschaltet. Dann gibt es noch eine Überwachung in Hardware, welche die Spannung checkt und empfindliche Bauteile gfs vom Bus abkoppelt, um sie und den Bus zu schützen. Das kann man / muss man auch mit den Bausteinen für Reset-Sequenzen verknüpfen.
Dominik schrieb: > Wie geht ihr dieses Problem in der Praxis an? Richtig: open collector Ausgänge (oder eben ein nachgeschalteter BC547) und den pull up auf Empfängerseite. Bei bidirektionaler Kommunikation den pull up nur freigeben, wenn beide Seiten ihre Betriebsspannung haben. Gepfuscht: 1k Ohm Serienwiderstand begrenzt den Strom über die Eingangsschutzdioden auf 4.5mA. Professionell: Pegelwandler mit 2 Versorgungsspannungen, wie TXB0108 oder IDT74FCT16244.
123 schrieb: > Was macht den dein TI wenn der TX zu stark belastet wird? Der kann pro Pin bis 20mA (wenn ich das richtig im Kopf hab). Der Raspi kann 8mA pro Pin. Danke fürs aufmerksam machen - dass die Quelle nicht überlastet wird muss man natürlich auch beachten. Muss sagen, dass hatte ich gerade vergessen.
MaWin schrieb: > Richtig: open collector Ausgänge (oder eben ein nachgeschalteter BC547) > und den pull up auf Empfängerseite. > > Bei bidirektionaler Kommunikation den pull up nur freigeben, wenn beide > Seiten ihre Betriebsspannung haben. > > Gepfuscht: 1k Ohm Serienwiderstand begrenzt den Strom über die > Eingangsschutzdioden auf 4.5mA. > > Professionell: Pegelwandler mit 2 Versorgungsspannungen, wie TXB0108 > oder IDT74FCT16244. Ideal, danke! Ob der Gegenpart versorgt ist oder nicht, kann man ja dann auch mit einem BC547 + Pullup feststellen, ohne dass man direkt eine Spannung vom Gegenpart direkt auf die CPU führt.
Es gibt Bausteine wie 74LVC2G241, die direkt dafür ausgelegt sind: "This device is fully specified for partial power-down applications using IOFF. The IOFF circuitry disables the output, preventing a damaging backflow current through the device when it is powered down." Andere Möglichkeit: Dual-Supply Levelshifter der 74LVC?T(2)45 Serie (bis 5.5V) und der 74AVC?(2)45 Serie (bis 3.3V). Auch die sind dafür ausdrücklich ausgelegt, dass eine Seite stromlos sein darf. Ich setze solche Bausteine gerne ein. Einen SOT23-5 oder MSOP08 welchselt man einfacher als einen TQFP144, wenn etwas verkehrt läuft. fchk
P-Kanal Mosfet mit niedriger VGSth. Gate an Versorgungspannung vom Ziel, Signalquelle an Source, Ziel an Drain. Evt. noch einen Pullup ans Drain. Gibt einen leichten Spannungsabfall, der stört aber meist nicht. Gibt auch fertig als Array ohne Body-Diode: https://www.ti.com/product/LSF0108 In der App Note dazu steht wie das Teil intern aufgebaut ist: https://www.ti.com/lit/pdf/slva675. Wenn man Vref_B genügend groß wählt, dann entfällt bei dem auch der Spannungsabfall
Andreas M. schrieb: > P-Kanal Mosfet mit niedriger VGSth.. ... UND ohne interne Diode von S nach D, also quasi nicht beschaffbar.
Lösung aus der Bastelkiste: Pullup-R am Eingang, wenn nicht schon dort drin, und Schottky-Diode in Serie.
:
Bearbeitet durch User
Für Bussysteme verwende ich immer bauteile die eine saubere Trennung sorgen und HOTSWAP geignet sind. Da wird system A von System B auch noch gaalvanisch getrennt und ev. auftretende Spikes bei Zuschalten der vorher Stromlosen teilen, macht auch keine Abstürze. Als Beispiel: Für I²C Bus den ADuM1250 oder ADuM1251 oder ISO1540 Für RS232 den ISO7242 Das erspart viel ärger ;-) auch falls die busse über Stecker verbunden sind, können diese während dem Betrieb ein und ausgesteckt werden "HotSwap" eben
In der Antike hatte man bei Bussystemen TTLs verwendet. Denen ist das egal. In dieser Rolle überlebten TTLs auch noch, als sonst längst 74HC(T) üblich waren.
MaWin schrieb: > Andreas M. schrieb: >> P-Kanal Mosfet mit niedriger VGSth.. > > ... UND ohne interne Diode von S nach D, also quasi nicht beschaffbar. Du hast Recht, ich habe mich vertan, sollte N-Kanal und D an die Quelle heißen. Wie bei einem Levelshifter. Die Body Diode stört nur für den Fall das die Quelle nicht versorgt und das Ziel versorgt ist. Wenn man den Pullup groß genug wählt oder ganz weg lässt ist das vielleicht gar kein Problem. Man könnte auch zwei Mosfets Rücken an Rücken verschalten und die Gates an die jeweilige Versorgungsspannung. Dann müsste es auch bidirektional trennen.
Flip B. schrieb: >> in software lösen, quell io pin erst auf ausgang schalten, wenn vom >> spannungsregler pg indiziert wird. >Das ist auch eine gute Idee! das Problem habe ich auch mit einem Analogausgang in einem Design. Wenn die Platine aus der Fertigung kommt bis dass sie geflasht ist, gibt es praktisch einen Kurzschluss wo ein OP dahinter heiss wird. Ist halt in Software gelöst. Passieren tut aber trotzdem nix.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.