Der I2C-Bus (Inter-Integrated Circuit Bus) wurde in den 1980er-Jahren von Philips entwickelt, um Komponenten von Fernsehgeräten untereinander den Datenaustausch zu ermöglichen. Heute unterstützen ihn viele eingebettete Systeme, Sensoren, LCD-Treiber und andere Bauteile. Es lassen sich mit dem I2C-Bus ICs auf einer Platine genauso wie Baugruppen in einem Gerät verbinden.
I2C-Bus
SDA: Serial Data Line (Datenleitung)
SCL: Serial Clock Line (Taktleitung)
Eigenschaften
- zwei Busleitungen
- serielle taktsynchrone Datenübertragung
- neun Taktzyklen pro Daten-Byte
- Übertragungsraten bis zu 100 kbit/s
- Reichweite bis zu drei Meter
- Single- und Multimaster-Betrieb
Taktleitung und Datenleitung
Die Taktleitung (SCL, Serial Clock Line) liegt auf 1-Pegel, solange keine Daten über den Bus übertragen werden. Das Taktsignal wird von dem Gerät erzeugt, das die Daten übertragen möchte.
Die Datenleitung (SDA, Serial Data Line) liegt auf 1-Pegel, solange keine Daten über den Bus übertragen werden. Die seriell übertragenen Daten sind gültig, während die Taktleitung 1-Pegel führt. Die Datenbits sollen sich nur ändern, während die Taktleitung 0-Pegel führt.
Geräte, die an den I2C-Bus angeschlossen werden, haben Open-Collector oder Open-Drain-Ausgänge. Daher gehen die Daten- oder Taktleitungen auf 0-Pegel, sobald ein angeschlossenes Gerät ein 0-Signal an der entsprechenden Leitung erzeugt; die Leitungen gehen auf 1-Pegel, wenn alle Geräte ein 1-Signal erzeugen (Wired-AND). Die Leitungen liegen über Pull-Up-Widerstände an der Versorgungsspannung.
Adressierung der Slaves
Das erste Byte des Datenaustausches wird vom Master gesendet und entält die Adresse des gewünschten Slaves. Die Bits 7-4 des Adress-Bytes werden vom Hersteller des Bausteins oder Geräts fest vorgegeben. Die Bits 3-1 werden meistens durch äußere Beschaltung vom Anwender bestimmt. Bit 0 gibt an, ob der Slave Daten empfangen oder senden soll.
Bus-Protokoll
Die Start-Bedingung wird vom Master erzeugt, indem er die Datenleitung auf 0-Pegel setzt. Die Start-Bedingung ist eindeutig, da Pegelwechsel der Datenleitung sonst nur zulässig sind, wenn die Taktleitung 0-Pegel führt. Alle Geräte müssen die Start-Bedingung erkennen und auf Empfang schalten (als Slaves). Die Start-Bedingung kann nach jedem übertragenen Byte wiederholt werden, so dass der Master einen anderen Slave adressieren kann.
Die Datenübertragung erfolgt byteweise, beginnend mit Bit 7 (höchstwertiges Bit).
Das Acknowledge-Bit wird vom Receiver gesendet und bestätigt den Empfang von acht Datenbits. Ein empfangender Master sendet nach dem letzten gewünschten Byte kein Acknowledge-Bit, um anzuzeigen, dass die Datenübertragung beendet werden soll.
Die Stop-Bedingung wird vom Master erzeugt, indem die Datenleitung auf 1-Pegel gesetzt wird, während die Taktleitung 1-Pegel führt. Danach ist der Bus wieder freigegeben.
Durch eine Taktverzögerung kann der (langsame) Receiver den Transmitter in den Wartezustand versetzen. Dazu setzt der Receiver nach dem Acknowledge-Bit die Taktleitung auf 0-Pegel. Der Transmitter wartet solange, bis die Taktleitung wieder 1-Pegel führt.
Durch die Taktsynchronisation kann ein (langsamer) Receiver die 0-Periode des Taktsignals verlängern.
Busarbitration. Jeder Master erkennt durch seine Eingangsstufe die Signal-Pegel des Bus. Sendet er ein 1-Signal, sieht aber ein 0-Signal auf dem Bus, beendet er den Datenaustausch. Denn der Bus wird offenbar noch durch ein anderen Master belegt. Der Anwender legt fest, wie danach zu verfahren ist. Üblicherweise wird der Datenaustausch wiederholt. Bei mehreren Mastern bleibt nach diesem Verfahren schließlich nur einer übrig.
I2C-Terminologie | |
| Transmitter | liefert Daten an den Bus |
| Receiver | empfängt Daten vom Bus |
| Master | beginnt Datenaustausch, erzeugt Taktsignal, beendet Datenaustausch |
| Slave | vom Master adressiertes Gerät |
| Multi-Master | mehrere Geräte können versuchen Master zu werden |
| Arbitration | Verfahren, das nur einen Master zulässt, wenn mehrere Geräte den Bus kontrollieren wollen |
| Synchronisation | Verfahren zur Synchronisation der Taktsignale mehrerer Geräte |




