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.
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:
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.
Die folgenden Bausteine kann man bei Reichelt-Elektronik kaufen. Die Datenblätter findet man auf der I2C-Seite bei Philipps
.Typ | Beschreibung |
---|---|
PCF8566 | Universal LCD treiber für niedrige Multiplex-Raten |
PCF8570 | 256 x 8-Bit Statisches Niederspannungs-RAM |
PCF8571 | 256 x 8-Bit Statisches Niederspannungs-RAM |
PCF8573 | Uhr/Kalender mit Spannungs-Ausfalls-Detektor |
PCF8574 | 8-Bit I/O |
PCF8577 | Universal LCD treiber für niedrige Multiplex-Raten |
PCF8582 | 256 x 8-Bit EEPROM |
PCF8583 | Uhr/Kalender mit 240 Byte RAM |
PCF8584 | I²C-Bus-Controller |
PCF8591 | 1xD/A und 4xA/D-Wandler |
© Mario Boller-Olfert 2002 - E-Mail: Kontaktformular - 123-Byte - Marios Welt