Es muy común que cualquier MCU moderna tenga pines UART compartidos con pines GPIO. Normalmente, la función principal es GPIO y la función secundaria es UART.
Esto significa que los diodos no son necesarios. Por lo tanto, para implementar un bus de 1 cable mediante UART, considere lo siguiente.
Supongamos que tenemos una MCU con pines A0 y A1:
- La función principal de los pines A0 y A1 es GPIO-0 y GPIO-1, respectivamente.
- La función secundaria para los pines A0 y A1 es UART-TX y UART-RX, respectivamente.
Diseño de software
Configuración inicial (recibir):
- Establezca el Pin A0 en la función GPIO principal (en el modo de entrada de alta impedancia).
- Establezca el Pin A1 en la función secundaria UART-RX.
Para transmitir:
- Establezca el pin A0 en la función secundaria UART-TX.
- Enviar bytestream
- Para cada byte de TX, se recibirá un byte RX. Supongamos que la transmisión ha fallado si no coinciden.
- Establezca el pin A0 de nuevo en la función GPIO principal.
Diseño de hardware
- Inserte una resistencia de 1K en cada pin UART-TX: para protegerse contra un cortocircuito cuando dos o más transmisores envían simultáneamente.
- Inserte una resistencia de pull-up de 100K desde el bus de datos a VCC - para estabilizar el bus cuando nadie está transmitiendo.