Buen día. Soy nuevo en el mundo de arduino y en la electronica, y estoy entendiendo como se comunica con sus distintos dispositivos. He leído sobre el funcionamiento del protocolo de comunicación I2C y entiendo todas sus características, como las que funciona con dos cables, es bidereccional, es una comunicación master-slave,multi-master, half-duplex entre otros...
El problema radica en el momento que vengo a entender su estructura:

Me surgen varias preguntas :
-
entiendo este protocolo usa unas resistencias pull-up, he investigado sobre ellas y permiten que la entrada de un pin digital este normalmente en ALTO. Sin embargo he visto que es usado normalmente por ejemplo con switches o pulsadores para evitar que en la entrada del pin llegue interferencia por efecto de que queda el cable al aire. En este caso, ¿cual es la finalidad de mantener todos los pin de entrada de todos los dispositivos , tanto el master como el slave en ALTO?, ¿ayuda a una mejor comunicación entre ellos o algo así?
-
En la imagen se muestra como cada dispositivo posee un transistor, creo, esta configuración se llama open colector, sin embargo he investigado sobre ella y no logro entenderla muy bien. Tengo una breve noción en mi cabeza de su función como puede ser:
- el hecho de que el transistor permite llevar a tierra la linea a la que esta conectado cuando la base recibe una señal, y que eso es lo que permite la comunicación entre el Master y el slave
- que evita que ocurra una falla en caso de que varios slaves intenten comunicarse con el maestro o que permite saber a cada dispositivo cuando la linea del bus esta ocupada.
Pero es como si tuviera todas estas ideas dispersas en mi cabeza sin poder unir las partes.
De todas esas idea que sé acerca del transistor me surgen estas preguntas :
a) "Data out" , es lo que esta en la base del transistor, si el dispositivo 1 fuera un sensor, como un acelerometro por ejemplo, este tiene que mandar sus datos al master (microcontrolador del arduino), ¿el manda esa señal por medio del transistor entonces? recibe la señal analogica del fenomeno físico, lo convierte en una señal digital, y el mismo sensor tiene la capacidad de saber que por cada 1 que mande realmente lo que recibe el master es un 0. Digo esto ultimo porque lo que entiendo es que cuando sale un dato del sensor, imagino llega a la base del transistor, este coloca a tierra la línea de datos deseada haciendo que el master conectado a la linea reciba un 0.
b) Se dice que el transistor evita que ocurra una falla en caso de que varios slaves intenten comunicarse con el maestro ¿ por que cuando un slave se comunica esta constantemente mandado de BAJA una linea de tal forma que los otros slaves saben que la linea esta ocupada? Haciendo que sea imposible el hecho de que 2 slaves se comuniquen al mismo tiempo ya que ellos para comunicarse tiene que saber el bus esta libre cosa que se sabe por medio del transistor.
c) Puedo observar que en la línea de reloj cada dispositivo tiene una Salida de reloj ("Clock out") conectada a un transistor ¿ el transistor igualmente permite al dispositivo generar el reloj? mandado un 1 para que la línea este de BAJA y un 0 para que la línea este de ALTA . Supongo esto depende del caso, porque por ejemplo no creo que un sensor pueda ser master, por lo tanto no creo pueda generar una salida de reloj.
- ¿que simboliza el triangulo tanto de "Clock in" como de "Data in"? , ¿acaso ambos representan un circuito integrado o microcontrolador que reciben la señal para entenderla o procesarla de alguna manera?
Espero mis preguntas sean entendibles, si no es así haganmelo saber para aclararlas más , agradecería su respuesta.