|
|
- Zusammenfassung
-
Der I2C-Bus überträgt 8
Datenbits (1 Byte) vom Master zum Sklaven, in der Reihenfolge
MSB first (most signifikant Bit first) was bedeutet, dass das
höchste Bit als erstes übertragen wird. Dann folgt ein
Quittungsbit, das vom Sklaven zum Master gesendet wird. Die
hierzu notwendigen 9 Taktschläge erzeugt der Master,
während der Sklave die Taktschläge nur verlängern
kann. Der Master beginnt die Übertragung mit einer
Startbedingung und beendet sie mit einer Stoppbedingung.
Hierdurch wird allen angeschlossenen Busteilnehmern mitgeteilt,
wann der Bus frei oder belegt ist.
-
-
Adressierung
-
Wie bereits gesagt können an dem
I2C-Bus bis zu 127 Teilnehmer angeschlossen sein. Von denen
jeder Master oder Sklave sein kann. Zu einer bestimmten Zeit,
darf jedoch nur einer der Master sein, und dieser wird sich
normalerweise mit genau einem Sklaven unterhalten wollen. Die
Adressierung ist die Methode, mit welcher der Master seinen
gewünschten Sklaven auswählt. Die Adresse wird im
ersten Datenbyte auf den Bus ausgegeben. Dabei enthalten die
Bits 7..1 die Adresse, und Bit 0 die Ansage, ob der Master Daten
lesen oder schreiben will. (Bit0 = 0, Master will schreiben /
Bit0 = 1, Master will lesen)
-
-
Nachdem die Adresse ausgegeben wurde,
folgen die Informationsdaten, in der gewünschten
Flussrichtung. Unter dem Takt des Masters werden seine Daten zum
Sklaven übertragen (Write) oder die Daten des Sklaven zum
Master (Read).
-
-
Die Zuteilung von Adressen an die
Bausteine, erfolgt bei Mikrocontrollern durch geeignete
Programmierung. Bei nicht programmierbaren IC-Bausteinen durch
den IC-Hersteller. Dieser hat in der Regel durch eine interne
Beschaltung einige fest vorgegebene Adressen verfügbar
gemacht, die durch den Anwender, über die Beschaltung von
Pins des Bausteins, vervollständigt werden kann.
-
-
Adresse 00h - General Call
-
Besteht die Adresse aus 8 Nullbits, werden
alle angeschlossenen Teilnehmer adressiert und dazu
aufgefordert, die Daten des Masters zu lesen. (Sie werden zu
Slave-Empfängern) Auf diese Weise können z.B. alle am
Bus angeschlossenen Teilnehmer mit nur einer Übertragung
initialisiert werden.
-
|
|
|
|
- Multimasterbetrieb durch
Arbitration

-
Der bereits erwähnte wired-AND-Aufbau
des I2C- Busses ist Voraussetzung für den sogenannten
Multimasterbetrieb. Hierunter ist zu verstehen, dass mehrere
Master auf dem seriellen Bus arbeiten können, ohne dass die
zu übertragende Information verfälscht wird. Um dies
sicherzustellen, findet vor dem Informationstransfer ein
Auswahlprozess (Arbitration) statt, bei dem ein bestimmter
Master die Buszuteilung erhält, während alle anderen
abgeschaltet werden und warten müssen, bis der Bus wieder
frei ist.
-
Erst dann können diese Master mit
einem erneuten Übertragungsversuch beginnen.
-
Sobald also eine Startbedingung auf dem
Bus erscheint, ist dieser belegt. Die Flagge BusBusy wird
gesetzt, und keine andere Einheit kann auf den Bus zugreifen.
Versuchen jedoch zwei Master gleichzeitig, Informationen auf den
Bus zu geben, so läuft der Auswahlprozess wie folgt ab:
-

