Red de conocimiento informático - Problemas con los teléfonos móviles - ¿Es el hardware I2C STM32 un problema?

¿Es el hardware I2C STM32 un problema?

1. El CLK del hardware I2C funciona a 50 kHz o menos y no se atascará bajo ninguna circunstancia.

2. El CLK del hardware I2C funciona a los 100 kHz y 400 KHz comúnmente utilizados. Hay un 99% de probabilidad de que se atasque en una hora, o incluso solo durante decenas de segundos.

3. El CLK del hardware I2C funciona en cualquier frecuencia Al leer o enviar datos, no se permite que otros eventos de interrupción interrumpan su trabajo, de lo contrario definitivamente se atascará. tiempo.

En resumen, la condición de funcionamiento estable del hardware I2C es: trabajar a 50 kHz o menos, y garantizar que no haya otras interrupciones que interrumpan su trabajo. Esto solo es adecuado para ciertos lugares que no tienen requisitos de alta velocidad, como la lectura de EEPROM, pero no se puede usar para dispositivos de alta velocidad como ciertos tipos de chips AD.

Si necesita alta velocidad (400 KHz), se recomienda utilizar GD32 (GigaDevice), una alternativa a STM32. Es totalmente compatible con STM32 pero resuelve el error de hardware I2C de STM32. Pruebas reales, trabajando a 400 KHz, no se produjeron errores durante 48 horas. Pero aún es necesario señalar que ninguna interrupción externa puede interrumpir el trabajo de I2C.

En cuanto al I2C recomendado por ST Company para funcionar en DMA y la interrupción de mayor prioridad, puedes usarlo según tu propia situación, porque si usas ucos ii u otro sistema operativo en tiempo real, entonces esta configuración es la más alta. Definitivamente no se recomienda el enfoque de prioridad. Si es un programa básico y la cantidad de tareas no es grande, puede considerar este método de interrupción DMA; de lo contrario, definitivamente ocurrirán problemas. Es solo una cuestión de duración de la prueba.

Lo último que hay que explicar es:

(1) Lo anterior solo considera el código I2C de hardware más puro. Para algunos métodos que utilizan software para compensar, como cuando el. La computadora a menudo se atasca. Las configuraciones parciales para el tiempo de espera de salida están fuera del alcance de este artículo, porque esto ha destruido el protocolo I2C normal.

(2) Dado que el nivel más alto de uso de STM32 es usar interrupciones para programar tareas en lugar de bucles de espera interminables, y el hardware I2C es muy tabú contra las interrupciones, a medida que mejore su programación y comprensión del sistema operativo. A medida que mejora el rendimiento, sentirá cada vez más que el hardware STM32 I2C es un peligro.

Por lo tanto, el hardware I2C de STM32 es realmente un problema y el entorno para el funcionamiento normal es muy exigente.