Estoy usando el modo ráfaga para leer 14 bytes de un sensor a través de I2C que se ejecuta a 400 KHz. El problema es que hay errores periódicos en el último byte del paquete, que vienen aproximadamente cada 8 lecturas. El problema parece estar relacionado específicamente con el último byte, ya que una solución actual es simplemente solicitar 15 bytes en lugar de 14 (hay registros después de los que me interesan, por lo que funciona bien).
¿Qué podría causar esto? Un par de cosas de las que no estoy seguro:
-
las resistencias pull-up son 4.7K. Sé que esto está en el umbral de tamaño para 400KHz, pero el cambio a resistencias más pequeñas no parece tener un impacto (probado 3.3, 2.5 y 1.5)
-
Hay lo que parecen ser irregularidades en la línea del reloj (ver la captura de pantalla adjunta del analizador lógico). No estoy seguro de si eso es algo o no, pero esperaría que una línea de reloj sea ... bueno, regular.
Estoy usando el controlador I2C de hardware en un chip STM32.
salida de LA: