Estoy diseñando una placa con un MCU stm32f722 (versión de 64 pines) y no puedo permitirme desperdiciar/no usar ningún GPIO.
Mi pregunta es la siguiente : ¿Existe una opción para usar solo el pin Rx de un uart / usart para que el pin Tx se pueda usar para otra cosa (en mi caso, SPI_SCK)?
Si habilito un uart / usart en STM32CubeMx y voy a la pestaña "Configuración", puedo cambiar "Dirección de datos" a "Solo recibir". Pero esto no deshabilita el Tx-pin.
Otra forma puede ser usar el modo semidúplex, pero de todos modos se usaría el pin Tx y no podría usarlo para SPI.
Nota: todavía estoy planeando mi propia placa y no tengo ningún hardware para probar.
Sin estudiar la hoja de especificaciones de su parte en particular, sería inusual que le permitiera esa flexibilidad. Aunque según el comentario de Bence, este podría.
Sin embargo, eso no significa que no puedas compartir pines para diferentes funciones.
La clave aquí es dedicar algún pin, o una cantidad de pines, para permitir que los circuitos externos, multiplexores, puertas, etc. comprendan cómo el dispositivo está usando los pines actualmente. Parece que significa atar un par de pines más, pero si tiene suficientes pines que puede compartir, la cantidad total de pines se puede reducir.
En el caso de las líneas seriales, por supuesto necesitarías multiplexarlas en el tiempo. Es decir, no podría realizar la comunicación en serie al mismo tiempo que usaba los pines para las otras funciones.
Tendría que consultar la hoja de datos para ver si se admite un modo semidúplex usando solo el pin de recepción; por ejemplo, podría tener mala suerte y descubrir que se ofrece uno pero usa el pin de transmisión.
Sin embargo, hay una solución que definitivamente funcionaría.
Configure el pin de transmisión para la función no USART para la que desea usarlo, ya que STM32 permite la asignación única de cualquier pin, independientemente de los demás.
Configure el pin RX para la función alternativa de recepción de USART
Cuando desee transmitir, reconfigure el pin RX como GPIO y golpee la señal. La transmisión de bits es quizás más limpia que tener que recibir muestras de bits de todos modos, ya que puede continuar usando la interrupción de recepción de USART siempre que reconfigure el pin a tiempo.
Una cosa que tendrá que averiguar es qué sucede con el USART mientras está transmitiendo un bit bang; no estoy seguro de si recibirá sus propias transmisiones o no, o si incluso entrará en un estado de error, pero puede borrar las banderas cuando vuelves al modo de recepción.
Spehro Pefhany
Bence Kaulics
viejo contador de tiempo