I²C

Was ist I²C


Der I²C (=inter integrated circuit) Bus dient dazu, Daten über kleine Entfernungen, zumeist innerhalb eines elektronischen Geräts, zu übertragen. Er kommt mit nur zwei Datenleitungen aus, um in der „High Speed“ Variante bis zu 3,4 Megabit pro Sekunde zu übertragen. Ein weiterer Vorteil ist, dass für den Aufbau einer I²C Verbindung lediglich zwei Widerstände benötigt werden. Am „Datenbus“ finden bis zu 128 Geräte Platz, wobei jeder Teilnehmer eine eigene Adresse besitzt.
An einer I²C „Sitzung“ nehmen immer ein Master und mindestens ein Slave teil. Wie schon die Namen sagen, nimmt der Master die übergeordnete Rolle in der Datenübertragung ein. Er initiiert bzw. beendet die Verbindung und bestimmt, welche Daten übertragen werden. Der Master ist der einzige Busteilnehmer, der keine Adresse besitzt!
Der Slave hingegen hat grundsätzlich keine Berechtigung auf den Bus zuzugreifen. Dieser hört also nur mit, schickt aber keine Signale aus, es sei denn, der Master verlangt danach.
Wie bereits erwähnt, besteht der I²C Bus nur aus zwei Leitungen. Die erste wird „Serial Clock“ (kurz: SCL) genannt, die andere „Serial Data“ (SDA).
Die SCL-Leitung gibt den Takt, also die Geschwindigkeit der Übertragung an, und die SDA Leitung überträgt die eigentlichen Informationen.

Ablauf einer I²C- Session


Der Ablauf einer I²C Datenübertragung ist einfach und immer derselbe. Im Ausgangszustand befinden sich die beiden Leitungen auf logisch 1, weil die beiden Widerstände parallel zu VCC geschalten sind. Der Informationsaustausch beruht darauf, dass der entsprechende Teilnehmer die Leitung auf „low“, also logisch 0, zieht.
Der Master beginnt eine Übertragung, indem er die Startbedingung sendet. Das bedeutet, dass die SDA Leitung von logisch 1 auf 0 wechselt, die SCL Leitung bleibt dabei unverändert. Dies signalisiert den Slaves, dass sie nun „zuhören“ müssen. Als nächstes sendet der Master die Adresse des Prozessors, mit dem er kommunizieren möchte.
Die Adresse des Slaves besteht aus sieben Bit, das achte gibt an, ob der Master Daten vom Slave annimmt (liest) oder an diesen schickt (schreibt).
Der Slave mit der übereinstimmenden Adresse bestätigt dem Master die erfolgreiche Adressierung. Im Regelfall beginnt der Master als „Transmitter“, das heißt, er sendet Daten an den „Slave“. Diese dienen der Konfiguration, denn meist haben Sensoren mehrere Möglichkeiten, Daten zu messen bzw. diese zu verarbeiten. So kann der Master bestimmen, in welchem Modus er die Daten erhalten möchte.
Ist die Einstellung abgeschlossen, beginnt der Datenaustausch. Der Master sendet erneut eine Startbedingung (=repeated Start). Die Slave Adresse ist nun dieselbe, das achte Bit ist allerdings diesmal auf „Lesen“ gesetzt. Nun sendet der Sensor solange seine Messdaten, bis der Master diese Übertragung durch eine „Stopp- Bedingung“ beendet.

Byteübertragung


Die Datenübertragung funktioniert nach folgendem Prinzip: Es wird immer ein Byte(= 8Bit) übertragen, und dann folgt die Bestätigung durch den Empfänger.
Während SCL sich auf logisch 1 befindet ist das Bit, welches vom Zustand der SDA Leitung abhängt, gültig. Dann zieht der Master SCL wieder auf 0 um den Zustand der SDA Leitung für das nächste Bit zu setzen.
Nach acht „Taktzyklen“ folgt das „Acknowledgement“ (= die Bestätigung), ob der Empfänger die Daten erhalten hat, bzw. ob er weitere erhalten möchte. Um dies zu bestätigen, zieht er SDA auf 0; um es zu negieren, lässt er die Leitung bei 1.
Die I²C Datenübertragung nimmt sehr viel Zeit in Anspruch und der Sensor darf seine Hauptaufgabe, das Messen, nicht vernachlässigen. Um die Datenübertragung zu „pausieren“ kann der Slave die SCL Leitung einfach auf 0 halten (Clock Stretching). Ist er mit der Arbeit fertig, setzt er die Datenübertragung fort, indem er die SCL Leitung wieder loslässt.

Aus der Fachbereichsarbeit "Entwicklung und Programmierung eines Robo Rescue Roboters" von Christopher Walles
Quellen in der Fachbereichsarbeit: aus der Philipps Semiconductors- The I2C-bus specification Seite 7, Version 2.1 Jänner 2000


22.06.2010 von Christopher Walles

Optionen: Drucken

| Share

Design by Christopher Walles © 2010 Impressum Sitemap Login