Tutorials

 
Kontakt| Impressum
   
Tutorial zum Thema I2C-Bus

Tutorial (in Arbeit)

Der I2C-Bus (Inter Integrated Circuit)

1 Allgemeines

2 Geschichte

3 Beschreibung des I2C-Busses

4 Beispiel: Kommunikation mit einem EE-Prom

5 Weiterführende Links

6 Download

1 Allgemeines

Der I2C-Bus...

2. Geschichte

Der I2C-Bus wurde im Jahre xy von der Firma Philips entwickelt....

3 Beschreibung des I2C-Busses

3.1. Die Busverdrahtung

Der I2C-Bus arbeitet mit open-Collector Treibern. D.h. jedes Gerät ist in der Lage, die Leitungen SDA und SCL jederzeit auf durchzuschalten und damit auf logisch 0 zu ziehen (wired AND-Logik). Ebenso und auch zugleich können die Pegel am I2C-Bus gelesen werden.

Aus diesem Grund sind Abschluss-Widerstände notwendig. Durch die Widerstände sollte im durchgeschalteten Zustand ein Strom von mindestens 3mA fliessen. Bei einer Betriebsspannung von 5V müssen die Widerstände demnach U/I=R 5/0.003 < 1666Ohm. Für andere Betriebsspannungen erfolgt die Berechnung analog.

Abbildung 1: Prinzip der Frequenzmessung

Der I2C-Bus arbeitet mit open-Collector Treibern. D.h. jedes Gerät ist in der Lage, die Leitungen SDA und SCL jederzeit auf durchzuschalten und damit auf logisch 0 zu ziehen (wired AND-Logik). Ebenso und auch zugleich können die Pegel am I2C-Bus gelesen werden.

Abbildung 2: Interne Beschaltung eines I2C-Gerätes

3.2 Protokoll

Nachfolgend wird Kommunikation mit dem I2C-Bus schrittweise aufgezeigt. Die Kommunikation lässt sich drei Schritte autteilen (Abbildung 2).

Abbildung 3: Drei Schritte bei der Kommunikation mit dem I2C-Bus

3.2.1 Busübernahme, Adressierung des Slaves und Festlegung ob Schreib- oder Lesevorgang

Bei der Kommunikation mit dem I2C-Bus gelten folgende Grundprinzipien:

  1. SDA darf nur geändert werden, wenn der Pegel SCL low ist. Falls nicht, dann kann es sein, dass ein angeschlossenes Gerät dies als Busfreigabe interpretiert.
  2. Daten werden immer mit steigender Taktflanke von SCL gültig.

Abbildung 4: Protokoll der I2C-Busübernahme und Adressierung des Slaves

Übernahme, Adressierung und Festlegung der Lese- oder Schreiboperation laufen folgendermassen ab:

  1. beide Leitungen SDA und SCL liegen im Ruhezustand auf high. Möchte ein Master senden, dann legt er zuerst SDA auf 0 und anschliessend SCL. Damit hat er den Bus übernommen.
  2. Daraufhin folgen sieben Adressbits, durch die der Adressat (das angesprochene Gerät) eindeutig festgelegt wird. Jedes Datenbit wird mit einer steigenden Taktflanke von SCL übernommen.
  3. Nach der 7-Bit-Adresse folgt eine Bit in dem festgelegt wird ob eine Schreib- oder einer Leseoperation durchgeführt werden soll. (0=Schreiben, 1=Lesen)
  4. Abschliessend zeigt der adressierte Empfänger dem Master seine Bereitschaft an, indem er nach dem achten Takt die Leitung SDA auf logisch low „zieht“. Das adressierte Gerät prüft währenddessen SCL und hält SDA mindestens einen ganzen Impuls auf low. Der Slave hat zudem die Möglichkeit, die SDA-Leitung für längere Zeit auf 0 zu belassen. Dies kann notwendig sein, wenn das angesprochene Gerät den Befehl zuerst intern weiterverarbeiten muss.

3.2.2 Durchführung der Schreib- oder Lesevorgänge

Nachdem der Bus vom Master übernommen wurde und der adressierte Slave seine Bereitschaft durch das herunterziehen der SDA-Leitung signalisiert hat, kann mit den Schreiboperationen begonnen werden. Dabei können mehrere Bytes nach einander geschrieben werden. Je nach angeschlossenem Gerät werden Adress- und Datenbytes geschrieben werden. Das Übertragungsprotokoll unterscheidet sich dabei nicht. Unter Adressbytes sind hier nicht die Geräteadressen sondern die interne Organisation, welche natürlich vom entsprechenden Gerät abhängt, gemeint. Bei einem I2C-EEPROM sind es die entsprechenden Speicherzellen, die adressiert werden. Den Vorgang einer Schreib- oder Leseoperation zeigt Abbilung 5.

Abbildung 5: Protokoll einer Scheib- oder Leseoperation

Ein Lesevorgang läuft gleich ab, wieder Schreibvorgang. Lediglich bei der Busübernahme und Adressierung wird dem Slave indem das 8 Datenbit auf logisch 1 gelegt wird, mitgeteilt, dass es sich um eine Schreiboperation handelt.

3.2.2 Freigabe des I2C-Busses

Nach jede Übertragung sollte der I2C-Bus vom Master wieder freigegeben werden. Zu diesem Zweck schaltet der Master die Leitung SDA auf 1, während die Taktleitung SCL auf logisch 1 ist.
Im Bild zu sehen: Nachdem das zuletzt ordnungsgemäss geschriebene oder gelesene Datenbyte vom Empfänger quittiert wurde, wrid SDA vom Master kurzzeitig auf logisch 0 gelegt. Anschliessen wird SCL auf logisch 1 gelegt und dann ebenso die Leitung SDA. Der Bus ist damit wieder frei.

Abbildung 6: Freigabe des I2C-Busses

4 Beispiel: Kommunikation mit einem E-Eprom

Abschliessend soll die Kommunikation zwischen einem Master und einem E-Eprom als Slave aufgezeigt werden.

4.1 Das E-Eprom

abbildung EE-prom

4.2 Die Hardwarebeschaltung

abbildung EE-prom

Abbildung 7: Beispielschaltung: Einsatz eines I2C-E-Eproms

4.3 Lesen und Beschreiben des E-Eproms

abbildung EE-prom

5 Weiterführende Links

Nr Link Beschreibung
0 Schaltplan Schaltplan für die Frequenezmessschaltung (Bild wie oben dargestellt)
1 Sourcode und Hex-File Programmcode für die Frequenzmessung

6 Download

Nr Type downloadbares File Beschreibung
0 .gif Schaltplan Schaltplan für die Frequenezmessschaltung (Bild wie oben dargestellt)
1 .zip Sourcode und Hex-File Programmcode für die Frequenzmessung

Impressum | Haftungsausschluss

Version 1.0, ©Gerhard Burger 2004-2013, alle Rechte vorbehalten, letzte Änderung 09.11.2013