Si bien el I2C con varios maestros puede parecer un superconjunto del I2C con un solo maestro, tal vez sea más útil pensar en ellos como si estuvieran separados, ya que un solo maestro puede actuar de manera ilegítima para un autobús. - compartir maestro, y tales acciones pueden recuperarse fácilmente de los modos de falla que serían más difíciles de manejar en un sistema de bus compartido. Para que un maestro I2C coexista con otros maestros en el mismo bus, debe incluir soporte en hardware y software para dicha coexistencia; este soporte debe, entre otras cosas, incluir una lógica de tiempo de espera para manejar el escenario de otra comunicación de inicio maestro y luego restablecerse mientras se liberaron SDA y SCK (o restablecerse mientras se liberó SDA y se liberó SCK como consecuencia del restablecimiento ). En ese escenario, a ninguno de los maestros se le permitiría comunicarse hasta que ambos hubieran visto a SDA y SCK lo suficientemente alto como para concluir que cualquier persona que haya tenido el autobús debe haber "muerto". Lone-master I2C no tendría ese problema, ya que nunca habrá ninguna transacción pendiente que no sepa, y el momento en que no quiere que una transacción esté pendiente puede reiniciar el bus liberando SCK y SDA (si ya confirmado), a la espera de que SCK alcance un nivel alto, y si el nivel de SDA es bajo en ese momento, se afirma SCK y se reinicia el procedimiento (que puede ser necesario como máximo nueve veces); una vez que SDA y SCK son altos, puede comenzar la siguiente transacción afirmando SDA.
Debido a las diferencias en el diseño entre el bus compartido y el firmware de maestro único, la mayoría de las aplicaciones de bus único requerirían una revisión sustancial para coexistir con otros maestros de bus. Dado que el hardware de múltiples maestros sería inútil sin el firmware correspondiente, no veo ninguna necesidad de un dispositivo que se utilizará como maestro único para incluir el hardware necesario para el arbitraje de múltiples maestros.
Por cierto, una cosa que no he visto que sea compatible con el hardware, pero que sería IMHO útil, sería un medio para realizar un arbitraje de múltiples esclavos de direcciones compartidas. El protocolo de señalización facilitaría que un dispositivo I2C admita una dirección de escritura de "preparación para leer ID de dispositivo" y una dirección de lectura de "obtener ID de dispositivo siguiente". El comando anterior "activaría" el modo de ID de lectura de todos los dispositivos que lo reciben; esto último causaría que cualquier dispositivo cuyo modo de ID de lectura estuviera activo intentara emitir su ID (se eliminara si se perdía el arbitraje de cualquier otro dispositivo); cualquier dispositivo que produzca con éxito su ID desactivará su modo de ID de lectura. Bajo tal esquema, un maestro que produzca una "preparación para leer ID de dispositivo" y luego emita múltiples solicitudes de "lectura de ID de dispositivo" recibiría nuevamente las ID de todos los dispositivos conectados de una manera mucho más suave y más fácil que la utilizada por un solo cable protocolo.