zum Directory-modus

I2C-Bus

Das Busprotokoll des I2C-Busses

Im I2C-Bus erfolgt die Datenübertragung bitseriell und synchron, d.h. dass jedes Datenbit auf der SDA-Leitung mit dem Takt der SCL-Leitung synchronisiert wird. Vor Beginn der Kommunikation haben beide Busleitungen SCL und SDA zunächst High-Pegel d.h. alle Bausteine am Bus sind im "Schlaf-Modus". Nun wird die CPU aktiv und stellt die Startbedingungen her. Sie zieht die SDA-Leitung auf LOW-Pegel während die SCL-Leitung auf High-Pegel bleibt (Abb. 1) . Dies ist das Aufweck-Signal für alle Busbausteine! Alle Bausteine beobachten ("listen") nun die auf dem Bus anliegenden Daten.

Abb.1
Start-/Stopp-Bedinungen für die Datenübertragung

Nun können vom Master Daten auf den Bus gegeben werden. Dies erfolgt seriell auf die Leitung SDA und synchron mit dem vom Master erzeugten SCL-Impulsen. Dabei wird zunächst die Adresse des anzusprechenden Bausteins vom Master seriell auf die SDA-Leitung gelegt und mit SCL durchgetaktet. Dabei beginnt der Master mit dem MSB und endet mit dem LSB. Der Baustein, dessen Adresse gesendet wurde, erkennt nun, dass er angesprochen wurde - der Bus "gehört" nun ausschließlich dem Master und dem angesprochenen Slave. Ferner ist durch den Wert des LSB bekannt, ob im darauffolgenden Byte der Slave Daten vom Master empfangen sollen (R/W=0), z.B. Steuersignale, oder ob Informationen vom Slave auf die SDA-Busleitung gegeben werden sollen (R/W=1). Datentransport erfolgt also 8-Bitweise (byteorientiert) seriell

Generell quittiert der Empfänger von Daten den Empfang des Bytes mit einem ACKNOWLEDGE-Bit A=0. Dies erfolgt in der Weise, dass der Slave die SDA-Leitung auf LOW-Pegel zieht und dies vom Master im neunten SCL-Takt überprüft wird. Ist der adressierte Baustein z.B. nicht vorhanden, so wird die SDA-Leitung sich auf High-Pegel (Pull-Up-Widerstände !) befinden (Not Acknowledge: ACKNOWLEDGE-Bit A=1, SDA=high) und der Master kann eine Fehlerbehandlung einleiten. Wurde die Übertragung vom Slave ordnungsgemäß quittiert, kann der Master weitere Daten byteweise an den Slave senden, wobei dieser den Empfang jedes Bytes mit ACKNOWLEDGE-Bit A=0 im neunten Shift-CLock-Takt bestätigt. Das Ende der Kommunikation wird durch die Herstellung der STOP-Bedingung erreicht. Sie ist dann gegeben, wenn die SDA-Leitung von LOW- auf HIGH-Pegel wechselt, während sich die SCL-Leitung auf High-Pegel befindet. Aus diesem Grunde darf bei der normalen Datenübertragung nur dann Pegelwechsel auf SDA erfolgen, wenn SCL Low-Pegel führt.

Abb.2
Datenkommunikation des Busses

In der Abbildung (Abb. 2) wird ein Baustein, etwa ein EEPROM (Basisadresse 1010XXX) auf dem Bus mit der Adresse 1010111 adressiert und ihm mitgeteilt, dass ein Auslesevorgang folgen soll. Das EEPROM hat die Datenübertragung verstanden und quittiert im neunten SCL-Takt mit einem LOW-Pegel auf der SDA-Leitung.

Seite 3 von 6