Comunicación TART / Rx UART entre 2 MCU en 1 línea

5

Estoy tratando de establecer comunicación entre 2 MCU usando TX / RX en 1 línea. Por favor refiérase a la imagen.

Preguntas:

  1. ¿Funcionará esto? Habrá un eco seguro.

    Si la MCU 1 envía una señal "123", la MCU 1 y la MCU 2 recibirán "123" al mismo tiempo.

    Si MCU 2 envía una señal "678", MCU 2 y MCU 1 recibirán "678" al mismo tiempo.

    ¿Es correcto este supuesto?

  2. A largo plazo, ¿dañará la MCU?

Gracias.

    
pregunta Daniel

2 respuestas

12

Si bien la suposición de cómo funciona el RX es correcta, se debe tener cuidado con los dos TX que conducen la misma línea. Desea al menos amortiguar el TX con un diodo inverso y una resistencia de pull-up, como esto:

HaceralgocomoestonoesnadanuevoyhaymuchasreferenciasenInternet.Estaconfiguraciónrealmenteseráútilparaayudaradetectarerroresdetransmisión,yaqueeltransmisortambiénrecibelosdatosdelbuclederetorno.

EsposiblequedeseebuscaralgunascosasenInternet,como esto y esto .

    
respondido por el sybreon
1

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.
respondido por el Potion

Lea otras preguntas en las etiquetas