¿Existe realmente un error por el cual el I2C de stm8 no funciona? A veces puedo usar las banderas del depurador, a veces me quedo atascado en un bucle infinito.
Dirección: /web/en/resource/technical/document/errata_sheet/. CD00237242.pdf
Página 13
while(I2C_GetFlagStatus(I2C_FLAG_BUSBUSY)); Bloqueado porque el bus está ocupado, puede ser interferencia, puede ser un error de operación, puede ser que la mitad de los datos I2C del dispositivo externo se lee y se reinicia, lo que hace que el dispositivo externo baje todo el SDA. Consulte el manual para conocer métodos específicos. Pero el bloqueo del bus no parece tener mucho que ver con el error I2C. Puede ser que el diseño de I2C sea demasiado complejo y los programadores pasaron por alto algunos detalles, lo que provocó un bloqueo. Este error se debe principalmente a que los datos no se leen o escriben a tiempo, lo que genera datos de lectura/escritura incorrectos.
Puedes seguir las instrucciones del manual.