Estoy experimentando algunos problemas al probar un bus I2C problemático en el osciloscopio.
Queremos interconectar varios TLV493D-A1B6, con un STM32L4 (también estamos trabajando en STM32F4 y tenemos los mismos problemas).
El STM32L4 tiene 4 buses I2C FM+ (1Mbit/s). Queremos usar los 4 para comunicarnos con un total de 12-16 sensores, por lo tanto, 3-4 sensores por bus.
Logramos 4 sensores en el mismo bus además de tener 1 sensor en cada uno de los 4 buses.
Sin embargo, no podemos interconectar más sensores (es decir, 4 sensores en 4 buses o incluso 1 sensor en 3 buses y 2 sensores en el 4to bus). Algunos autobuses arrancan y siguen funcionando, otros no arrancan, algunos arrancan y se detienen después de un par de segundos, estos comportamientos son aleatorios.
Mientras probaba el bus en el osciloscopio, noté lo que parece un timbre fuerte cuando SCL (o SDA) pasa de ALTO a BAJO y me pregunto si puede ser la fuente del problema. Aquí puede ver este timbre en la línea SCL:
Como puede notar, el timbre parece ser menos importante en la segunda imagen. Se tomó el día después de la primera, en una habitación separada (diferente salida para el osciloscopio) y mientras que la primera imagen muestra la señal con un sensor en el bus, la segunda muestra la señal con 3 sensores en el bus.
Alguna información sobre el bus I2C:
Frecuencia: 1 Mbit/s
Capacitancia: la capacitancia del bus se ha determinado midiendo el tiempo de subida de las señales. Se ha determinado que un bus tiene una capacitancia que va desde 50 pF para un sensor hasta 100 pF para 3 sensores.
Resistencias pull-up: 1,2 kOhms (se han probado otros valores, que van desde 600 Ohms hasta 2,2 kOhms. Bajando el valor parece mejorar un poco, pero se ha comprobado el tiempo y 1,2k parece correcto).
Terminación: Se han utilizado resistencias en serie de 33 ohmios en cada línea.
Fuente de alimentación: se han probado varios esquemas de fuente de alimentación para los sensores, incluida una fuente de alimentación de banco aislada o la misma fuente de alimentación que la MCU.
Las líneas I2C se ejecutan a través de cables relativamente cortos y placa de pruebas. Se ha verificado la capacidad y aparentemente no es la fuente de nuestro problema.
No soy el responsable del firmware, pero sé que estamos usando DMA en la MCU para tener 4 I2C FM+ funcionando al mismo tiempo.
Algunas ideas que teníamos pero no podemos aclarar:
¿Alguien ya ha experimentado un comportamiento similar con I2C y/o alguien tiene alguna idea para mejorar nuestra configuración?
Una vez más, lo que me suena extraño es que la configuración funciona con 4 sensores en 1 bus, también funciona con 4 sensores en 4 buses diferentes, pero estamos atascados cuando tratamos de ir más allá, el objetivo es 12-16 sensores en el 4 autobuses.
PD: No puedo publicar un esquema de nuestra configuración en este momento, pero editaré mi publicación tan pronto como pueda.
Wow, esa es una forma de onda fea. Retire las resistencias en serie de 33 ohmios. Utilice una mayor resistencia a las dominadas. 1,2k puede parecer correcto, pero el tiempo de subida lento indica que es demasiado alto.
Asegúrese de que haya la menor resistencia posible entre la tierra de cada dispositivo.
Sólo yo
JK
JK
eugenio k
JK