I2C-Bus – was ist das und wofür wird er verwendet

Lesezeit 3 min.

Der I2C-Bus ist einer der beliebtesten Standards für die lokale serielle Kommunikation in digitalen Geräten. Lernen Sie die Grundlagen und praktischen Anwendungen von I2C kennen!

Die heutigen elektronischen Geräte verwenden mehrere Datenübertragungsstandards zwischen einzelnen Geräten, Modulen und sogar einzelnen ICs – sogar innerhalb derselben Leiterplatte. Aufgrund der geringen Anzahl von Leitungen, die zur Herstellung einer Verbindung erforderlich sind, sind serielle Busse heute bei weitem am weitesten verbreitet. In vielen Anwendungen ersetzen sie erfolgreich weitaus umfangreichere parallele Verbindungen. Zu den gängigsten Standards in der Elektronik gehören I2C-, SPI- und I2S-Verbindungen – heute werden wir uns mit dem ersten dieser Standards befassen, der vor allem in der Welt der digitalen Sensoren und integrierten Peripherieschaltungen verbreitet ist.

I2C-Bus-Konstruktion - Hardware-Fragen

Auf der Hardwareseite ist der Aufbau der I2C-Verbindung extrem einfach. Die Datenübertragung erfolgt über nur zwei Leitungen (in der Regel in Form von Leiterbahnen auf einer Platine oder einem kurzen Kabel von maximal einigen Metern Länge), an die mindestens zwei Geräte direkt angeschlossen werden können.

Diese Konstruktion bedeutet, dass die beiden Leitungen von den Schaltkreisen gemeinsam genutzt werden, so dass nur einer von ihnen zu einem bestimmten Zeitpunkt als Sender fungieren kann, während der andere (oder alle anderen) als Empfänger fungieren kann. Die mit SCL bezeichnete Leitung dient der Übertragung des Taktsignals, das den “Rhythmus” bestimmt, in dem die aufeinanderfolgenden Bits der Adressen, Daten und Empfangsbestätigungen übertragen werden, während SDA für die Übertragung der entsprechenden Informationen zwischen den kooperierenden Schaltkreisen zuständig ist.

Wichtig ist, dass auf der Seite jedes Chips die Anschlüsse, die mit den SDA- und SCL-Leitungen interagieren, in einem Modus arbeiten müssen, der als Open-Collector (OC) oder Open-Drain (OD) bezeichnet wird.

Das Funktionsprinzip dieses Ausgangstyps ist unkompliziert: Das Einschalten eines Ausgangstransistors, der sich in der Struktur eines integrierten Schaltkreises (z. B. eines Mikrocontrollers oder Sensors) befindet, bewirkt, dass eine bestimmte Leitung (z. B. SDA) mit der Masse des Schaltkreises kurzgeschlossen wird, wodurch ein logischer Low-Zustand (L) auf dieser Leitung erzwungen wird.

Das Ausschalten des Transistors führt zu einem High-Zustand (H), was auf die externen Pull-up-Widerstände zurückzuführen ist, die für den I2C-Bus typischerweise in der Größenordnung von 4,7 kΩ liegen sollten.

PCF8574 - I2C 8-Bit-Pin-Erweiterung.

Verfahren zur Übertragung von Daten und Adressen

Der Beginn der Übertragung auf dem I2C-Bus wird durch das START-Signal bestimmt – dies ist nichts anderes als eine fallende Flanke an der SDA-Leitung, während die SCL-Leitung im High-Zustand ist. Ist diese Bedingung erfüllt, kann die Datenübertragung bereits beginnen – dabei kann sich der Zustand der SDA-Leitung nur bei einem Low-Zustand auf der SCL-Leitung ändern, während das Lesen (Abtasten) von SDA durch den Empfänger bei einem positiven Impuls (Zustand H) auf der Taktleitung erfolgt.

Wichtig ist, dass die Bits in der Reihenfolge vom höchstwertigen, d. h. dem ältesten (MSB), bis zum niedrigstwertigen (jüngstes – LSB) übertragen werden. Das erste übertragene Byte enthält in den meisten Fällen die 7-Bit-Adresse des Slaves und das Übertragungsrichtungsbit (R/W) – letzteres nimmt den logischen Wert 1 an, wenn nachfolgende Bytes vom Slave durch den Master gelesen werden sollen, und 0, wenn Daten vom Master in den Slave geschrieben werden sollen.

