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:
- 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.
- 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:
- 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.
- 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.
- 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)
- 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 |
|