Protokolle, bei denen mehrere Geräte mit Drei-Status-Treibern auf einem gemeinsamen Bus kommunizieren, erfordern im Allgemeinen entweder die Hinzufügung eines externen Steuerkabels, um Buskonflikte zu vermeiden, oder strombegrenzende Treiber, um Schäden zu vermeiden, wenn Buskonflikte auftreten. Während das Niveau des Fehlerstroms, das man im Falle eines Buskonflikts tolerieren kann, höher sein kann als das Niveau des Stroms, das man tolerieren kann, wenn eine Leitung niedrig ist, sind bidirektionale strombegrenzte Treiber komplizierter als Open-Collector-Treiber in Kombination mit passiven Pull-ups .
Wenn man bereit ist, die zusätzlichen Kosten für aktuell begrenzte Treiber zu akzeptieren, können Protokolle entworfen werden, die schneller und robuster als I2C sind. Andererseits kann das Hinzufügen von Aktiv-Hoch-Treibern zu einem I2C-Master ähnliche Vorteile ermöglichen, selbst mit I2C. Um solche Vorteile sicher zu erzielen, müssen möglicherweise Serienwiderstände auf der SDA-Leitung zwischen dem Master und den Slaves hinzugefügt werden. Wenn jedoch ein separater Widerstand zwischen dem Master und jedem Slave verwendet wird, kann der Master die SDA-Leitung hoch ansteuern Jeder Slave, der ihn nicht aktiv auf Low treibt, kann es dem Master ermöglichen, sich von Szenarien zu erholen, die andernfalls dazu führen könnten, dass der Bus dauerhaft blockiert (kein einzelnes Gerät kann SCL für mehr als 9 SCL-Zyklen kontinuierlich niedrig halten Ein Master wäre in der Lage, innerhalb von 9 Zyklen eine Stoppbedingung für jedes Gerät zu generieren. Wenn jedoch zwei Geräte die von einander gesehene SCL-Leitung gedrückt halten könnten, könnten sie in einen Zustand geraten, in dem sie abwechselnd die SCL so herunterziehen würden, dass dies der Fall wäre Werden Sie niemals freigegeben, sodass der Master keine Stoppbedingung generieren kann.