PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Grundlagen Was ist ein I2C-Bus?



Frank
12.11.2004, 15:24
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 (https://www.roboternetz.de/phpBB2/viewtopic.php?t=1511) ) 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.


https://www.roboternetz.de/bilder/i2cbeitrag1.gif

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



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) https://www.roboternetz.de/phpBB2/viewtopic.php?t=3447
Spezifikationen - https://www.roboternetz.de/phpBB2/dload.php?action=file&file_id=28
Bauanleitungen mit I2C-Bus - https://www.roboternetz.de/phpBB2/dload.php?action=category&cat_id=16
PC -> I2C Bus Adapter - https://www.roboternetz.de/phpBB2/viewtopic.php?t=4509
Tips zum I2C-Bus - http://www.the-starbearer.de/Roboterelektronik/i%B2c/I2C_Index.htm
I2C-Datenblätter - https://www.roboternetz.de/phpBB2/dload.php?action=category&cat_id=6
I2C über 50 Meter - mit I2C Bus Extender möglich (IC P82B715) - http://www.semiconductors.philips.com/pip/P82B715.html