Diseño para múltiples dispositivos esclavos I2C

1

Estoy haciendo un PCB en el que estoy usando el Beagle Bone Black para interactuar con varios dispositivos I2C. He adjuntado un esquema. De los muchos dispositivos I2C, estoy conectando algunos utilizando interruptor I2C PCA9548A de TI (principalmente para reduciendo la capacitancia de la línea).

Tengo las siguientes preguntas

  1. ¿Mi esquema tiene sentido? ¿Existen lagunas evidentes?
  2. Con el fin de eliminar errores (para ver la calidad de la forma de onda, el tiempo de subida, etc.), muestro las líneas principales SDA, SCL y las líneas de conmutación SDA (1-4) y SCL (104) a 0.1 pulgadas 2 posiciones encabezados ( como se muestra en la Figura 2 ). ¿Sacar líneas de I2C como esta perjudica la integridad de la señal y el rendimiento general? También lo estoy haciendo bien?
  3. Como varios dispositivos usan las mismas líneas I2C, la sección donde se encuentran las líneas se ve como se muestra en la Figura 1. Los círculos blancos indican la intersección de las líneas SDA / SCL de otros dispositivos. ¿Esto tiene sentido?

Gracias

Figura 1

Figura 2

    
pregunta am3

1 respuesta

3
  

¿Mi esquema tiene sentido? ¿Hay lagunas evidentes?

La omisión más evidente es el hecho de que este es un diagrama de bloques de OmniGraffle, no un esquema. Un esquema razonable mostraría todas las conexiones y componentes.

  

Con el fin de eliminar errores (para ver la calidad de la forma de onda, el tiempo de subida, etc.), muestro las líneas principales SDA, SCL y las líneas de conmutación SDA (1-4) y SCL (104) a 0.1 pulgadas 2 posiciones encabezados (como se muestra en la Figura 2). ¿Sacar líneas de I2C como esta perjudica la integridad de la señal y el rendimiento general? También lo estoy haciendo bien?

No, no le hace daño. Lo hago con SPI todo el tiempo, lo que puede ser mucho más rápido que I2C. ¡No veo cómo podrías arruinar esa parte!

  

Dado que varios dispositivos usan las mismas líneas I2C, la sección donde se encuentran las líneas se ve como se muestra en la Figura 1. Los círculos blancos indican la intersección de las líneas SDA / SCL de otros dispositivos. ¿Esto tiene sentido?

Es necesario eliminar los ángulos agudos para reducir las trampas de ácido para el grabado de tablas. De lo contrario, I2C es TAN LENTO , por lo que puede tratarlo como un cable en un PCB. No se puede obtener nada lo suficientemente largo en una placa de circuito para que la longitud de los trozos o la terminación sean importantes. Se pone un poco más dudoso cuando empiezas a tomarlo entre PCB y sobre cables.

Lo único que veo aquí que se ve raro son las resistencias de baja velocidad en la rama principal (4.7k) y las resistencias de alta velocidad en las ramas secundarias (2k). Por lo general, se usa un pull-up de menor resistencia cuando se ejecuta a 400kHz y 4.7k cuando se ejecuta a 100kHz.

Nota: este no es un mux 'normal *'. es un 'selector de rama' que puede tener muchas o ninguna rama conectada. Su byte de control, definido como

seutilizaparaseleccionarlosinterruptoresMOSFETindividualmente

y puedes activar o desactivar cualquier rama arbitrariamente.

* Un mux normal se codificaría para 001 - > 00000001, 010 - > 00000010, 011 - > 00000100 ...

    
respondido por el Daniel

Lea otras preguntas en las etiquetas