I3C Bus Arbitration
Zu Beginn eines Rahmens können mehrere Geräte um die Verwendung des Busses kämpfen, und der Bus-Arbitrierungsprozess dient dazu, auszuwählen, welches Gerät die Steuerung der SDA-Leitung erhält. Sowohl in I²C als auch in I3C wird die Busarbitrierung mit der SDA-Leitung im Open-Drain-Modus durchgeführt, wodurch Geräte, die eine binäre 0 (niedrig) übertragen, Geräte überschreiben können, die eine binäre 1 übertragen. Konkurrierende Geräte überwachen die SDA-Leitung, während sie im offenen Modus betrieben werden. Drain-Modus. Immer wenn ein Gerät beim Senden eines hohen Zustands (1 Bit) einen niedrigen Zustand (0 Bit) auf dem SDA erkennt, hat es die Arbitrierung verloren und muss den Wettbewerb einstellen, bis die nächste Transaktion beginnt.
Jede Transaktion beginnt mit der Zieladresse, und die Implementierung gibt Zieladressen mit niedrigerer Nummer Priorität. Der Unterschied besteht darin, dass I²C keine Begrenzung für die Dauer der Schiedsgerichtsbarkeit hat (in der seltenen, aber rechtlichen Situation mehrerer Geräte, die versuchen, eine Nachricht an dasselbe Gerät zu senden, wird der Konflikt erst nach dem Adressbyte erkannt). I3C garantiert jedoch, dass das Schiedsverfahren spätestens am Ende des ersten Bytes abgeschlossen ist. Dadurch können Push-Pull-Treiber und schnellere Taktraten die meiste Zeit verwendet werden. Dies geschieht auf verschiedene Arten: I3C unterstützt mehrere Master, diese sind jedoch nicht symmetrisch. Einer ist der aktuelle Master und für die Erzeugung der Uhr verantwortlich.
Andere Geräte, die eine Nachricht auf dem Bus senden (In-Band-Interrupts oder sekundäre Master, die den Bus verwenden möchten), müssen vor dem Senden anderer Daten unter Verwendung ihrer eigenen Adresse entscheiden. Somit teilen sich keine zwei legalen Busnachrichten dasselbe erste Byte, außer wenn der Master und ein anderes Gerät gleichzeitig miteinander kommunizieren. I3C ermöglicht wie I²C mehrere Nachrichten pro Transaktion, die durch "wiederholte START" -Symbole getrennt sind. Die Schiedsgerichtsbarkeit erfolgt pro Transaktion, sodass diese nachfolgenden Nachrichten niemals einer Schiedsgerichtsbarkeit unterliegen. Die meisten I3C-Mastertransaktionen beginnen mit der reservierten Adresse 0x7E (1111110 2 ).
Da dies eine niedrigere Priorität als jedes I3C-Gerät hat, weiß der Master nach bestandener Arbitrierung, dass kein anderes Gerät um den Bus kämpft. Wenn I3C-Geräten als Sonderfall niedrige Adressen zugewiesen werden (I3C unterstützt die dynamische, vom Master gesteuerte Adresszuweisung), 0x7E kennt der Master diese Arbitrierung , sobald die Adresse eine Arbitrierung für genügend führende Bits gewonnen hat, um sie von einer zugewiesenen Adresse zu unterscheiden ist abgeschlossen und es kann auf Push-Pull-Betrieb auf SDA umgeschaltet werden. Wenn alle zugewiesenen Adressen kleiner als sind 0x40 , erfolgt dies nach dem ersten Bit. Wenn alle Adressen kleiner als sind 0x60 , erfolgt dies nach dem zweiten Bit und so weiter.
In dem oben beschriebenen Fall, in dem der aktuelle Master eine Transaktion mit der Adresse eines Geräts beginnt, das selbst um die Verwendung des Busses kämpft, übertragen beide ihre Adressbytes erfolgreich. Jeder erwartet jedoch, dass der andere die Adresse (durch Ziehen von SDA niedrig) für das folgende Bestätigungsbit bestätigt. Folglich wird keiner und beide den Mangel an Anerkennung bemerken. In diesem Fall wird die Nachricht nicht gesendet, aber der Master gewinnt die Schiedsgerichtsbarkeit: Möglicherweise wird ein wiederholter Start gesendet, gefolgt von einem erneuten Versuch, der erfolgreich sein wird.