Tengo un problema con una comunicación I2C y quiero que me preguntes si hay una solución mejor que la mía.
Estoy programando un STM32F103 en este momento. Hay un sensor (MPU6050) que está conectado a través de I2C al STM32. Reconocí que si reinicio el STM32 varias veces, el STM32 se atasca (o se produce un error de tiempo de espera) durante la inicialización del I2C. El error de tiempo de espera fue durante la espera de la bandera ocupada. Así que la comunicación I2C fue "ocupada". El MPU6050 es el único otro dispositivo I2C (esclavo).
En mi opinión, hay un error, porque estaba leyendo un registro del MPU6050 cuando reinicié el STM32. Así que el MPU6050 nunca obtiene la condición de parada.
No sé cómo restablecer la conexión I2C, cuando el bus está "ocupado" (por el MPU6050). Así que mi solución sería hacer un reinicio de hardware con una puerta de transmisión del MPU6050. ¿Hay tal vez una solución de software más simple?
Gracias por la ayuda.