Múltiples dispositivos I2C con la misma dirección

4

Tengo varios dispositivos con la misma dirección y solo un bus I2C. Si no quiero / no puedo usar un multiplexor de direcciones, ¿funcionará la siguiente disposición? (perdón por el esquema desordenado)

simular este circuito : esquema creado usando CircuitLab

SW1 y SW2 son I / O de microcontroladores, se agotan cuando no queremos hablar con el IC correspondiente y se configuran a alta impedancia cuando queremos hablar con ese IC. ¿Alguien puede ver algún problema con esto, aparte del estiramiento del reloj? Suponiendo que elija diodos con una pequeña caída de voltaje, como un schottky.

Editar:

Suponiendo también que el VIH y VIL funcionaron con la caída de diodo y el VOH VOL.

Los diodos también podrían ir a las líneas de datos, sin estar seguros de si habría algún beneficio / diferencia (tal vez algunos dispositivos I2C hagan algo especial cuando el tiempo se agote, incluso si no es su dirección. Probablemente sea más seguro no hacerlo. en absoluto, es decir, tener los diodos en las líneas del reloj.

    
pregunta BeB00

3 respuestas

6

Creo que me sentiría tentado a hacerlo de esta manera.

simular este circuito : esquema creado usando CircuitLab

Los Habilitadores del microcontrolador actúan básicamente para habilitar el pull-up, sin embargo, dependiendo del dispositivo, las resistencias podrían ser internas al micro, y se podrían activar y desactivar cuando sea necesario.

Sin embargo , en realidad, para cuando se agreguen todos los diodos y resistencias y se enruten en su totalidad, un multiplexor probablemente habría sido más barato, requeriría menos espacio real y requeriría menos pines IO.

    
respondido por el Trevor_G
6

Tu esquema usa 4 señales en total. 2 son para el bus IIC y dos más para habilitar la línea del reloj para cada dispositivo esclavo. Por lo tanto, obviamente tiene señales adicionales disponibles.

En lugar de cambiar las líneas del reloj, considere usar dos líneas de reloj separadas. Eso es solo un total de 3 líneas: SDA, SCL1 y SCL2.

IIC es muy fácil de implementar directamente en el firmware. Por lo tanto, puede usar los pines de E / S digitales ordinarios que desee, alternándolos entre la impedancia activa baja y alta. He hecho esto muchas veces. El único problema en este caso es que el siguiente nivel debe indicar al código IIC de bajo nivel qué línea de reloj debe usar.

Esto también tiene el efecto secundario de dejar un reloj alto cuando no está en uso.

Antes de hacer todo esto, deberías buscar los IC que realizan la función que deseas y que tienen una dirección configurable. Casi todos los chips IIC que he usado tienen la capacidad de tener al menos un bit de dirección, generalmente 2-4, configurable.

    
respondido por el Olin Lathrop
3

No estoy seguro de por qué necesitaría esos diodos cuando, básicamente, desea desactivar el reloj del chip que no desea abordar.

Creo que esto es mucho más fácil y hará lo mismo:

simular este circuito : esquema creado usando CircuitLab

Supongo que estás usando chips lógicos CMOS, entonces el 10 kohm no será un problema. También suponiendo que el reloj puede conducir 10 kohm a tierra. Si también es una salida lógica de CMOS, eso no será un problema.

    
respondido por el Bimpelrekkie

Lea otras preguntas en las etiquetas