I²C no es un protocolo estricto de maestro / esclavo (aunque su circuito podría usarlo de esta manera), pero permite múltiples maestros y permite a los esclavos retrasar las transacciones por estiramiento de reloj.
Esto significa que varios dispositivos pueden conducir la misma línea de señal al mismo tiempo. Y si dos dispositivos intentan manejar niveles diferentes, el resultado sería una contención de bus, que no solo haría que el nivel real no estuviera definido, sino que también formaría un corto entre V CC y GND, que podría quemar el Transistores de salida de estos dispositivos.
En un sistema de drenaje abierto, si un dispositivo baja el bus mientras otro lo deja flotar alto, el resultado es una señal baja. Esto es utilizado por el protocolo I²C para detectar conflictos en un sistema multi-maestro, y para permitir que el maestro detecte cuando un esclavo detiene el reloj para retrasarlo.
Si solo tiene un maestro principal, y si sus esclavos no admiten el alargamiento del reloj, puede usar una salida de empujar / tirar para la línea del reloj. Pero la línea de datos está escrita y leída en la misma transacción, por lo que nunca debe conducirla al alto nivel.