Selección de canal de multiplexor I2C y resistencias pull up

Necesito comunicarme con 3 baterías a través de SMBus. Logré comunicar cada uno de ellos por separado uno por uno. Sin embargo, necesito comunicarme con 3 de ellos, para eso decidí usar multiplexor. (Estas son el mismo tipo de baterías, por lo que sus direcciones son las mismas). El multiplexor que elegí es TCA9546A. TCA9546A

Este es el esquema de la misma, de su hoja de datos.Esquemático

Tengo dos preguntas:

  1. El primero está relacionado con los valores de la resistencia pull up. Usé resistencias de 20 k como pull ups mientras probaba la conexión SMBus una por una y estas resistencias de 20 k funcionaron. Pero sé que 20 k es demasiado para I2C, por lo que planeo usar 2 k para el lado I2C y 20 K para el lado SMBus. Estoy planeando usar resistencias pull up de 2 k entre la MCU maestra y el multiplexor y resistencias de 20 k entre 3 baterías esclavas y el multiplexor. ¿Funcionaría o necesito usar resistencias de 20 k para todos lados o alguna otra opción?

  2. Mi segunda pregunta está relacionada con la selección de canales. He leído la hoja de datos pero no pude obtener una respuesta. Pensé que usaría los pines A0, A1 y A2 para seleccionar el canal. (es decir, cuando A0=1, A1=0, A2=0, elija el primer esclavo, etc.) Pero en el esquema conectaron a tierra estos pines... Parece que necesito enviar datos I2C para elegir el canal. En la hoja de datos hay esta información:

Selección del canal

Entonces me confundió mucho. ¿Cómo puedo elegir un canal relacionado a través de él? Si necesito elegir el canal uno, por ejemplo, quiero obtener información de SOC de la primera batería, en el caso normal, envío la dirección de la batería inteligente (0x16), luego envío el código de comando (0x0D) y luego espero la recepción. Pero con este multiplexor, ¿cómo voy a hacer eso? ¿Utilizo 0x01 como registro de dirección? Entonces, ¿cómo entenderá la dirección del esclavo (0x16) por sí mismo? ¿Alguien puede aclararlo? Gracias de antemano.

Respuestas (2)

El uso de pull-ups depende de los voltajes del bus en cada lado del mux. ¿Sabes si las baterías tienen pull-ups y a qué voltaje, o si necesita pull-ups externos, a qué voltaje? Independientemente de los voltajes, cuando cualquiera de los lados baja el bus, todas las resistencias pull-up proporcionarán corriente y el chip debe manejar eso. Con respecto al mux, configura la dirección mux y luego puede seleccionar canales mux a través de I2C. Después de seleccionar uno de los canales de la batería, entonces habla con la batería normalmente.

Usaré 4.9 V para mi MCU. Sin el chip mux, podría comunicarme con una batería y usé pull ups de 20 k (nuevamente fuente de 4.9 V para MCU). Ahora necesito agregar un chip MUX, por lo que en ese caso debería volver a usar pull ups de 20 k entre mux y baterías y 2 k entre mux y mcu?

Los bits de dirección del TCA9546A establecen la dirección del TCA9546A. Debe enviar al TCA9546A los puertos con los que desea comunicarse. Después de eso, el TCA9546A es transparente.

Para comenzar, usaría resistencias pull up de 4,7 k ohmios en todas partes, pero el mejor valor depende de la velocidad, la distancia y otros factores.

Publicaste la dirección TCA9546A arriba. Es 0xE0 para una escritura.