I²C (Inter-IC-Communication)

Der I²C-Bus ist ein bidirektionaler, serieller Zweidrahtbus, über den viele unterschiedliche Peripheriekomponenten an einen Mikroprozessor angeschlossen werden können. I²C ist die Abkürzung für Inter IC Communication und wurde in den frühen 80er Jahren von der Firma Philips entwickelt und zum Patent angemeldet. Es gibt mittlerweile über 50 Lizenznehmer und mehr als 1000 I²C-kompatible Komponenten am Markt. Dieses Tutorial zeigt, wie die Kommunikation über den I²C-Bus in Java programmiert wird. Dazu soll als Beispielanwendung ein handelsüblicher I²C-kompatibler Temperatursensor vom Typ LM75 zur Temperaturmessung eingesetzt werden.

Voraussetzungen: Damit Sie dieses Tutorial nachvollziehen können, benötigen Sie die JControl/IDE sowie ein JControl-basiertes Gerät mit I²C-Schnittstelle. Außerdem benötigen Sie einen Temperatursensor mit I²C-Bus-Anschluß vom Typ LM75 (Hersteller: National Semiconductor).

Bild 1: JControl in einer I²C-Anwendung

Der I²C-Bus ist mittlerweile zum de-facto Standard für die einfache Kommunikation zwischen integrierten Schaltkreisen geworden. Er wird bei den meisten JControl-kompatiblen Produkten durch eine enstprechende Schnittstelle unterstützt (Anschlüsse I2C_SDA und I2C_SCL). So lassen sich externe Schaltkreise direkt über I²C an ein JControl-Gerät ankoppeln. Bild 1 zeigt allgemein, wie Komponenten mittels I²C-Bus miteinander verbunden werden.

I²C ist ein Bussystem. Das bedeutet, daß mehrere Bus-Teilnehmer an ein- und dieselben Leitungen angeschlossen und nur über unterschiedliche Adressen angesprochen werden. JControl-Geräte arbeiten dabei als "Steuerzentrale" (Bus-Master) und die einzelnen Peripheriekomponenten als gewöhnliche Busteilnehmer (sog. Bus-Slaves). Die individuelle Adresse eines Bus-Slaves (Slave-Adresse) ist bei vielen Peripheriekomponenten werkseitig fest vorgegeben. Über die Beschaltung spezieller Adress-Pins kann die Slave-Adresse in den meisten Fällen aber auch verändert werden, so daß sich mehrere gleichartige I²C-Bus-Komponenten an einen Bus-Master anschließen lassen.

Falls Sie mehr über die Funktionsweise und die umfangreichen Anwendungsmöglichkeiten des I²C-Busses erfahren wollen, so können Sie viele Informationen auf den Web-Seiten von Philips Semiconductors finden.

Ein Abkömmling des I²C-Bus ist der SMBus. Dieser wurde im Jahre 1995 von einigen Unternehmen um den Halbleiter-Hersteller Intel spezifiziert. Das Haupt-Einsatzgebiet für SMBus-fähige Komponenten findet sich bei der PC-Hardware (Motherboards, Notebooks, Grafikkarten etc.); wo über den SMBus nicht nur die CPU-Temperatur, sondern auch Lüfterdrehzahlen, Betriebsspannungen usw. übertragen werden. In eine der nächsten PCI-Spezifikationen soll der SMBus sogar als "Sub-Bus" mit aufgenommen werden. Die Unterschiede zwischen I²C und SMBus betreffen vor allem die Spannungen auf den Bus-Leitungen sowie einige Timing-Parameter. JControl-Geräte sind so ausgelegt, daß sowohl I²C-Bus als auch SMBus-Komponenten angeschlossen werden können. Nähere Informationen zum Thema SMBus finden Sie auf der Homepage des SMBus-Konsortiums.