Tengo un STM32F411 que se comunica con 2 periféricos (un IMU - MPU6050 de Invensense y un controlador de LED - CAT3626 de ON Semi) a través de sus 2 buses I2C (uno periférico por bus).
Tengo un problema extraño: si intento acceder a los registros en los dos dispositivos demasiado rápido, los periféricos finalmente dejan de responder. No hay ningún fallo grave: para el microcontrolador es como si el dispositivo ya no estuviera conectado.
Originalmente pensé que era un problema con el periférico, sin embargo, en una investigación más profunda parece que los periféricos no son un problema, ya que si reinicio el bus I2C en el STM32F411, puedo comunicarme con los periféricos nuevamente.
Agregar un tiempo de espera para garantizar que solo sondaje los registros de cada dispositivo cada 100 ms ha ayudado a reducir la frecuencia del problema, pero sigue apareciendo de vez en cuando. No me atrevo a aumentar la demora, ya que 100 ms ya parece un largo tiempo y ya no corro el riesgo de perder muestras críticas de la IMU.
Estoy buscando otras soluciones (una interrupción del temporizador para muestrear la IMU, por lo que tenemos los retrasos más prolongados), pero no hay garantía de que funcionen. Prefiero dedicar más tiempo a comprender la causa raíz primero, pero no tengo más ideas sobre dónde buscar.
¿Alguna idea?