Red de conocimiento informático - Problemas con los teléfonos móviles - ¿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.

¿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.

De hecho, hay errores en I2C de stm8. Puede consultar la hoja de erratas oficial, que señala claramente las restricciones de uso de I2C de Stm8

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.