Cuando abro un proyecto en STM32CubeMX y configuro un UART, hay una configuración de velocidad de salida máxima (en Configuración de GPIO ) que por defecto es Muy alta . Las opciones son:
En el Manual de usuario de STM32CubeMX dice lo siguiente sobre la velocidad máxima de salida :
Velocidad de salida máxima de GPIO (solo para periféricos de comunicación)
Está configurada en Baja de forma predeterminada para optimizar el consumo de energía y se puede cambiar a una frecuencia más alta para adaptarse a los requisitos de la aplicación.
Pero en realidad está configurado en "Bajo" solo para GPIO de salida regulares. Para los pines UART TX/RX, en realidad está configurado en Muy alto.
Tengo algunas preguntas con respecto a esto:
La configuración de velocidad de GPIO solo configura la fuerza de la unidad o la capacidad de la cantidad de corriente que el pin puede generar y absorber. Más corriente significa transiciones de señal más rápidas a cargas capacitivas más pesadas.
1) Por ejemplo, conducir una puerta FET que es altamente capacitiva y necesita pasar un tiempo mínimo a mitad de camino
2) Alguien ha elegido estos valores predeterminados a menudo solo porque necesita tener una configuración predeterminada básica que funcione en su mayoría. Usar, digamos, 3 megabaudios con cables largos para depurar UART podría ser más seguro para tener una alta capacidad de manejo, pero hacer parpadear un LED en GPIO una vez por segundo no importa qué configuración se use.
3) Por supuesto, pueden comunicarse si la velocidad de transmisión utilizada es lo suficientemente lenta como para que la velocidad de respuesta de la señal no contribuya mucho al error. La fuerza de la unidad más débil puede funcionar a aproximadamente 2 MHz tal vez, depende de qué MCU se use.
Esto corresponde a la configuración de potencia de la unidad del pin GPIO, configurada por los bits de registro OSPEEDR. Para cada pin, hay 4 configuraciones posibles. Elegir una unidad de salida más fuerte permite una frecuencia operativa máxima más alta (porque las transiciones se hacen más rápido), pero conduce a un mayor consumo de energía cuando el pin cambia y a mayores emisiones de EMI. Menor fuerza significa menor EMI, menor consumo de energía y menor velocidad máxima.
Eche un vistazo a la hoja de datos de la MCU específica que está utilizando para verificar a qué se traduce exactamente esto. Por ejemplo, para STM32F405/407 aquí está (capítulo 5.3.16: Características del puerto de E/S , párrafo Características de CA de entrada/salida ):
Entonces puede ver que incluso en la configuración mínima, en el peor de los casos mencionado, puede esperar 2MHz. Esto es probablemente mucho más alto de lo que ya está configurado su UART, por lo que en realidad no es necesario configurarlo en "muy alto". Probablemente lo hagan de manera predeterminada para estar seguros, pero no tiene su tasa de baudios configurada a 100 Mbps, ¿verdad?
Como consejo general, mantenga esta configuración en "bajo" a menos que sea realmente necesario.
Ahora, por supuesto, dos UART configurados con diferentes configuraciones pueden hablar entre sí (siempre que la tasa de bits sea inferior a la velocidad máxima que el GPIO puede soportar de acuerdo con la tabla anterior y la configuración que eligió). El UART configurado con una configuración más fuerte tendrá una salida mucho más nítida que el otro e irradiará más EMI, pero podrán comunicarse entre sí.
Ala M.
Sólo yo