¿Por qué los maestros no pueden hablarse en un bus I2C?

1

Me encontré con un artículo de I2C que me llevó a una pregunta. Específicamente esta parte está creando cierta confusión:

"Además, a diferencia de SPI, I2C puede admitir un sistema de múltiples maestros, lo que permite que más de un maestro se comunique con todos los dispositivos en el bus ( aunque los dispositivos maestros no pueden comunicarse entre sí a través de el autobús y debe turnarse para usar las líneas de autobús) " Sparkfun

¿Por qué los maestros no pueden comunicarse entre sí en un bus I2C si supuestamente tiene un bit de dirección único para cada uno de los dispositivos conectados a él?

    
pregunta Bob

3 respuestas

5

Un maestro inicia una transacción emitiendo la señal del reloj y la dirección del esclavo.
Un esclavo inicia una transacción cuando detecta una señal de reloj y su propia dirección de esclavo.

Solo un dispositivo puede controlar el reloj. Por lo tanto, una transacción I²C siempre debe estar entre un maestro y un esclavo.

Es posible que varios dispositivos se comuniquen entre sí mientras inician transacciones por su cuenta, pero esto requiere que permanezcan en modo esclavo mientras están inactivos y escuchando, y cambiando al modo maestro solo cuando quieren iniciar una transacción. / p>     

respondido por el CL.
1

Solo un maestro puede estar activo a la vez, lo que significa que un maestro solo puede hablar con esclavos y los esclavos pueden responder adecuadamente. Si un esclavo fuera anteriormente un maestro, usted podría decir que existía una forma de comunicación maestro-maestro. Para tener un escenario de múltiples maestros, debe haber la renuncia del estado maestro por un dispositivo y la aceptación del estado maestro por otro dispositivo. No puedes tener dos maestros sin alguna forma de "comprensión" entre los dos.

Pero depende del protocolo: puede presentar un argumento para un sistema que contenga dispositivos que puedan ser maestros y podría diseñar su esquema de manera que un comunicado maestro a un esclavo podría contiene un "bit" que indica que el esclavo debe "hacerse cargo" de ser maestro. Ese esclavo podría entonces responder como un maestro (al anterior maestro) y así sucesivamente. Esto se parecería mucho a la comunicación maestro-maestro pero, si realmente examinara las cosas, seguiría siendo comunicaciones maestro-esclavo.

    
respondido por el Andy aka
1

Un maestro I2C no tiene una dirección, solo los esclavos tienen direcciones.
Todas las transacciones en un bus I2C se envían o arrastran al maestro bajo el control del maestro.
Sin embargo, no hay nada que le impida programar a sus maestros como dispositivos de "modo dual" y cambiar entre el modo maestro y el modo esclavo sobre la marcha.
Quizás pueda configurar un sistema en el que todos los dispositivos en su bus I2C sean esclavos (con direcciones), pero cuando uno de ellos desea iniciar la comunicación, cambia al modo maestro y amp; toma el control del bus.

    
respondido por el brhans

Lea otras preguntas en las etiquetas