Warum sollte I2C mit Pull-Up-Widerständen arbeiten und nicht mit Pull-Down-Widerständen?


22

Ich verstehe, dass in I2C-, SCL- und SDA-Leitungen Pull-up-Widerstände verwendet werden und die Pin-Treiber Open-Collector-NPN-Geräte sind, die Pins gegen Masse treiben können. Dies gibt I2C den Vorteil, dass der gleiche Bus jetzt mit mehreren Slaves geteilt werden kann, und selbst wenn zwei oder mehr Slaves versehentlich versuchen, den Bus gleichzeitig zu betreiben, wird das System nicht beschädigt.

Dies kann aber auch mit PNP-Open-Drain-Treibern und Pull-Down-Widerständen auf SDA- und SCL-Leitungen erfolgen. Dinge wie Clock-Stretching und Multi-Master-Arbitration können auch damit erreicht werden.

Hat die aktuelle Implementierung des I2C-Protokolls Vorteile gegenüber der oben vorgeschlagenen alternativen Implementierung?


1
Open-Collector-Transistoren schienen in den 80er Jahren die Mehrheit der ICs zu sein.
PlasmaHH

9
@PlasmaHH Ich denke, der Grund dafür war, dass NPN (soweit ich mich vage erinnere) aufgrund der höheren Elektronenbeweglichkeit im Substrat eine höhere Stromkapazität pro Fläche hat, so dass es einfacher ist, damit "starke" Ausgangsstufen zu bauen.
Marcus Müller

7
@ MarcusMüller Ja, das war (und ist) wahr. NPNs und NMOS-Fets sind bei gleicher Größe "stärker". Bei CMOS ist ein Faktor von 2 bis 3 typisch. Für PNP vs NPN hängt es vom Herstellungsprozess ab, aber fast immer sind PNPs weitaus schwieriger und komplexer als die NPNs. Auch das Beginnen mit einem P-dotierten Substrat (wie die meisten Prozesse) unterstreicht dies (bessere NPNs).
Bimpelrekkie

@Bimpelrekkie Ich erinnere mich an einen Faktor von 2,3 aus meiner Festkörperphysikklasse bis zu diesem Datum :-)
winny

1
Wenn der vorhandene I2C-Bus aus irgendeinem Grund versehentlich kurzgeschlossen wird, wird nur der Pull-up-Widerstandsstrom verbraucht. Mit der komplementären Anordnung von Aktiv-Hochtreibern und Pull-Down-Widerständen würden Sie einfache Treiber aus den I2C-Anfangsjahren beschädigen. Beim Wechsel zwischen Platinen ist ein Kurzschluss zum Chassis zu berücksichtigen. Aber es ist nur einer von vielen Gründen, warum Sie auf Drive-Low-Pull-High umsteigen, die anderen haben weiter unten geantwortet.
TonyM

Antworten:


30

Elektrisch ist dies sinnvoll, da Masse die einzige gemeinsame Verbindung für alle Geräte an einem IIC-Bus ist. Dies ist eine weitaus geringere Einschränkung, als zu erzwingen, dass Strom die gemeinsame Verbindung für alle IIC-Geräte ist, wie dies erforderlich wäre, wenn die Leitungen über Pulldowns hoch und niedrig getrieben würden.

Beachten Sie, dass nicht alle IIC-Geräte aus demselben Netz oder derselben Spannung gespeist werden müssen. Dies wäre nicht der Fall, wenn beide Busleitungen auf die einzige gemeinsame Netzspannung geschaltet werden müssten.


5
Nicht meine Ablehnung, und Sie müssen so viele Jahre I2C-Erfahrung haben wie ich, daher ist mein Punkt hier wahrscheinlich ein Missverständnis, aber: " IIC-Geräte müssen nicht alle mit [...] der gleichen Spannung versorgt werden " Dies bedeutet, dass 5-V- und 3-V-I2C-Geräte (zum Beispiel) denselben I2C-Bus nutzen können, ohne dass zusätzliche Komponenten oder Vorsichtsmaßnahmen erforderlich sind (da Sie keine Level-Übersetzer erwähnt haben). Und das können sie natürlich nicht, da die I2C-Logikschwellenwerte der einzelnen Geräte jetzt auf ihre eigenen Vcc bezogen sind. Vielleicht hat das Fehlen einer expliziten Erwähnung von Level-Übersetzern die Ablehnung verursacht?
SamGibson

