5-V-Toleranz des 3,3-V-Ausgangsstifts

Nehmen wir folgendes Szenario an:

  • uC (@3.3V VDD) treibt einen E/A-Pin HIGH 3.3V (nur um klar zu sein, es ist kein Open-Drain-Pin, also treibt der p-Kanal-Mosfet des Ausgangspins den Pin tatsächlich auf VDD-Pegel)
  • Pin ist auch als 5-V-toleranter Eingang eingestuft (also nicht an VDD geklemmt).
  • Die Leitung, die der Pin antreibt, ist auch mit einem Pin eines anderen uC (@ 5V VDD) verbunden, der die Leitung auch auf 5V-Pegel treiben kann
  • Zwischen den beiden Pins der verschiedenen uCs nehmen wir einen Widerstand von ~2470R an

Die Fragen sind:

Was passiert, wenn, während der 3,3-V-uC die Leitung HIGH (3,3 V) treibt, der andere uC ebenfalls versucht, die Leitung HIGH (5 V) zu treiben? Was kann man dann über die 5V-Toleranz des 3.3VDD uC OUTPUT Pins aussagen?

Wird dann ein Strom von 680 uA ( (5 - 3,3) / 2470 ) in die VDD des 1. uC eingespeist? Was passiert eigentlich in der I/O-Pin-Schaltung des 1. uC? Ist diese Verbindung sicher?

Ich poste diese Frage, falls jemand mit einem besseren Verständnis davon antworten möchte, da dieser Fall nicht im uC-Datenblatt dokumentiert ist und ich nach einiger Recherche keine endgültige Referenz dazu finden konnte.

Warum dürfen die beiden Ausgangspins überhaupt aktiv ein Signal treiben?
Nun, dies ist auf einem I2C-Bus und ein bidirektionaler Pegelwandler ist keine Option (aufgrund anderer Einschränkungen).
I2C ist Open-Drain, daher sollten Sie nicht zwei Ausgänge haben, die ihn aktiv ansteuern. Deaktivieren Sie einen der Klimmzüge.
Ich habe das falsch formuliert und jetzt kann ich den Kommentar wegen der 5m-Grenze nicht bearbeiten. Lassen Sie es mich noch einmal versuchen: Nun, der 3,3-V-Ausgangspin fungiert als Pull-up (über 2 Widerstände) für die I2C-Leitungen eines Busses, und der 5-V-Ausgangspin am anderen uC ist mit SCL oder SDA dieses Busses verbunden. Der 5-V-uC-Ausgangspin ist Teil einer älteren Implementierung, bei der ein anderes Busprotokoll verwendet wurde. Dieser Pin kann den gesamten Bus direkt auf 5 V treiben (nicht Open-Drain durch Pull-up-Widerstand). Muss auch erwähnt werden, dass die Verwendung eines bidirektionalen Pegelwandlers nicht möglich ist (aufgrund anderer Einschränkungen).
Unabhängig von der Motivation ist es eine interessante Frage, die ich mir auch gestellt habe.
Deshalb habe ich versucht, es aus dem Zusammenhang zu reißen, weil ich eigentlich verstehen möchte, was in diesem Fall passiert, da die Dokumentation dazu rar zu sein scheint. Und die meisten sagen, dass Sie das nicht tun sollten, erklären aber die zugrunde liegenden Besonderheiten nicht (oder verstehen sich selbst nicht).
@IgnacioVazquez-Abrams Weil manchmal Fehler passieren. Ich für meinen Teil würde auch gerne wissen, was in diesem Fall im Einzelnen passiert. Betrachten Sie es als hypothetisch.
Kannst du auf ein Datenblatt verweisen?
Absolute Höchstwerte für einen beliebigen AVR-Zustand: Voltage on any Pin except RESET with respect to Ground ... -0.5V to VCC+0.5Vund DC Current per I/O Pin ... 40.0mA. Das würde bedeuten, dass Sie keinen Ausgang höher als Vcc + 0,5 V ziehen dürfen, wahrscheinlich begrenzt durch die interne Schutzdiode und begrenzt auf maximal 40 mA, wiederum den Strom durch diese interne Schutzdiode. Aber ich bin mir nicht ganz sicher, ob es so funktioniert, daher ein Kommentar und keine Antwort.
Ich glaube nicht, dass man allgemein sagen kann, dass ein 5V-toleranter Eingang 5V aushält, wenn er als Ausgang konfiguriert ist . Normalerweise treibt kein Gerät die Busleitungen aktiv an. Dafür gibt es die externen 4k7-Klimmzüge. Die saubere Lösung besteht also darin, an keinem der beiden Geräte einen hohen Pegel auszugeben, sondern nur einen niedrigen Ausgang (für 0) zu verwenden oder den Pin mit drei Zuständen (für 1) zu verwenden. Das Tri-Stateing eines Pins ist oft gleichbedeutend mit der Neukonfiguration des Pins als Eingang , in diesem Fall sollte er auf den Busleitungen weder „drücken“ noch „ziehen“.
"Level-Shifting" kann übrigens mit nur zwei FETs erreicht werden: letsmakerobots.com/node/34444
Ist diese Frage nicht zu weit gefasst? Am Ende hängt es ganz von der Schaltungsimplementierung in den Controllern ab. Also ohne Datenblatt / Controller-Typ ist alles Spekulation.
Ich denke, Sie haben Recht mit der Breite der Frage. Ich beziehe mich auf einen STM8L151R6 uC. Das Referenzhandbuch enthält ein I/O-Pin-Schema, enthält jedoch keine Details zu diesem Szenario. Wenn Sie das zitierte Schema überprüfen, sehen Sie den High-Side-Mosfet (p-Kanal-Puffer). Was ich vermute, ist, dass der oben beschriebene Strom von 680 uA durch den High-Side-Mosfet (durch die intrinsische Diode des MOSFET - pn-Übergang) auf VDD sinkt.

