
RS232 es una interfaz común para “transmitir pequeños datos” entre dispositivos, ampliamente utilizada en la comunicación entre microcontroladores y ordenadores, y entre sensores y controladores. Este artículo deja a un lado la terminología compleja y explica con lenguaje sencillo la lógica central de RS232, desde los conceptos básicos, las reglas del protocolo y la optimización personalizada hasta el cableado práctico, paso a paso.
I. Fundamentos de RS232: conceptos y relaciones
1.1 Diferencias entre puerto serie, RS232 y UART
- Puerto serie es una categoría amplia, como las frutas; RS232 y RS485 son variedades concretas dentro del puerto serie, como manzanas y naranjas.
- UART es el modo de funcionamiento del puerto serie (comunicación asíncrona), no necesita una línea de reloj adicional y transmite datos según reglas acordadas; si se añade una línea de reloj, se llama USRT (comunicación síncrona).
- El RS232 del que se habla habitualmente es básicamente modo UART, por eso se suele decir puerto serie ≈ RS232 ≈ UART.
1.2 Ventajas y desventajas de RS232
| Elemento | Descripción |
|---|---|
| Ventajas | Simple y económico; los microcontroladores, ARM y ordenadores normalmente incluyen esta interfaz, sin necesidad de circuitos complejos adicionales. |
| Desventajas | Mala inmunidad a interferencias y distancia de transmisión corta. Transmite datos mediante el voltaje entre TXD y GND (por ejemplo, +12 V representa 0 y -12 V representa 1); por lo general, máximo 15 metros. |
| Conversión de niveles | Internamente, el dispositivo usa niveles TTL (0 V representa 0 y 5 V representa 1); al comunicarse con dispositivos externos, es necesario convertirlos a niveles RS232, para lo cual se suele usar el chip MAX232. |
II. Reglas de comunicación RS232: comunicación asíncrona y estructura de trama
2.1 Los cuatro elementos de la comunicación asíncrona
RS232 es una comunicación asíncrona, sin línea de reloj para sincronización; el receptor identifica los datos válidos mediante el bit de inicio, los bits de datos, el bit de paridad y el bit de parada. Cada byte se transmite junto con estos cuatro elementos:
- Bit de inicio: indica al receptor que va a comenzar la transmisión de datos; normalmente es 1 nivel bajo.
- Bits de datos: el contenido real que se va a transmitir, por ejemplo 8 bits (1 byte), como 0x66 (binario 01100110).
- Bit de paridad: comprueba de forma simple si los datos son correctos, como paridad impar o paridad par. Pero su capacidad de detección de errores es tosca; si se equivocan 2 bits, puede que no se detecte.
- Bit de parada: indica al receptor que este dato ha terminado de transmitirse; normalmente es 1 o 2 niveles altos.
2.2 Problemas comunes y limitaciones
- El bit de paridad tiene poca capacidad de detección de errores; si se transmite mal, no se sabe;
- Si los datos son erróneos, no se puede pedir al otro lado que los retransmita;
- Cuando se conectan varios dispositivos al bus, el maestro no distingue qué dispositivo envió los datos;
- Si no se termina de transmitir el bit de parada, el receptor seguirá esperando, lo que provoca confusión en los datos posteriores.
La solución es “empaquetar los datos en tramas”: una trama contiene varios bytes, cada byte lleva bits de inicio/parada y se añaden segmentos de función adicionales para resolver los problemas anteriores.
III. Protocolo personalizado: empaquetar los datos para mejorar la fiabilidad
3.1 Estructura de trama personalizada
El protocolo personalizado se diseña con una estructura fija según las necesidades reales; los campos comunes son los siguientes:
| Campo | Función | Ejemplo |
|---|---|---|
| Inicio de trama | Marca el inicio de una trama | 0x55 o 0xaa |
| Campo de comando | Define el uso de los datos | Enlace ascendente 0x1d, enlace descendente 0x3a, retransmisión 0xb7, respuesta 0x89 |
| Campo de dirección | Dirección única del dispositivo (opcional) | Dispositivo A 0x0a, Dispositivo B 0x0b |
| Campo de longitud | Indica el número de bytes del campo de datos (opcional) | Puede omitirse cuando la longitud es fija |
| Campo de datos | Los datos de negocio que realmente se transmiten | 0x03+0xa0+0xb0+0xc0 |
| Campo de verificación | Verifica la corrección de los datos | CRC16 ocupa 2 bytes |
3.2 Puntos clave del diseño de campos
- Elegir 0x55 o 0xaa como inicio de trama: en binario 01010101 y 10101010, los 0 y 1 se alternan, y el receptor puede identificar la velocidad en baudios (como 9600 bps, 115200 bps); si se usa 0xff, todo 1, las interferencias externas pueden confundirse fácilmente con una señal de inicio.
- Campo de comando: especifica el uso de los datos, como enlace ascendente, enlace descendente, solicitud de retransmisión o respuesta.
- Campo de dirección: asigna una dirección única a cada dispositivo; cuando el maestro envía datos con una dirección, solo el dispositivo correspondiente los recibe; también se puede establecer la misma dirección para lograr comunicación de uno a muchos.
- Campo de longitud: se usa cuando la longitud de los datos es variable; puede omitirse si es fija.
- Campo de datos: datos de negocio, a menudo incluye el número de datos; por ejemplo, 0x03 indica que siguen 3 datos.
- Campo de verificación: más fiable que el bit de paridad; se suele usar CRC16 y todos los campos excepto el inicio de trama participan en la verificación.
3.3 Ejemplo de trama de datos completa
Para enviar una trama de datos de enlace ascendente al dispositivo con dirección 0x0a, que contiene 3 datos 0xa0, 0xb0 y 0xc0, la trama completa es:
0x55 (inicio de trama) + 0x1d (campo de comando) + 0x0a (campo de dirección) + 0x03 (número de datos) + 0xa0 + 0xb0 + 0xc0 (campo de datos) + 0x53 + 0xfb (verificación CRC16)
3.4 Mecanismo de respuesta y retransmisión
- Si el receptor verifica que los datos son correctos, envía una trama de respuesta (por ejemplo, 0x55+0x89+valor de verificación).
- Si los datos son erróneos, envía una trama de retransmisión (por ejemplo, 0x55+0xb7+valor de verificación) para que el otro lado los vuelva a enviar.
IV. Cableado práctico: tres cables y listo
4.1 Conexión esencial
Para que dos dispositivos se comuniquen por RS232, en esencia solo se necesitan 3 cables:
- TXD (línea de transmisión): el TXD del dispositivo A se conecta al RXD del dispositivo B; no debe invertirse, de lo contrario no se podrán enviar datos.
- RXD (línea de recepción): el RXD del dispositivo B se conecta al TXD del dispositivo A, en correspondencia con lo anterior.
- GND (línea de tierra): ¡debe conectarse! Si no comparten tierra, la diferencia de voltaje reconocida por ambos dispositivos será grande y los datos fluctuarán, por ejemplo, un dato que debería ser 0 se convierte en 1.
4.2 Precauciones
- Antes de cablear, confirme que TXD y RXD estén conectados de forma cruzada;
- La línea de tierra nunca debe omitirse; de lo contrario, la comunicación será inestable;
- En comunicaciones de larga distancia se deben considerar la conversión de niveles y las medidas antiinterferencias.
V. Resumen y extensión
En RS232 u otros protocolos de comunicación, la transmisión de datos se basa básicamente en bytes. Por ejemplo, para transmitir datos de un ADC de 12 bits (rango 0-4095), es necesario dividirlos en dos bytes (rellenando con 0 los bits altos) antes de transmitirlos.
De RS232 a USB y Ethernet, la interfaz física no cambia mucho, pero los protocolos son cada vez más complejos; esto indica que no basta con garantizar la fiabilidad de los datos solo mediante la capa de hardware, sino que también se necesitan mecanismos de verificación, retransmisión, etc., en el protocolo para que los datos se transmitan de forma precisa y estable.
Este artículo hace referencia a parte de contenidos de Internet; si hay infracción, se eliminará previa notificación.