13
Abhängig von den verwendeten Pull-ups und I / O-Pins kann die Kommunikation im I2C-Stil reibungslos zwischen 5-V- und 3,3-V-Geräten funktionieren. Die Verwendung von 10K-Pull-ups auf 5 V würde zum Beispiel die Verwendung von 3,3 V-Geräten ermöglichen, wenn diese 5 V-tolerante ungeklemmte Eingänge haben oder 150 uA in ihren Schutzdioden tolerieren können. Die Verwendung von Pullups auf 3,3 V funktioniert zumindest bei langsameren Geschwindigkeiten für die Verbindung mit 5-V-Geräten mit einem hohen Eingangsschwellenwert von 2,5 V oder weniger.
Supercat

7
@ Sam: Eigentlich 5 V bzw. 3,3 V IIC - Geräte können auf demselben IIC - Bus sein. Geräte mit festen Spannungspegeln, unabhängig von ihrer Versorgungsspannung, sind in der IIC-Spezifikation ausdrücklich erwähnt und zugelassen.
Olin Lathrop

5
In dem alten Dokument "Der I2C-Bus und seine Verwendung" von Philips werden in Abschnitt 10.0 die festen Eingangsschwellen der frühen (normalerweise NMOS) 5-V-I2C-Geräte erwähnt. Dann heißt es: " I2C-Bus-Geräte mit VDD-bezogenen Eingangspegeln müssen eine gemeinsame Versorgungsleitung haben, an die auch der Pull-up-Widerstand angeschlossen ist " (fett gedruckt). @supercat - Sie haben erwähnt: " 5-V-Geräte mit einer Eingangsschwelle von 2,5 V oder weniger " Können Sie mir helfen, indem Sie ein Beispiel für ein solches Gerät angeben ? Wenn ich alte I2C-Dokumente lese, kann ich für diese alten 5-V-Geräte nur Angaben zu einem festen 3-V-I2C-Vih-Minimum finden. Vielen Dank.
SamGibson

2
@SamGibson: Geräte mit VDD-bezogenen Eingangspegeln müssen möglicherweise mit Spannungen betrieben werden, die innerhalb eines bestimmten Bereichs voneinander liegen. Wie nahe sie sein müssen, hängt davon ab, wie sich die Spannungen auf VDD beziehen. Das Microchip-Datenblatt für den PIC16F877 (ein 5-V-Teil, das willkürlich ausgewählt wird) listet V (IH) für seine normalen Stifte mit 0,25 V DD + 0,8 V auf, obwohl es für seine Schmitt-Trigger-Eingänge viel höher wäre. Bei VDD = 5,2 V hätte ein normaler Eingang ein bestimmtes V (IH) von 2,1 Volt; Ich habe keine Spezifikation für die Hardware I2C V (IH) gesehen, obwohl das typische Leistungsdiagramm darauf hindeutet, dass sie zwischen normalen und ST-Eingängen liegt.
Supercat

24

In der guten alten Zeit waren TTL-Fahrer viel besser darin, ein Signal herunterzuziehen, als es hochzuziehen. Daher wurden Protokolle wie I2C, aber auch Interrupt-Leitungen, Reset und andere unter Verwendung eines Pull-Ups mit verteiltem Pull-Down implementiert.


8
In der besseren Neuzeit gilt immer noch das Gleiche, da es eine inhärente Eigenschaft der Halbleiter ist. Heutzutage kostet es einfach nicht mehr so ​​viel, einen kräftigeren Pull-up-Transistor für denselben Strom zu bekommen.
Arsenal

