Estoy experimentando algunos problemas al probar un bus I2C problemático en el osciloscopio.
Queremos conectar varios TLV493D-A1B6 con un STM32L4 (también estamos trabajando en STM32F4 y tenemos los mismos problemas).
El STM32L4 tiene 4 bus I2C FM + (1Mbit / s). Queremos utilizar 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 conectar más sensores (es decir, 4 sensores en 4 bus o incluso 1 sensor en 3 bus y 2 sensores en el 4to bus). Algunos buses comienzan y continúan trabajando, otros no comienzan, otros comienzan y se detienen después de unos segundos, estos comportamientos son aleatorios.
Mientras probaba el bus en el osciloscopio, me di cuenta de lo que parece ser un sonido pesado cuando SCL (o SDA) pasa de ALTO a BAJO y me pregunto si puede ser la fuente del problema. Aquí puedes ver este timbre en la línea SCL:
Como puede observar, el timbre parece ser menos importante en la segunda imagen. Se tomó el día después de la primera, en una sala separada (salida diferente para el osciloscopio) y mientras 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 a 2,2 kOhms. La reducción del valor parece mejorar un poco, pero el tiempo se ha verificado y 1,2k parece correcto).
-
Terminación: se han usado resistores de la 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 atraviesan cables relativamente cortos y una placa de pan. La capacidad ha sido verificada y aparentemente no es la fuente de nuestro problema.
No soy el responsable del firmware, pero sí sé que estamos usando DMA en la MCU para tener 4 I2C FM + funcionando al mismo tiempo.
Algunas ideas que tuvimos pero no podemos aclararlas:
- El número creciente de sensores es responsable del uso excesivo de la fuente de alimentación.
- El timbre proviene de un mal sondeo y no se produce cuando no se sondean las señales. Se ha observado que sondear la señal generalmente conduce a peores resultados.
¿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 intentamos ir más lejos, el objetivo es 12-16 Sensores en el bus 4.
PD: no puedo publicar un esquema de nuestra configuración en este momento, pero editaré mi publicación tan pronto como pueda.