Problema I2C a 400KHz

2

Tengo dos tablas (1.5Feet x 1Feet cada una) que están conectadas en un backplane. I2C master está en BOARD1 y el esclavo (Sensor de temperatura) en BOARD2. En el modo de 100 KHz, puedo leer el esclavo correctamente pero cuando me muevo al modo de 400 KHz no obtengo ninguna respuesta del esclavo.

Encuentre el diagrama adjunto para el diagrama I2C, hay algunos MUX y los INTERRUPTORES están conectados en las líneas I2C. Solo he mostrado SCL en la imagen, pero SDA también es la misma conexión.

En el caso anterior, hay 3 resistencias de extracción en ambas líneas SCL y SDA. ¿Alguien puede decirnos cómo encontrar el valor de recuperación correcto para las tres resistencias?

Y una cosa más es BOARD1 y BOARD2 tiene su propio suministro de 3.3V generado a bordo. También he escrito la capacitancia de entrada de cada dispositivo en la imagen.

    
pregunta Marimuthu P

1 respuesta

6

Dado que su I2C funciona a 100Khz, pero no a 400 Khz, es una buena idea observar los diversos factores que tienen un efecto en el tiempo.

1: comprueba que tu placa esclava es compatible con 400Khz.

2: los valores de la resistencia son demasiado grandes.

Cuando el tiempo se incrementa de 100k a 400k, el período del reloj se reduce de 10 a 2,5.

Esto significa que el flanco ascendente de sus datos / señales de reloj tiene una cantidad de tiempo significativamente menor para establecerse. el tiempo empleado se calcula de la siguiente manera:

t = rc

la capacitancia en el bus suele ser constante y una propiedad de cada dispositivo. Parece que tienes estos. Súmalos.

Los valores de resistencia son la siguiente variable. Como tienes tres en paralelo, debes agregarlos usando 1/Rt = 1/R1 + 1/R2 + 1/R3 y así sucesivamente. Solo necesitas una resistencia en el bus, por lo que tener tres en paralelo reducirá la resistencia total.

Ahora puedes calcular t usando la fórmula anterior. Si es más de 300 ns (un poco más del 10% de su período de reloj a 400 k), entonces el tiempo de subida está fuera de las especificaciones I2C. Aquí , tabla 5, página 32.

Si desea calcular el valor correcto de la resistencia, puede reorganizar la fórmula anterior para obtener R=t/c y trabajar desde allí, donde T es 300ns o menos.

    
respondido por el stanri

Lea otras preguntas en las etiquetas