I2C-Grundlagen

I2C-Bus wurde in den frühen 1980ern von Philips für die Verbindung von Platinen in digitalen elektronischen Systemen wie z.B. Fernsehern entwickelt. Er ist extrem einfach konstruiert und hat eine maximale Übertragungsrate von 100 kb/s. Heute gibt es viele Erweiterungen, aber ich beschreibe hier die klassische Variante.

Technisches

Der Bus besteht aus nur vier Leitungen: Erde (GND), Pluspol (VCC), Takt (SCL) und Daten (SDA). Im Ruhezustand sind Takt- und Datenleitung high.

Das Grundprinzip ist, dass die Daten seriell, also ein Bit nach dem Anderen übertragen werden. Während jedes Datenbits wird ein Taktimpuls gegeben. Jede Dateneinheit besteht aus 8 Bit, also einem Byte. Eine 134 (Binär 10000110) wird z.B. so übertragen:

I2C-Signal

Eine vollständige Übertragung sieht so aus:

Start Adresse A Daten A Daten A ... Daten A P

Auf die Startbedingung folgt ein Adressbyte und dann eine variable Anzahl von Datenbytes. Jedes Byte wird durch ein Acknowledge-Bit beantwortet. Das Ganze wird durch die Abschlussbedingung abgeschlossen. Bei einer Übertragung unterscheidet man "Master" und "Slave".

Der Master gibt die Startbedingung, sendet die Taktimpulse und die Endebedingung. Bei einer Schreiboperation werden die Daten vom Master geliefert und vom Slave gelesen. Bei einer Leseoperation werden die Daten vom Slave geschrieben und vom Master gelesen. Lese oder Schreiboperation werden durch das niederwertigste Bit unterschieden, 0=Lesen, 1=Schreiben. Die Adresse selbst besteht also nur aus den oberen sieben Bits.

Die Startbedingung besteht darin, dass die Taktleitung Leitung hochgelegt ist und währenddessen die Datenleitung von High auf Low schaltet. Die Stopbedingung besteht aus einem Übergang von Low auf High, während die Clock-Leitung oben ist.

Die Adresse besteht aus vier Bits, die die ID des Bausteintyps ist und drei Bits Adresse des Bausteins. Es können also an einem I2C-Bus bis zu acht gleiche Bausteine betrieben werden.

Bausteine

Die folgenden Bausteine kann man bei Reichelt-Elektronik kaufen. Die Datenblätter findet man auf der I2C-Seite bei Philipps

.
TypBeschreibung
PCF8566Universal LCD treiber für niedrige Multiplex-Raten
PCF8570256 x 8-Bit Statisches Niederspannungs-RAM
PCF8571256 x 8-Bit Statisches Niederspannungs-RAM
PCF8573Uhr/Kalender mit Spannungs-Ausfalls-Detektor
PCF85748-Bit I/O
PCF8577Universal LCD treiber für niedrige Multiplex-Raten
PCF8582256 x 8-Bit EEPROM
PCF8583Uhr/Kalender mit 240 Byte RAM
PCF8584I²C-Bus-Controller
PCF85911xD/A und 4xA/D-Wandler

© Mario Boller-Olfert 2002 - E-Mail: Kontaktformular - 123-Byte - Marios Welt