¿Por qué RS-232 necesita un bit de parada? [duplicar]

14

Esto puede ser obvio, pero no entiendo por qué RS-232 necesita un bit de parada. Entiendo que el bit de inicio es necesario para notificar al otro extremo el comienzo de una transmisión.

Digamos que nos estamos comunicando a 9600BPS. Vamos de alto a bajo, para que el receptor sepa que algo viene. El receptor también sabe que estamos a 9600BPS y que recibirá 7 bits de datos en total.

Entonces, después de recibir 7 bits, la transmisión terminará. Ya que podemos determinar el final de la transmisión solo por cálculo, ¿por qué también necesitamos un bit de parada?

    
pregunta Utku

3 respuestas

28

Lo que hay que recordar es que RS232 es un protocolo asíncrono. No hay ninguna señal de reloj asociada con él.

Figura1.Puntosdemuestreodelreceptor.Fuente: Sangoma .

El bit de inicio se utiliza para activar el ciclo de lectura en el receptor. El receptor se sincroniza en el bit de inicio y luego espera 1.5 ciclos para iniciar el muestreo de bits. A continuación, los bits se muestrean a la velocidad de transmisión. Este retraso inicial significa que, incluso con un error de 5% en el reloj, el receptor debería estar dentro de la temporización de bits para el último bit.

Dado que el bit de inicio, que se muestra bajo en la Figura 1, se identifica con un flanco descendente, debe ir precedido por un alto y esto es lo que garantiza el bit de parada. La alternativa sería dos bits de inicio y sin bits de parada, pero no cambiaría la longitud total del mensaje.

El artículo vinculado tiene algunos otros puntos que vale la pena mencionar.

    
respondido por el Transistor
5

RS-232 no lo requiere; algunos dispositivos de RS-232 en particular, las interfaces seriales / RS-232 en las computadoras a menudo son RS-232 con UART (receptor / transmisor asincrónico universal) que admite solo la transmisión asíncrona .

En su apogeo, RS-232 se usaba comúnmente para protocolos de red como 'bisync' (BSC), SNA / SDLC, X.25 / LAPB y DECnet / HDLC, que utilizaban la transmisión síncrona de un 'marco' o 'bloque', por lo general hasta varios cientos de octetos, continuo (sin bits de inicio o parada) desde un marcador inicial hasta un marcador final. Los tres últimos utilizaron relleno de bits (transparente al software en cualquiera de los extremos) en parte para asegurar suficientes transiciones para mantener la sincronización a nivel de bits independientemente de los datos. Los chips UART (solo async) y USART (sync y async) estaban disponibles, pero los primeros eran más baratos y de uso más común.

En la década de 1990, casi todos, si no todos, los usos sincrónicos de RS-232 fueron reemplazados por Ethernet local (y luego por Ethernet 802.11) o Token-Ring (ahora en su mayoría, pero ahora un competidor serio) y RDSI T-1 remota o Frame Relay, mientras que algunas conexiones que eran asíncronas de forma natural o convencional (como las impresoras matriciales de puntos de bajo costo) permanecieron, por lo que los diseñadores de computadoras utilizaron una interfaz serial más barata asíncrona (o en los últimos años ninguna).

    
respondido por el dave_thompson_085
0

¿Qué tan exactamente estás produciendo 9600 baudios? O más al punto, cuando llegas a 115.2 kbaud, ¿con qué precisión estás haciendo eso? ¿Y su equipo transmisor es capaz de cualquier otra frecuencia, porque si lo es, el receptor necesita manejarlo?

Un bit de parada mitiga el problema. El receptor sabe que desde el borde descendente del bit de inicio, cuenta con 1 bit de inicio y 7 bits de datos (en su ejemplo), y el noveno bit siempre debe ser alto. Si no es así, el transmisor no debe estar transmitiendo a la frecuencia correcta, y sabemos que no tenemos una buena conexión.

Claramente eso no es perfecto, si los últimos bits son altos, pero es un comienzo. La detección de errores nunca es perfecta, y siempre es solo un caso de tratar de detectar los problemas más comunes, la mayoría de las veces. Su protocolo puede ayudar con esto, asegurando que cualquier mensaje de "ping" para establecer la sesión incluya (o idealmente comience con) un byte cero.

    
respondido por el Graham

Lea otras preguntas en las etiquetas