Uart Full Duplex vs Half Duplex

1

Cuando uC1 quiere hablar con uC2 a través de uart, la Tx de uC1 se conecta a Rx de uC2 y viceversa. Half dúplex indica que solo 1 uC puede usar la línea de comunicación a la vez y Full dúplex declara que ambos uC pueden usar la línea al mismo tiempo. Las conexiones de pines Tx y Rx siguen siendo las mismas para ambos métodos de impresión a doble cara, pero ¿cómo son posibles 2 escenarios diferentes? ¿La presencia de búferes separados para tx y rx determina la duplicación de dúplex o son necesarias conexiones especiales de IC y pin? Estoy confundido porque estoy trabajando en un sistema donde 2 uC se comunican entre sí y ambos pueden enviar datos en cualquier momento a través de un uart común conectado a ambos (uC1 = UART1, uC2 = UART1). Esto me ayudará a decidir si la prioridad entre los 2 uC es necesaria o no (es decir, obligarlos a trabajar en half duplex, porque se usará ACK / NACK para los mensajes enviados a través de uart, y si ambos pueden enviar en cualquier momento, hay posibilidades de mala interpretación / corrupción de los datos (es decir, uC1 está esperando ACK de uC2 en su búfer rx, pero uC2 está enviando un mensaje y no un ACK para el mensaje recibido)).

  

Actualizar

Estoy usando 2 LPC1778, donde UART1 TX de uC1 está conectado a UART1 RX de uC2 y UART1 RX de uC1 está conectado a UART1 TX de uC2. Ambos uC pueden enviar datos en cualquier momento de forma simultánea (dúplex completo) y no se utilizarán transceptores (comunicación directa de uC-uC). Los uC tienen registros de cambio de Tx y Rx separados. Cuando uC1 es Tx'ng, los datos van a uC2 Rx FIFO. Si uC2 transmite, los datos irán a uC1 Rx FIFO. Entonces, si ambos envían uC, no habrá ninguna colisión, ¿verdad?

    

3 respuestas

5

Simplex, half duplex y full duplex se muestran a continuación: -

Half dúplex puede usar cables de transmisión separados y transmisores de derecha o usar algún tipo de hardware para permitir transmisiones no simultáneas a la izquierda o a la derecha en un cable compartido (más tierra).

Full duplex puede parecerse a half duplex en términos de cables, pero el hardware en ambos extremos puede manejar la transmisión y recepción simultáneas.

    
respondido por el Andy aka
1

Para la señalización eléctrica, cuente la cantidad de cables y reste uno para el cable de tierra. ¿Cuántos quedan?

Comenzó a hablar sobre el sistema de 2 cables: uno de tx1 a rx2, otro de tx2 a rx1. Esta es una configuración estándar de dúplex completo.

La otra opción tiene un solo cable: half duplex. Si el cable único está conectado a tx1, el otro extremo TIENE QUE conectarse a rx2 o perderá datos. De manera similar, si el cable único está en rx1, el otro extremo TIENE QUE saberlo para cambiar el cable a Tx2 (y enviar datos)

El dúplex completo es más rápido y sencillo, pero necesita más cables. Half dúplex utiliza menos cables, PERO necesita un protocolo en cada extremo para saber cuándo cambiar entre el envío y la recepción.

Para obtener más detalles, puede buscar "detección de colisiones" en las redes. Es un protocolo para determinar quién habla y quién escucha. Otro protocolo es el "paso de token" en redes en anillo.

Actualizar Estoy leyendo tu sección acerca de conectar 2 chips de uC. Sí, estos chips deberían ser capaces de funcionar en dúplex completo. Sin embargo ...

Usted está enviando datos, en ambos sentidos, Y esperando respuestas ACK / NACK. Regresamos al manejo del protocolo, como HDLC o DDCMP . Necesita enviar datos en alguna forma de "paquete". Cada paquete contiene un número de referencia.

Ejemplo: uC1 envía el paquete # 101, luego # 102 y luego # 103. Al mismo tiempo , uC2 está enviando paquetes # 201, luego # 202, etc.

Después de enviar el paquete # 103, la configuración del control en uC1 comienza a mirar los paquetes desde uC2, buscando un "# 101 ACK / NACK". Si no puede ver ese mensaje, eventualmente el sistema asumirá que el paquete # 101 nunca se recibió - y envía el paquete # 101 nuevamente.

Si uC2 logra devolver un # 101 ACK, entonces uC1 sabe que debe continuar enviando el paquete # 104 (al mismo tiempo que busca el # 102 ACK / NACK).

    
respondido por el Alan Campbell
0

Por lo general, los bloques del transmisor y el receptor en un uC están diseñados para funcionar de manera independiente. No sé de qué tipo de comunicación dúplex está hablando. Si se trata de la implementación a nivel de usuario / software, el programa de usuario debe enmascarar su tx o esperar a que se complete la recepción. De lo contrario, debería haber algún modo (dúplex completo) en la unidad central para hacer esto automáticamente, es decir, la unidad uC enviará sus datos después de la recepción, incluso aunque active la función tx mientras la recepción está en curso.

Espero que esto te haya hecho entender el concepto. La próxima vez que alguien haga este tipo de pregunta, ¿debería encontrar la arquitectura (8051 / Arm / PIC)? en la pregunta ...

No habrá ninguna colisión

    
respondido por el bharath kumar Chowdary

Lea otras preguntas en las etiquetas