Der Vollständigkeit halber sei hinzugefügt, dass seit der 1992 aktualisierten I2C-Standardspezifikation die Adressierung mit 10 Bits erfolgen kann – in diesem Fall enthält das erste Byte die 5 Bits von dem Wert 11110, die beiden ältesten Bits der Adresse und das Bit für die R/W-Richtung, wobei die restlichen 8 Bits der Adresse in das nächste Byte eingehen. Diese Lösung wurde eingeführt, um den verfügbaren Adressraum von ursprünglich 128 Möglichkeiten (entspricht 27) auf 1024 Adressen (d. h. 210) zu erweitern. Wichtig ist, dass der Master nach jedem vollen Byte einen zusätzlichen Impuls auf der SCK-Leitung sendet, der es dem Slave ermöglicht, den Empfang des Frames zu bestätigen (indem er eine logische Null auf der SDA-Leitung ausgibt). Sobald alle Daten eines bestimmten Pakets übertragen wurden, kann der Master die Übertragung durch Senden des STOP-Signals (steigende Flanke an der SDA-Leitung, während SCL im High-Zustand ist) beenden.

Übertragungsgeschwindigkeit

Ein wichtiges Thema bei I2C-Leitungen ist die Übertragungsgeschwindigkeit. Die früheste Version des Standards ging von einer Geschwindigkeit von 100 kbit/s aus – diese wird auch heute noch in vielen Geräten verwendet, da sie im Vergleich zu den schnelleren I2C-Bussen eine höhere Störsicherheit und geringere Hardwareanforderungen bietet.

Die aktualisierte Version 1.0 (Jahr 1992) ermöglichte den Betrieb mit vierfacher Geschwindigkeit (400 kbit/s – Fast Mode), während sechs Jahre später die Spezifikation 2.0 erschien, die Übertragungsraten von bis zu 3,4 Mbit/s ermöglichte.

Um eine ausreichende Flankensteilheit auf den Takt- und Datenleitungen zu gewährleisten, erweist es sich jedoch als notwendig, die Buskapazität relativ gering zu halten – die Kapazitäten zwischen den Signalpfaden und der Masse auf der Leiterplatte (bzw. zwischen den Leitern und der Kabelabschirmung, wenn Schaltungen nicht auf derselben Leiterplatte betrachtet werden) sind hier von größter Bedeutung.

Der Grund dafür ist, dass er zusammen mit dem Widerstand der Widerstände, die die Kapazität der Übertragungsleitung hochziehen, einen recht wirksamen RC-Filter bildet, dessen “Überlastung” im Falle einer zu großen resultierenden Kapazität in der für den Betrieb mit einer bestimmten Übertragungsrate erforderlichen Zeit nicht möglich ist. Aus diesem Grund ist es sehr empfehlenswert, die Kapazität auf dem I2C-Bus zu minimieren, insbesondere bei längeren Verbindungen oder der Zusammenarbeit mehrerer Schaltkreise auf demselben Kommunikationsbus.

Wie hilfreich war dieser Beitrag?

Klicke auf die Sterne um zu bewerten!

Durchschnittliche Bewertung 4.5 / 5. Stimmenzahl: 4

Bisher keine Bewertungen! Sei der Erste, der diesen Beitrag bewertet.

Teilen:

Picture of Mateusz Mróz

Mateusz Mróz

Träumer, Reiseliebhaber und Fan von technischen Innovationen. Er möchte seine Ideen für Raspberry Pi und Arduino in die Tat umsetzen. Hartnäckiger Selbstlerner - er bittet nur um Hilfe, wenn ihm die Suchmaschineneinträge ausgehen. Glaubt, dass mit dem richtigen Ansatz jedes Ziel erreicht ist.

Siehe mehr:

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Aus Sicherheitsgründen ist die Verwendung des reCAPTCHA-Dienstes von Google erforderlich, der den Google-Datenschutzbestimmungen und Nutzungsbedingungen unterliegt..