Antworten (2)

Im abstraktesten Sinne passiert Folgendes:

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

Sie haben eine Differenz von 1,7 V über 2,47 k Ω , und so fließt ein Strom von etwa 0,69 mA von V2 nach V1.

Die Linie wird nicht in einen klar definierten Zustand getaucht. Links von R1 ist der Pegel das, was V1 ausgibt. Rechts die Spannung von V2. Im gesamten Körper von R1 gibt es eine Mischung von V1 zu V2. Offensichtlich ist dies wahrscheinlich kein nützliches Verhalten für digitale Schaltungen, bei denen wir einen definierten Logikpegel auf einer bestimmten Signalleitung wünschen: denselben Pegel auf beiden Seiten eines beliebigen Widerstands.

Der ungünstigste Strom von etwa 2 mA tritt auf, wenn V1 niedrig getrieben wird und V2 auf 5 V liegt. Aus Sicht von V2 fährt es nur einen 2.47 k Ω Widerstand gegen Masse, aber V1 muss den Strom aufnehmen. Im umgekehrten Fall muss V2 etwas weniger Strom von V1 ziehen.

Ich habe die Frage so verstanden: "Was passiert in der uC?"

Ich glaube nicht, dass du dazu eine Spezifikation finden wirst. Einige Treiber können mehr Strom aufnehmen (und liefern) als andere. Einige sind geschützt und andere nicht. Dies hängt von den Typen ab, die von den Werkzeugkonstrukteuren verwendet werden. Um Geld zu sparen, können einige Versionen desselben ICs während seiner Produktionszyklen unterschiedliche Treiber haben.

Der 680uA-Strom versucht, in die VDD des 1. uC zu sinken. Was passiert, hängt von der Art der Ausgangstreiber auf dem Chip ab. Einige Treiber verfügen über einen Verpolungsschutz, der auf die Versorgung der Schaltung des Chips zurückkoppelt, einige Ausgangstreiber haben dies nicht und können ausfallen.

Bei einem geschützten Treiber wird der Strom zum Rest der Schaltung auf dem Chip umgeleitet. Wenn es den überschüssigen Strom nicht aufnehmen kann, beginnt es, die interne Vdd-Versorgungsspannung anzuheben. Dies kann manchmal Dinge unvorhersehbar beschädigen.

Es gibt einige Treiber , die unter beiden Bedingungen schützen, bei denen die interne Schaltung isoliert und der Treiber geschützt ist, dies ist jedoch häufig nicht der Fall (folgen Sie dem Patentpfad auf dem Link, um weitere Beispiele zu sehen). Ausgangstreiber für Stifte nehmen viel Platz auf dem Chip ein und werden oft minimiert.

Ich stimme deiner Meinung zu. Allerdings würde ich gerne wissen, was auf einer niedrigeren Ebene passiert. In diesem Fall beziehe ich mich auf einen STM8L151R6 uC. Das Referenzhandbuch enthält ein I/O-Pin-Schema, enthält jedoch keine Details zu diesem Szenario. Wenn Sie das zitierte Schema überprüfen, sehen Sie den High-Side-Mosfet (p-Kanal-Puffer). Was ich vermute, ist, dass der oben beschriebene Strom von 680 uA durch den High-Side-Mosfet (durch die intrinsische Diode des MOSFET - pn-Übergang) auf VDD sinkt. Was ist Ihre Meinung dazu?
Abschnitt 9.3.6 zeigt, dass sie nicht tolerante Pins bis +/- 5 mA ohne interne Fehler getestet haben. Sie geben jedoch auch an, dass "über VDD (für Standardstifte) während des normalen Produktbetriebs vermieden werden sollte". Ich konnte den von Ihnen erwähnten Schaltplan nicht finden, aber oft werden sie für die Veröffentlichung vereinfacht. Rufen Sie einen STM-Anwendungstechniker an oder senden Sie ihm eine E-Mail. Aber im Allgemeinen, wenn die Spezifikationen sagen, tun Sie es nicht ... wie Sie bemerkt haben, werden die pn-Übergänge normalerweise gebraten. Wenn Ihr 3-V-uC niedrig fährt, sinkt noch mehr Strom von ~ 2 mA.