-
Sind die Informationen der beiden Master
zunächst gleich, so kann noch kein Entscheidungsprozess
stattfinden. Wird jedoch gleichzeitig versucht, von einem Master
eine 1, von einem zweiten eine 0 auf den Bus zu geben, so stellt
sich auf diesem, wegen der Wired-AND-Verdrahtung, LOW-Pegel ein,
d. h., die 0 wird empfangen. Beide Master vergleichen nun den
Pegel auf der Datenleitung mit ihrem internen Ausgangspegel,
während der zugehörige Taktimpuls HIGH ist.
-
Der Master, der hierbei einen Unterschied
zu der von ihm gesendeten Information feststellt, schaltet seine
Ausgangsstufe sofort ab, der Master mit dem Ausgangspegel LOW
sendet dagegen weiter, so dass seine Daten auf der Datenleitung
erscheinen. Der Master mit dem Ausgangspegel LOW hat somit die
Buszuteilung gewonnen, während der Master, der sie verloren
hat, seinen Ausgangspegel konstant auf HIGH setzt.
-
-
Im allgemeinen findet dieser Vorgang schon
während des Adressentransfers statt. Der verlierende Master
schaltet dann sofort auf die Betriebsart Slave-Empfänger
um, da er selbst von dem gewinnenden Master adressiert werden
könnte. Adressieren beide Master gleichzeitig zufällig
denselben Baustein, so erfolgt die Bus-Arbitration erst beim
Transfer des ersten unterschiedlichen Datenbits.
-
Bei gleichzeitigem Sendebeginn hängt
somit die Priorität der Master nur von den gesendeten
Informationen ab. Der Sender, der dem Bus das Byte mit dem
niedrigsten Stellenwert anbietet, gewinnt die Buszuteilung.
Während des Transfers von Quittungsbits erfolgt kein
Auswahlprozess, um eine falsche Auswertung dieser Bits zu
vermeiden. Hat ein Master die Buszuteilung erhalten, so behält
er sie solange, bis er den Informationsfluss mit der
Stoppbedingung beendet hat. Währenddessen hat kein anderer
Sender Zugriff zum Bus. Alle Master sind so strukturiert, dass
sie bei Verlust der Buszuteilung vom gewinnenden Master
adressiert werden können.
-
-
Taktsynchronisation
-
Alle Master-Sender, die mit der Ausgabe
einer Information auf den Bus beginnen, erzeugen ihren eigenen
Takt. Wenn somit Taktimpulse von mehr als einem Master auf die
Taktleitung gelangen, muss der Takt synchronisiert werden. Dies
wird folgendermaßen erreicht:
-

-
Da auch die Taktleitung
Wired-AND-Eigenschaften hat, wird ein Übergang vom HIGH-
zum LOW-Pegel von allen Bausteinen an dieser Leitung erkannt.
Von diesem Übergang an beginnt jeder Taktgenerator mit der
Zählung für seine LOW-Phase. Die Wired-AND-
Eigenschaften der Taktleitung führen auch dazu, dass die
LOW-Zeit auf ihr durch den Baustein mit der längsten
LOW-Phase, d. h. vom langsamsten Master, bestimmt wird. Ein
Baustein mit kürzerer LOW-Phase ist nach deren Ende nicht
in der Lage, HIGH-Pegel auf der Taktleitung herbeizuführen,
erkennt aber den Unterschied zwischen dem internen Pegel seiner
Taktausgangstufe und dem tatsächlichen Pegel auf der
Taktleitung. Dadurch wird der Taktgenerator dieses Bausteins in
einen Wartezustand übergeführt, wobei seine
Zählschaltung auf den Anfang einer HIGH-Phase eingestellt
bleibt.
-
-
Sobald alle Bausteine ihre LOW-Phase
durchlaufen haben, wird die Taktleitung freigegeben. Die
wartenden Bausteine können nun keinen Unterschied mehr
zwischen dem Pegel ihrer Ausgangsstufe und dem Pegel der
Taktleitung erkennen und beginnen daher mit der Abwärtszählung
ihrer HIGH-Phase. Auf diese Weise wird ein synchronisierter Takt
erzeugt, dessen LOW-Phase durch den Baustein mit der längsten
LOW-Phase und dessen HIGH-Phase durch den Baustein mit der
kürzesten HIGH-Phase bestimmt wird.
-
-
Wenn daher ein bestimmter Baustein die
Taktleitung für längere Zeit auf LOW-Pegel hält,
befinden sich alle übrigen im Wartezustand. Hierdurch kann
z. B. ein schneller Master durch einen Slave so verlangsamt
werden, so dass dieser genug Zeit hat, um ein empfangenes Byte
zu speichern oder ein Byte zum Transfer vorzubereiten.
|
|