2
Mir wurde gesagt, dass es mit CMOS auch viel einfacher ist, sich der Stromschienenspannung anzunähern. Ein weiteres "Problem", mit dem TTL zu kämpfen hatte. (Vielleicht sollten wir uns glücklich schätzen, denn es ermöglichte 3V3 CMOS, mit TTL zu
kommunizieren.

14

Es ist einfacher, Masse als gemeinsame Referenz für Subsysteme zu verwenden, die unterschiedliche Versorgungsspannungen aufweisen können. Wenn Sie PNP-Transistoren zum Hochziehen auf eine Versorgungsspannung verwenden, müssten alle Subsysteme an die gleiche Versorgung angeschlossen werden.


8

Gute Antworten gibt es hier zuhauf, aber es gibt auch einen anderen Grund.

Wenn sich der Ruhezustand des Busses auf Masse befindet, kann nicht festgestellt werden, ob der Bus angeschlossen ist oder nur im Weltraum hängt.

Es ist normal, dass sich das Pullup auf dem Master-Gerät befindet. Sklaven haben normalerweise keine Klimmzüge. Dies liegt daran, dass der Pulldown-Strom, der erforderlich wäre, um einen niedrigen Pegel zu aktivieren, mit der Anzahl der an den Bus angeschlossenen Geräte zunehmen würde.

Wenn ein Slave an den Bus angeschlossen ist, kann er erkennen, dass die Leitung hochgezogen ist (vorausgesetzt, sie wird nicht verwendet) und weiß, dass der Bus tatsächlich vorhanden und leise ist. Dies wäre bei einem mit Masse vorgespannten Bus nicht der Fall.


Um zu erkennen, dass der Bus hochgezogen ist, muss er von einem Slave zuerst tiefgezogen werden. Ich bin mir nicht sicher, warum ein ähnliches Verfahren mit der entgegengesetzten Polarität nicht möglich wäre.
Dmitry Grigoryev

@DmitryGrigoryev warum müsste es etwas ziehen, das bereits hoch niedrig ist?
Trevor_G

5

Wenn ich die Frage richtig verstehe, ist ein Aspekt:

  • Warum verwenden Sie Pull-up-Widerstände und NPN-Transistoren anstelle von Pull-down-Widerständen und PNP-Transistoren?

Zuallererst sollten Sie beachten, dass Sie keine Bipolartransistoren (NPN, PNP) verwenden, sondern MOSFETs (die in vier verschiedenen Varianten existieren).

Geräte, die die " Pull-up and NPN " -Variante verwenden, verwenden einen n-Kanal-Anreicherungs- MOSFET. Da die Source dieses MOSFET mit Masse verbunden ist, ist die Gate-Source-Spannung (Steuerung des Stromflusses) gleich der Spannung zwischen Gate und Masse. So kann der MOSFET mit einer Spannung zwischen 0 und Vdd angesteuert werden.

Es gibt drei Möglichkeiten, die Variante " Pull-Down und PNP " zu implementieren :

  • Verwendung eines p-Kanal- Anreicherungs-MOSFET

    Auf einem NMOS- oder CMOS-IC benötigen p-Kanal-MOSFETs mit vergleichbaren Eigenschaften (Widerstand usw.) mehr Platz als n-Kanal-MOSFETs.

    In der Mikroelektronik ist Platz Geld, so dass p-Kanal-MOSFETs nach Möglichkeit vermieden werden.

  • Verwendung eines n-Kanal-Anreicherungs- MOSFET

    Dies würde erfordern, dass der Ausgang der den Transistor ansteuernden Logikschaltung eine "LOW" -Spannung der Versorgungsspannung (z. B. +5 V) und eine "HIGH" -Spannung über der Versorgungsspannung (z. B. +10 V) aufweist, wenn der Rest der Schaltung versorgt wird mit + 5V).

    Der Grund: Die Source-Masse-Spannung beträgt Vdd, wenn der MOSFET leitet. Die Gate-Source-Spannung muss positiv sein, damit die Spannung zwischen Gate und Masse noch höher ist.

    Sie benötigen zwei Spannungsversorgungen - und eine Schaltung, die den Ausgang der Logikschaltung von 0 ... + 5V auf + 5V ... + 10V ... verschiebt.

  • Verwendung eines n-Kanal-Depletion- MOSFET

    Zu dieser Lösung kann ich leider nicht viel sagen. Auf einigen Google-Seiten wurde jedoch festgestellt, dass die Herstellung von Depletion-MOSFETs schwieriger ist als die von Enhancement-MOSFETs, weshalb diese vermieden werden.

    Ich weiß von der Leistungselektronik (nicht von der Mikroelektronik), dass die oben beschriebene Variante mit zwei Leistungsversorgungen den MOSFETs mit geringer Leistungsaufnahme sogar vorgezogen wird. (Aber ich kann dir nicht sagen warum.)

    BEARBEITEN Mit n-Kanal-Depletion-MOSFETs benötigen Sie wahrscheinlich eine negative Spannung (z. B. -5 V), sodass Sie auch zwei Versorgungsspannungen benötigen ...


