I2C - Der Inter-Integrierte-Schaltkreis-Bus

Alles über I2C Title Image

Der I2C-Bus wird im Embedded-Bereich sehr häufig verwendet. Wir erklären, wie er funktioniert und wie man ihn auf dem Raspberry Pi anhand eines Beispiels einrichtet.

I2C-Eigenschaften

Der Inter-Integrated Circuit Bus ist ein synchroner serieller Kommunikationsbus. Philips Semiconductors war für die Erfindung im Jahr 1982 verantwortlich, aber die Schnittstelle gewann schnell an Popularität.

I2C-Eigenschaften
I2C-Eigenschaften

Häufig verwendete Synonyme sind I2C, I2C oder IIC. Die Schnittstelle nutzt eine Controller-Target-Architektur und ermöglicht es dem Controller, mit bis zu 112 Geräten über nur zwei Drähte zu kommunizieren.

Der Controller kann die Bitrate an die spezifischen Anforderungen des Ziels anpassen. Daher ist I2C mit vielen Geräten wie Sensoren, EEPROMs, Uhren, Motortreibern und mehr kompatibel.

Verkabelung

Die Verdrahtung des I2C-Busses könnte wirklich nicht einfacher sein, da Sie nur zwei Drähte benötigen. Verbinden Sie den seriellen Taktgeber-Pin (SCL) des Controllers mit den seriellen Taktgeber-Pins der Targets und verbinden Sie auch deren serielle Daten-Pins (SDA). Die I2C-Software erledigt den Rest.

I2C-Verdrahtung
Verkabelung

Wenn Sie Ihr I2C-Gerät mit Strom versorgen müssen, können Sie die Pins 3V3, 5V und GROUND Ihres Raspberry Pi verwenden.

Einige Geräte wie unser BME688 Breakout Board haben einen I2C-Header, so dass man keine Drähte braucht, um sie zu verbinden.

I2C-Kommunikation

Der Inter-Intergrated Circuit Bus kann 128 Geräte mit nur zwei Drähten verbinden. Möglich wird dies durch das ausgeklügelte Kommunikationsprinzip.

Die Drähte (SDA und SCL) werden nie aktiv auf High geschaltet. Wenn ein Gerät eine logische 1 senden will, lässt es die Leitung schweben. Um eine logische Null zu senden, wird die Leitung auf Masse gezogen.

Der Controller initiiert die Kommunikation. Jedes Gerät im Netzwerk kann als Controller und Ziel fungieren.

Die folgende Grafik zeigt die einzelnen Bits.

I2C-Kommunikation
I2C-Kommunikation

Um die Kommunikation zu starten, sendet der Controller ein Start-Bit, gefolgt von der I2C-Adresse des Ziels und dem gewünschten Betriebsmodus (R - Read oder W - Write).

Bei der I2C-Kommunikation muss das Ziel alle 8 Bit (nach jedem Byte) ein ACK-Bit zurücksenden. Da der Adressraum in der Regel 7 Bit beträgt, gibt es 128 (0 bis 127) Adressen. 16 davon sind reserviert. Damit bleiben 112 mögliche Adressen für die Geräte übrig.

Die Zieladresse und die Betriebsart sind ein Byte, so dass das Ziel ein ACK-Bit zurücksenden muss. Dann sendet der Controller die (8-Bit-)Registeradresse, die das Ziel wiederum bestätigt. Von da an unterscheidet sich die Lese- und Schreibkommunikation.

Beim Schreiben sendet der Controller die Daten einfach in 8-Bit-Blöcken. Das Ziel quittiert jeden Block. Sobald der Controller mit dem Schreiben fertig ist, sendet er das Stop-Bit.

Zum Lesen sendet der Controller wieder das Start-Bit, gefolgt von der Zieladresse. Das Ziel quittiert und beginnt, die Daten in 8-Bit-Blöcken zu senden. Dieses Mal muss der Controller jedes Byte bestätigen. Um das Lesen zu beenden, sendet der Controller das NACK-Bit und schließlich das Stop-Bit.

Vorteile, Nachteile und Anwendungen

Vorteile

Die Vorteile des I2C-Busses liegen auf der Hand. Man kann 128 Geräte mit nur zwei Drähten und jeweils zwei Pins verbinden. Das ist wirklich leistungsstark. Außerdem hat man flexible Geschwindigkeiten. Die Hardware-Einrichtung könnte kaum einfacher sein. Im Gegensatz zu SPI weiß der Controller, ob das Zielgerät die Daten korrekt empfangen hat.

Vorteile
Vorteile

Benachteiligungen

Der Inter-Integrate Circuit Bus benötigt mehr Platz und Strom, da er Pull-up-Widerstände verwendet. Er ist im Vergleich zu SPI langsamer. Es kann zu Problemen kommen, wenn zwei Geräte die gleiche I2C-Adresse verwenden. Die Adresse wird direkt auf dem Gerät gespeichert. Bei einigen Geräten können Sie zwischen zwei möglichen Adressen wählen, indem Sie einen Jumper an eine bestimmte Stelle des Geräts löten.

Benachteiligungen
Benachteiligungen

Anwendungen

Wenn Sie suchen nach Sensor in unserem Shop werden Sie feststellen, dass fast alle Sensoren, die nicht analog sind, die I2C-Schnittstelle verwenden. Sie ist im Embedded-Bereich sehr verbreitet. Es gibt Dinge wie I2C-Speicher. Oftmals nutzen Mikrocontroller den Bus zur Kommunikation. Außerdem verwenden viele DACs (Digital Analog Converter) und ADCs (Analog Digital Converter) sind mit der Schnittstelle kompatibel.

I2C auf dem Raspberry Pi

Unser Video zeigt, wie Sie den Inter-Integrated Circuit Bus auf Ihrem Raspberry Pi einrichten.

6 Kommentare

  1. [...] Wenn Sie mehr über I2C erfahren möchten, sollten Sie sich diesen Artikel ansehen. [...]

  2. [...] Sie möchten mehr über I2C erfahren? Dann lesen Sie unseren Artikel darüber hier. [...]

  3. [...] I2C - Der Inter-Integrated Circuit Bus [...]

  4. [...] I2C - der Inter-Integrated Circuit Bus [...]

  5. [...] I2C - Der Inter-Integrated Circuit Bus [...]

  6. [...] Wie Naveen erklärt, basiert die Verbindung zwischen dem Nano und dem TFT-Display auf dem Serial Peripheral Interface (SPI). Der Joystick und die Tasten sind über den Inter-Integrated Circuit Bus (I2C) verbunden. [...]

Hinterlassen Sie einen Kommentar