Takt, Clock, Arbitrierung

Takterzeugung

Das SCL-Signal wird stets vom Master erzeugt. Die I2C-Spezifikation fordert Mindestperiodenlängen für die Low- bzw. High-Signale und so kann es vorkommen, daß beispielsweise aufgrund zu hoher kapazitiver Last und der damit verbundenden mangelnden Flankensteilheit die Nennbitrate auf dem Bus nicht erreicht wird.

Clock Stretching

Busteilnehmer können die Taktleitung während der Low-Phase gegen Masse halten und so ein erneutes Steigen der Flanke verhindern. Hierdurch kann die Übertragung aktiv verzögert werden. Dieses Verhalten wird als Clock Stretching bzw. Clock Synchronisation bezeichnet.

Bemerkenswert ist, daß die I2C-Spezifikation keine Maximalzeiten für das Stretching vorsieht, so daß diese Verzögerung beliebig lange andauern darf.

High Speed Mode

Das Clock Stretching im High-Speed-Mode ist nur nach dem ACK Bit und vor dem ersten Bit des nächsten Bytes möglich. Das Stretchen zwischen den Bits 2 bis 9 ist nicht spezifikationskonform, da die Signalkanten dieser Bits durch den I2C Bus Master aktiv in Richtung der logischen Eins gezogen werden. Siehe I2C Spezification Revision 03 Kapitel 5.3.1.

Arbitrierung

Am I2C-Bus können mehrere Multimaster angeschlossen sein. Durch laufende Überwachung der Takt- und Datenleitung läßt sich feststellen, ob zu einem gegebenen Zeitpunkt Datenverkehr auf dem Bus stattfindet.  Sofern der Bus belegt ist, verzögern Multimaster die Übertragung bis zum Auftreten einer Stop-Bedingung, d.h. bis der Bus wieder frei ist.

Dennoch ist es möglich, daß zwei Master einen Transfer exakt zum gleichen Zeitpunkt beginnen. Erkennt einer der Master einen Lowpegel auf der Datenleitung (SDA), den er nicht selbst erzeugt, so geht er von einer Belegung des Busses durch einen anderen Master aus und beendet jede Busaktivität, d.h. er verliert die Arbitrierung.