controlador USART hecho a mano STM32

2

Diseñé una nueva tarjeta electrónica que tiene un microcontrolador STM32F4. Cada periférico excepto el módulo wifi funciona. Se supone que el módulo Wifi se comunica con el controlador a través del canal USART pero no pude conectar los pines RX / TX a un módulo USARTx del controlador. Así que en resumen, los pines RX / TX están conectados a pines GPIO simples por error. No quiero modificar la tarjeta electrónica y hacerla reproducida, me costará mucho.

La pregunta es: ¿puedo escribir un controlador USART casero para un microcontrolador STM32F4 para comunicarme con el módulo Wifi utilizando 2 GPIO (1 para RX y 1 para TX)? Lo hice hace muchos años para I2C, pero no estoy seguro de que sea posible para USART.

    
pregunta sanchop22

1 respuesta

2

Funcionando a 168 MHz, tendría 1458 ciclos de reloj entre dos bits consecutivos a 115200 bps, lo que parece ser suficiente para el procesamiento, pero un poco ajustado para la precisión de salida, vea a continuación.

La salida es directa si tiene un temporizador libre, configúrelo para generar una interrupción en la frecuencia de la tasa de bits y cambie el bit de inicio, los bits de datos y el bit de parada en la rutina de interrupción. Esta interrupción debe tener la prioridad más alta posible para lograr un 5% de precisión, que es solo de 72 ciclos. Coloque su pila y las variables relevantes en la memoria de CCM, la tabla de vectores y la rutina de interrupción en la SRAM interna, y desactive el guardado de registros de punto flotante para minimizar la latencia de interrupción. Lea las estas preguntas frecuentes sobre ARM para ver las implicaciones.

Si su pin RX se puede asignar a una entrada de temporizador, haga eso. Puede programar el temporizador para generar una interrupción en ambos bordes, se puede filtrar por hardware y obtiene una marca de tiempo almacenada en el registro de captura, por lo que puede determinar la hora exacta en que llegó el borde, incluso cuando la interrupción se retrasa. bit.

    
respondido por el berendi

Lea otras preguntas en las etiquetas