Múltiples esclavos I2C en el bus Intel Edison I2C-6

2

Me las arreglé para poner en mis manos un Edison hace unas semanas y he estado jugando con el bus I2C-6 y he encontrado algunos problemas.

Problema Principalmente tengo sensores en la línea I2C. Puedo colocar 2 sensores en la línea sin ningún problema, sin embargo, cuando agrego un tercer sensor a la línea, un sensor ya conectado no será respondedor y el sensor recién conectado tampoco responderá. He comprobado dos veces y no hay conflictos de direcciones.

    
pregunta Tom Priddle

2 respuestas

4

Es muy probable que se trate de un problema de combinación incorrecta de extracción y / o velocidad de bus. Cuanto más largo sea el cable, más capacitancia parasitaria hay en las líneas SDA y SCL. Esto hace que sus bordes sean más lentos, particularmente los bordes ascendentes, ya que estos solo son pasivamente altos con las resistencias pullup.

Siempre que tenga problemas con varios dispositivos, use las mínimas opciones disponibles. En un bus IIC básico, los nodos deben poder hundir 3 mA para reducir la línea. Eso significa que las resistencias pullup pueden ser tan bajas como 1.1 kΩ a 3.3 V o 1.7 kΩ a 5 V. Si eso no es lo que ya está usando, entonces cambie los pullups.

Para un bus largo, puede ayudar dividir el pullup en cada línea en dos resistencias, una en cada extremo. La combinación paralela se convierte en el valor total de extracción.

Algunos módulos IIC mal concebidos añaden un poco de pullup. Esto puede causar problemas con varios módulos ya que el valor total de extracción puede ser demasiado bajo, y algunos dispositivos pueden no ser capaces de tirar de las líneas lo suficientemente bajas. La mayoría de estos módulos se pueden configurar al menos para que no agreguen cierta resistencia de extracción.

Si las flexiones ya están lo más bajas que pueden, pero no demasiado bajas, y ha tomado medidas razonables para minimizar la capacitancia parásita, entonces debe ajustar el reloj a lo que las líneas pueden soportar. Mira las señales en ambas líneas con un alcance. Asegúrese de que cada línea esté razonablemente cerca de su nuevo estado antes del siguiente límite de reloj posible. IIC no está diseñado para la comunicación de alta velocidad, y realmente no se debe utilizar fuera del tablero. Si lo haces de todos modos, es posible que tengas que reducir la velocidad del reloj.

    
respondido por el Olin Lathrop
0

Podría haber demasiada capacitancia en la línea. Pruebe tanto SCL como SDA con un osciloscopio con 1, 2 y 3 dispositivos conectados. Vea si la calidad de la señal parece estar degradándose (tiempo de aumento excesivamente lento). Si es así, una resistencia de pull-up más rígida (valor inferior) podría ayudar.

    
respondido por el pericynthion

Lea otras preguntas en las etiquetas