0

Es gibt auch einen weiteren zusätzlichen Vorteil, wenn gemeinsame Erdungs- und Pull-up-Datenleitungen vorhanden sind (gegenüber gemeinsamen VCC und Pull-down-Leitungen):

Selbst wenn die ursprüngliche Absicht darin bestand, Geräte auf derselben Leiterplatte nur mit einer Spannweite von wenigen Zoll anzuschließen, war dies erfolgreich genug, so dass es jetzt nicht ungewöhnlich ist, dass die Leitungen einige Meter lang sind und "Geräte" angeschlossen werden, bei denen es sich um Computer oder etwas Ähnliches handeln könnte Komplexität, bei der einige Geräte über eine eigene Stromquelle verfügen (von unterschiedlicher Qualität, wenn Sie beispielsweise einen Netzstecker mit einer Batterie anschließen). Es ist besser, wenn die Verbindung "zumindest gut" funktioniert, auch unter nicht idealen und nicht den Spezifikationen entsprechenden Bedingungen.

Und viele derartig angeschlossene Geräte können irgendwie auch über andere Mittel verbunden sein, dann nur über I2C-Kommunikation. Wenn Sie Geräte miteinander verbinden, verbinden Sie sie in der Regel mit common ground- manchmal im Rahmen anderer Funktionen, manchmal nur, weil sie auf einem Metallgehäuse montiert sind und die Geräte auch mit dem Gehäuse (oder mit einem herkömmlichen Kühler oder ähnlichem) geerdet sind abgeschirmtes Kabel mit innenliegendem geerdetem Schirm - der auch die Erdung verbindet.

Wenn Sie auch direkt Stromleitungen (VCC) von solchen Geräten anschließen, werden Sie Probleme bekommen, wenn diese Leitungen natürlich auf unterschiedlicher Spannung liegen würden (sicher, es kann hier und da 5V stehen, aber abhängig von der Konstruktion und den Teiletoleranzen der Stromquellen kann auch 4,9 V oder 5,2 V betragen oder sich sogar ändern, wenn es batteriebetrieben ist und manchmal einige Motoren laufen, wodurch die Leistung mit der Zeit abnimmt und ansteigt.

In einem solchen Fall liegt effektiv ein Kurzschluss zwischen den Stromquellen eines Teils von Volt vor. Abhängig von den Stromquellen (und dem Widerstand der Wege) können relativ hohe Ströme fließen, was nicht nur zu Energieverschwendung und Wärmeanstieg führt, sondern möglicherweise sogar zu Schäden ( oder Verkürzung der Lebensdauer) einiger dieser Quellen. Welches ist nicht gut.

Gemeinsame Erdung und Pull-Ups vermeiden solche Probleme - Masse ist Masse und Pull-Up-Widerstände ermöglichen nur sehr kleine Querströme, auch wenn sich die VCC stark von den Geräten unterscheidet.


1
Dies entspricht im Wesentlichen der Antwort von Dave Tweed.
Janka

-2

Sie müssen nicht so viel Strom durch den Chip schicken, wenn er hochgezogen wird.

Da der Chip nichts steuert, wird lediglich ein Kurzschluss erstellt, um den Bus auf 0 zu setzen, und ein offener, um ihn auf 1 zu setzen.

Wenn es heruntergezogen wäre, müssten Sie Strom durch den Chip schicken, um den Bus auf 1 zu fahren. Wenn der Bus zufällig einen Kurzschluss aufweist, ist dies möglicherweise eine Menge Strom, den Sie durch diesen Chip fahren, um zu versuchen, ihn zu drücken bis zu 1.

Haftungsausschluss: Ich bin zu diesem Zeitpunkt ein ziemlich mieser EE.


3
Willkommen bei EE.SE. „ Sie müssen nicht so viel Strom durch den Chip schicken, wenn er hochgezogen ist. “ Wenn die Pull-Up- und Pull-Down-Widerstände gleich groß sind, sind die Ströme gleich. Für das Hochziehen muss Strom vom angetriebenen Chip bezogen und im ansteuernden Chip versenkt werden. Für das Herunterziehen muss Strom vom Treiberchip bezogen und vom angesteuerten Chip abgeleitet werden. Ein versehentlicher Kurzschluss kann an V + oder Masse liegen.
Transistor
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.