Asigne la dirección I²C a múltiples dispositivos en el mismo bus

Tengo un par de ADC en el mismo bus I²C, todos predeterminados en la misma dirección. Mi primer instinto me dice que use un multiplexor I²C como el TCA9544A , pero eso requeriría enviar un byte al MUX antes de obtener los datos del ADC y me gustaría evitar eso (ya que necesito leer datos continuamente con la misma rapidez como puedo).

Los ADC admiten la asignación de direcciones personalizadas a través de I²C, por lo que solo necesito asegurarme de que enviaré el byte de configuración a un solo ADC. Podría incluir un FET en la línea SDL para cada ADC para tener solo un ADC conectado durante la asignación de direcciones, pero probablemente haya una solución mucho más elegante, ya que debe haber un montón de personas con el mismo problema. Mis términos de búsqueda de Google simplemente no son lo suficientemente buenos para encontrar la respuesta :(

El número de pieza del ADC puede ser relevante aquí.
Esta parte no tiene direcciones esclavas personalizadas por lo que puedo ver en la hoja de datos.
@Passerby, de acuerdo. Y esa no es una característica que haya escuchado que tenga un dispositivo esclavo I2C (excepto uC).
Vaya, lo siento. Multiplexor I²C es entonces. :)
[Su pregunta ahora nos pertenece, y aún no hemos terminado, @Clayton.] Quería agregar que la colisión de direcciones I²C es una razón suficiente para buscar otro chip A/D equivalente que tenga pines de selección de direcciones ).
Podría usar algo como cds.linear.com/docs/en/datasheet/4317fa.pdf que permite cambios de dirección transparentes. No es necesario agregar una transacción adicional para cambiar el bus.
¿Cómo conectar varios del mismo dispositivo a un Arduino usando I2C? tiene buena información y enlaces. Más allá de lo mencionado hasta ahora, el documento de TI Solución de problemas del protocolo de bus I2C , sección 3, sugiere un búfer I²C como otra opción.
¡Muchísimas gracias chicos! Creo que el LTC4317 parece una solución excelente, así que mi problema...

Respuestas (1)

Este problema es, de hecho, bastante común. Aquí está la solución típica...

(Todo esto supone que tiene pines de repuesto para usar, lo que varía bien puede no ser el caso).

Si el chip tiene un pin de habilitación de chip (CE), debería poder usarlo para permitir múltiples dispositivos idénticos en el mismo bus y dirección. Desafortunadamente, su chip especificado no tiene este pin :(

Alternativamente, encienda los chips desde los pines MCU, lo que tendrá un efecto similar.


La primera es la mejor opción, ya que el chip no necesariamente tendrá que configurarse cada vez, y potencialmente podría estar ejecutando capturas de ADC mientras un chip diferente está usando el bus.

De lo contrario, el chip requerirá un poco de inicio y adquirirá tiempo cada vez que se habilite o inicie. Esto dañará el ancho de banda/la latencia, pero eso podría estar oculto.


Si no se puede hacer de la manera CE, y la alternativa es demasiado problemática para usted, entonces sí, lo más probable es que necesite algún tipo de IC de búfer. Hacen unidades que no requieren un comando de configuración. Vea el comentario de Mcmayer a la publicación original.