Aus RN-Wissen.de
Version vom 17. November 2005, 15:03 Uhr von Frank (Diskussion | Beiträge)

(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche


Die Entwicklung begann vor 20 Jahren

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 (I2C, „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. Der große Vorteil des I2C-Busses besteht jedoch auch darin das auch deutlich langsamere Busteilnehmer am Bus betreiben werden können, siehe auch unter Clock Stretching

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 verwendet, siehe Kategorie Projekte/Schaltungen.

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.

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

Hier ein typisches Bild einer I2C-Kommunikation:

http://www.tobias-schlegel.de/PublicData/DOUBLE.png

Aufgenommen mit dem foldendem Bascom-Code...

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:

  1. Philips Infos
  2. Spoerle Produktinfos
  3. mehrere Roboternetz-Artikel

Siehe auch

Weblinks