Die Entwicklung begann vor 20 Jahren

I2C—Bus
— Ein weltweiter Standard
für Chip-zu—Chip-Kommunikation


Der I2C—Bus ist ein serieller synchroner Zweidraht—Bus, der vor rund 20 Jahren von Philips entwickelt wurde. Was die Philips—Designer seinerzeit kaum ahnen konnten: Ihr Inter—IC Bus (lIC, „1 Squared C“) ist mittlerweile ein Industriestandard für Steuerungs-, Diagnose- und Überwachungslösungen in unzähligen Embedded-Applikationen. Mit einfacher Implementierung. niedrigen Kosten und einer Übertragungsrate bis 3,4 MBit/s ist der Bus Veteran aktuell wie nie zuvor.

Ziel der damaligen Entwicklung war ein hierarchisches Bus—System, über das mehrere lCs bei geringstem Aufwand [Leiterbahnen, Komponenten etc.) miteinander kommunizieren sollten. Daher bot sich eine serielle Struktur an, um

— im Vergleich zu parallelen Bus-Systemen
— mit weniger Leiterbahnen und l/0s auszukommen und so letztendlich Platinenfläche, IC-Abmessungen (Pin-Anzahl) und Kosten zu reduzieren.

Aus diesen Überlegungen entstand schließlich ein echter bidirektionaler Zweidraht-Bus in Master/Slave-Architektur mit integriertem Übertragungsprotokoll und Software-Adressierung, der nur zwei Verbindungen zwischen den lC’ s/Boards erfordert: Die Taktleitung SCL (Serial Clock Line) und die Datenleitung SDA (Serial Data Line).

Das bedeutet in der Praxis, dass z.B. ein Microcontroller ein ganzes "Netzwerk" von Chips mit nur zwei I/O Pins und einfacher Software steuern bzw. für bestimmte Funktionen nutzen kann. Ursprünglich wurde der I2C-Bus für Interaktionen zwischen einigen wenigen lCs entwickelt, die auf derselben Platine montiert waren, etwa zur Steuerung der Abstimmung von Autoradios oder TV-Geräten.

Dabei betrug die Übertragungsrate nur 100 kBit/s bei einer zulässigen Bus-Kapazität von 400 pF. Den ständig steigenden Performance-Anforderungen folgend, wurde die Übertragungsrate 1992 und 1998 auf 400 kBit/s bzw. 3,4 Mbit/s angehoben.

Heute wird der I2C-Bus auch in Systemen mit mehreren Boards wie Blade— oder Rack—Mount¬Servern eingesetzt, wobei l2C-Hot-Swap-Buffer ein störungsfreies Einsetzen oder Austauschen von Boards während des Betriebs gewährleisten. Zum Beispiel wird der I2C-Bus heute auch bei nahezu allen Projekten aus dem Roboternetz ( Bauanleitungen Übersicht ) eingesetzt.

Mit Hilfe neuer Expansions- und Steuerungs-Bauelemente kann der I2C-Bus inzwischen über die 400-pF-Grenze [ca. 20 bis 30 lCs pro Bus-Segment) hinaus erweitert werden. Dadurch können Entwickler mehr Chips

— sogar mehrere identische lCs mit der selben Adresse — anschließen und flexibel auf die steigende Zahl von I2C—Bau— Elementen reagieren.

Ein großer Vorteil des I2C-Bus ist auch die einfache Ansteuerung. Da keine festen Taktzeiten eingehalten werden müssen, können sowohl langsame als auch sehr schnelle Bussteilnehmer, Chips und Programmiersprachen eingesetzt werden.


Hier ein typisches Beispiel wie in einer Programmiersprache (hier Basic) Daten über den I2C-Bus verschickt werden:

Code:
 i2c_init 
 i2c_start 
 i2c_sendebyte(slaveid) 
 i2c_sendebyte(wert1) 
 i2c_sendebyte(wert2) 
 i2c_stop

Verwendete Quellen für diesen Text:
- Philips Infos
- Spoerle Produktinfos
- mehrere Roboternetz-Artikel



Weitere Links zum Thema:
Der I2C-Bus bei Atmel (TWI) http://www.roboternetz.de/phpBB2/viewtopic.php?t=3447
Spezifikationen - http://www.roboternetz.de/phpBB2/dlo...ile&file_id=28
Bauanleitungen mit I2C-Bus - http://www.roboternetz.de/phpBB2/dlo...gory&cat_id=16
PC -> I2C Bus Adapter - http://www.roboternetz.de/phpBB2/viewtopic.php?t=4509
Tips zum I2C-Bus - http://www.the-starbearer.de/Roboter.../I2C_Index.htm
I2C-Datenblätter - http://www.roboternetz.de/phpBB2/dlo...egory&cat_id=6
I2C über 50 Meter - mit I2C Bus Extender möglich (IC P82B715) - http://www.semiconductors.philips.com/pip/P82B715.html