Ich verstehe, dass in I2C-, SCL- und SDA-Leitungen Pull-up-Widerstände verwendet werden und die Pin-Treiber NPN-Geräte mit offenem Kollektor sind, die Pins auf Masse treiben können. Dies gibt I2C den Vorteil, dass derselbe Bus jetzt mit mehreren Slaves geteilt werden kann, und selbst wenn zwei oder mehr Slaves versehentlich versuchen, den Bus gleichzeitig zu fahren, wird das dem System keinen Schaden zufügen.
Dies kann aber auch mit PNP-Open-Drain-Treibern und Pull-Down-Widerständen auf SDA- und SCL-Leitungen erfolgen. Auch Dinge wie Clock-Stretching und Multi-Master-Arbitrierung lassen sich damit realisieren.
Bietet die aktuelle Implementierung des I2C-Protokolls Vorteile gegenüber der oben vorgeschlagenen alternativen Implementierung?
Elektrisch ist es sinnvoll, weil Masse die eine gemeinsame Verbindung zu allen Geräten auf einem IIC-Bus ist. Das ist eine weitaus geringere Einschränkung, als zu erzwingen, dass die Stromversorgung die gemeinsame Verbindung zu allen IIC-Geräten ist, wie dies erforderlich wäre, wenn die Leitungen hochgefahren und über Pulldowns niedrig gefloatet wären.
Beachten Sie, dass IIC-Geräte nicht alle aus demselben Netz oder derselben Spannung versorgt werden müssen. Dies würde nicht zutreffen, wenn beide Busleitungen auf die einzige gemeinsame Versorgungsspannung getrieben werden müssten.
In der guten alten Zeit waren TTL-Treiber viel besser darin, ein Signal nach unten zu ziehen als es nach oben zu ziehen. Daher wurden Protokolle wie I2C, aber auch Interrupt-Leitungen, Reset und andere alle mit einem Pull-up mit verteiltem Pull-down implementiert.
Es ist einfacher, Masse als gemeinsame Referenz zwischen Subsystemen zu verwenden, die möglicherweise unterschiedliche Versorgungsspannungen haben. Wenn Sie PNP-Transistoren verwenden, um auf eine Versorgungsspannung hochzuziehen, müssten alle Subsysteme an die gleiche Versorgung angeschlossen werden.
Hier gibt es viele gute Antworten, aber es gibt noch einen anderen Grund.
Wenn der Ruhezustand des Busses Masse ist, gibt es keine Möglichkeit festzustellen, ob der Bus angeschlossen ist oder nur im Raum hängt.
Es ist normal, dass sich der Pull-up am Master-Gerät befindet. Sklaven haben normalerweise keinen Klimmzug. Dies liegt daran, dass der Pull-down-Strom, der erforderlich wäre, um einen niedrigen Pegel geltend zu machen, mit der Anzahl der an den Bus angeschlossenen Geräte zunehmen würde.
Wenn ein Slave an den Bus angeschlossen ist, kann er dann erkennen, dass die Leitung hochgezogen ist (vorausgesetzt, sie wird nicht verwendet) und wissen, dass der Bus tatsächlich vorhanden und ruhig ist. Das wäre bei einem massevorgespannten Bus nicht der Fall.
Wenn ich die Frage richtig verstehe ist ein Aspekt:
Zunächst einmal sollte man beachten, dass man keine Bipolartransistoren (NPN, PNP) verwendet, sondern MOSFETs (die es in vier verschiedenen Varianten gibt).
Geräte, die die Variante „ Pull-up und NPN “ verwenden, verwenden einen n-Kanal-Enhancement- MOSFET. Da die Source dieses MOSFET mit Masse verbunden ist, ist die Gate-Source-Spannung (die den Stromfluss steuert) gleich der Spannung zwischen Gate und Masse. Der MOSFET kann also mit einer Spannung zwischen 0 und Vdd gesteuert werden.
Es gäbe drei Möglichkeiten, die Variante „ Pull-Down und PNP “ zu realisieren:
Verwendung eines p-Kanal- Enhancement-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 für Geld, daher werden p-Kanal-MOSFETs möglichst vermieden.
Verwendung eines n-Kanal-Enhancement- MOSFET
Dies würde erfordern, dass der Ausgang der Logikschaltung, die den Transistor ansteuert, eine "LOW"-Spannung der Versorgungsspannung (z. B. +5 V) und eine "HIGH"-Spannung über der Versorgungsspannung (z. B. +10 V) hat, wenn der Rest der Schaltung versorgt wird mit +5V).
Der Grund: Die Source-Masse-Spannung ist Vdd, wenn der MOSFET leitet. Die Gate-Source-Spannung muss positiv sein, also muss die Spannung zwischen Gate und Masse noch höher sein.
Sie würden zwei Spannungsversorgungen benötigen - und eine Schaltung, die den Ausgang der Logikschaltung von 0 ... + 5 V auf + 5 V ... + 10 V verschiebt ...
Verwendung eines n-Kanal-Verarmungs- MOSFET
Zu dieser Lösung kann ich leider nicht viel sagen. Ich habe jedoch eine Seite mit Google gefunden, auf der steht, dass Verarmungs-MOSFETs schwieriger herzustellen sind als Anreicherungs-MOSFETs und aus diesem Grund vermieden werden.
Aus der Leistungselektronik (nicht Mikroelektronik) weiß ich, dass die oben beschriebene Variante mit "zwei Stromversorgungen" sogar gegenüber Verarmungs-MOSFETs bevorzugt wird. (Aber ich kann dir nicht sagen warum.)
BEARBEITEN Bei Verwendung von n-Kanal-Verarmungs-MOSFETs benötigen Sie wahrscheinlich eine negative Spannung (z. B. -5 V), sodass Sie auch zwei Versorgungsspannungen benötigen ...
Es gibt auch einen weiteren zusätzlichen Vorteil für gemeinsame Masse- und Pull-up-Datenleitungen (gegenüber gemeinsamem VCC und Pull-down):
Selbst wenn die ursprüngliche Absicht darin bestand, Geräte auf derselben Leiterplatte mit einer Spannweite von nur wenigen Zoll zu verbinden, war dies erfolgreich genug, sodass es jetzt nicht ungewöhnlich ist, dass die Leitungen einige Fuß lang sind und „Geräte“ angeschlossen werden, bei denen es sich um Computer oder ähnliches handeln könnte Komplexität, da einige Geräte über eigene Stromquellen verfügen (von unterschiedlicher Qualität, sagen Sie, Sie verbinden etwas mit Netzstecker mit etwas Batteriebetriebenem). Besser ist es, wenn die Verbindung auch unter nicht idealen und nicht spezifikationsgerechten Bedingungen "mindestens gut" funktioniert.
Und viele solcher angeschlossenen Geräte können auch auf andere Weise verbunden sein, dann nur durch I2C-Kommunikation. Wenn Sie Geräte miteinander verbinden, verbinden Sie es normalerweise mit common ground
- manchmal als Teil anderer Funktionen, manchmal nur, weil es auf einem Metallgehäuse montiert ist und die Geräte auch mit dem Gehäuse geerdet sind (oder mit einem gemeinsamen Kühler oder ähnlichem) oder möglicherweise geschirmtes Kabel mit geerdetem Schirm innen sein - das auch die Erdung verbindet.
Wenn Sie auch Stromleitungen (VCC) solcher Geräte direkt anschließen, werden Sie Probleme bekommen, wenn diese Leitungen natürlich auf einer anderen Spannung liegen würden (sicher, es kann hier und da 5 V heißen, aber je nach Konstruktion und Teiltoleranzen von Stromquellen es könnte auch 4,9 V oder 5,2 V betragen oder sich sogar ändern, wenn es batteriebetrieben ist und manchmal einige Motoren laufen lässt, wodurch die Leistung mit der Zeit abfällt und ansteigt).
In einem solchen Fall gibt es effektiv einen Kurzschluss zwischen diesen Stromquellen von einem Teil eines Volts und abhängig von den Quellen (und dem Widerstand der Wege) können relativ hohe Ströme fließen, was nicht nur zu Energieverschwendung und Wärmeanstieg, sondern möglicherweise sogar zu Schäden führt ( oder Verkürzung der Lebensdauer) einiger dieser Quellen. Was nicht gut ist.
Durch gemeinsame Masse und Pull-Ups werden solche Probleme vermieden - Masse ist Masse und Pullup-Widerstände lassen nur sehr geringe Querströme zu, selbst wenn sich die VCC zwischen den Geräten stark unterscheidet.
Sie müssen nicht so viel Strom durch den Chip schicken, wenn er hochgezogen ist.
Da der Chip nichts antreibt, erzeugt er nur einen Kurzschluss, um den Bus auf 0 zu bringen, und macht ein Open, um ihn auf 1 zu bringen.
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 kurz ist, könnte das viel Strom sein, den Sie durch diesen Chip treiben, um zu versuchen, ihn zu drücken bis 1.
Haftungsausschluss: Ich bin an dieser Stelle ein ziemlich mieser EE.
PlasmaHH
Markus Müller
Bimpelrekkie
winzig
Toni M
EML