Comunicación serie MCU

Conocimientos básicos de la comunicación serie

Conceptos básicos de la comunicación serie

1.

2. ¿Qué es RS-232?

3. ¿Qué es RS-422?

4. ¿Qué es RS-485?

5. ¿Qué es un apretón de manos?

1. ¿Qué es un puerto serie?

El puerto serie es un protocolo de comunicación con un dispositivo muy común en un ordenador (no confundir con el Universal Serial Bus o USB). La mayoría de las computadoras contienen dos puertos serie basados ​​en RS232. El puerto serie también es un protocolo de comunicación común para equipos de instrumentación; muchos dispositivos compatibles con GPIB también tienen puertos RS-232. Al mismo tiempo, el protocolo de comunicación en serie también se puede utilizar para obtener datos de dispositivos de recopilación remota.

El concepto de comunicación serie es muy simple. El puerto serie envía y recibe bytes bit a bit. Aunque es más lento que la comunicación paralela byte a byte, un puerto serie puede enviar datos por un cable mientras recibe datos por otro. Es sencillo y permite la comunicación a largas distancias. Por ejemplo, cuando IEEE488 define el estado de comunicación paralela, estipula que la línea total del equipo no debe exceder los 20 metros y la longitud entre dos dispositivos no debe exceder los 2 metros para los puertos serie, la longitud puede ser de hasta 1200 metros;

Normalmente, el puerto serie se utiliza para la transmisión de caracteres de código ASCII. La comunicación se realiza mediante 3 cables: (1) tierra, (2) transmisión, (3) recepción. Debido a que la comunicación serie es asíncrona, un puerto puede enviar datos en una línea mientras recibe datos en otra línea. Las otras líneas se utilizan para el apretón de manos, pero no son obligatorias. Los parámetros más importantes de la comunicación serie son la velocidad en baudios, los bits de datos, los bits de parada y la paridad. Para que dos puertos se comuniquen, estos parámetros deben coincidir:

a. Velocidad de transmisión: este es un parámetro que mide la velocidad de comunicación. Representa el número de bits transmitidos por segundo. Por ejemplo, 300 baudios significa enviar 300 bits por segundo. Cuando nos referimos al período del reloj, nos referimos a la velocidad en baudios. Por ejemplo, si el protocolo requiere una velocidad de 4800 baudios, entonces el reloj es de 4800 Hz. Esto significa que la frecuencia de muestreo de la comunicación serie en la línea de datos es de 4800 Hz. Las velocidades de baudios comunes para las líneas telefónicas son 14400, 28800 y 36600. Las velocidades en baudios pueden ser mucho mayores que estos valores, pero la velocidad en baudios es inversamente proporcional a la distancia. A menudo se utilizan velocidades de transmisión altas para la comunicación entre instrumentos que están colocados muy cerca uno del otro. Un ejemplo típico es la comunicación de dispositivos GPIB.

b, Bits de datos: Este es un parámetro que mide los bits de datos reales en la comunicación. Cuando una computadora envía un paquete, los datos reales no son de 8 bits; los valores estándar son de 5, 7 y 8 bits. La forma de configurar esto depende de la información que desee enviar. Por ejemplo, el código ASCII estándar es 0~127 (7 bits). El código ASCII extendido es 0~255 (8 bits). Si los datos utilizan texto simple (código ASCII estándar), entonces se utilizan 7 bits de datos por paquete. Cada paquete hace referencia a un byte, incluidos bits de inicio/parada, bits de datos y bits de paridad. Dado que los bits de datos reales dependen del protocolo de comunicación elegido, el término "paquete" se refiere a cualquier situación de comunicación.

c, bit de parada: se utiliza para representar el último bit de un único paquete. Los valores típicos son 1, 1,5 y 2 bits. Dado que los datos se cronometran en la línea de transmisión y cada dispositivo tiene su propio reloj, es posible que se produzca una pequeña desincronización entre los dos dispositivos durante la comunicación. Por lo tanto, el bit de parada no sólo indica el final de la transferencia, sino que también brinda al ordenador la oportunidad de corregir la sincronización del reloj. Cuantos más bits haya disponibles para los bits de parada, mayor será la tolerancia para diferentes sincronizaciones de reloj, pero al mismo tiempo más lenta será la velocidad de transferencia de datos.

d, bit de paridad: un método sencillo de detección de errores en comunicación serie. Hay cuatro modos de detección de errores: par, impar, alto y bajo. Por supuesto, también es posible no tener dígito de control. Para paridad par e impar, el puerto serie establecerá el bit de paridad (un bit después del bit de datos), utilizando un valor para garantizar que los datos transmitidos tengan bits lógicos altos pares o impares. Por ejemplo, si los datos son 011, entonces para paridad par, el bit de paridad es 0, lo que garantiza que el número de bits lógicamente altos sea par. Si se trata de una paridad impar, el bit de paridad se establece en 1, por lo que hay 3 bits lógicos altos. Los bits alto y bajo en realidad no verifican los datos, simplemente establecen la lógica alta o baja para la verificación. Esto permite que el dispositivo receptor conozca el estado de un bit y tenga la oportunidad de determinar si hay ruido que interfiere con la comunicación o si los datos transmitidos y recibidos no están sincronizados.

2. ¿Qué es RS-232?

RS-232 (estándar ANSI/EIA-232) es el estándar de conexión serie en IBM-PC y sus máquinas compatibles. Se puede utilizar para muchos propósitos, como conectar un mouse, una impresora o un módem, y también se puede conectar a instrumentos industriales. Para mejorar la conducción y el cableado, la longitud o velocidad de transmisión de RS-232 en aplicaciones prácticas a menudo supera el valor estándar. RS-232 se limita a la comunicación punto a punto entre el puerto serie de la PC y el dispositivo. La distancia máxima para la comunicación serial RS-232 es de 50 pies.

Conector DB-9 pines

-------------

\ 1 2 3 4 5 /

\ 6 7 8 9 /

-------

La sección transversal de la línea conectada desde la computadora.

Función de los pines RS-232:

Datos:

TXD (pin 3): salida de datos del puerto serie

RXD (pin 3): 2 ): Entrada de datos del puerto serie

Apretón de manos:

RTS (pin 7): Enviar solicitud de datos

CTS (pin 8): Borrar para enviar

DSR (pin 6): Transmisión de datos listo

DCD (pin 1): Detección de soporte de datos

DTR (pin 4): Terminal de datos listo

Cable de tierra:

GND (pin 5): Cable de tierra

Otros

RI (pin 9): Indicación de timbre

3, ¿Qué es RS-422?

RS-422 (Estándar EIA RS-422-A) es el estándar de conexión de puerto serie para los ordenadores Macintosh de Apple. RS-422 utiliza señales diferenciales y RS-232 utiliza señales con una tierra de referencia desequilibrada. La transmisión diferencial utiliza dos cables para enviar y recibir señales. En comparación con RS-232, tiene mejor inmunidad al ruido y una distancia de transmisión más larga. Una mejor inmunidad al ruido y distancias de transmisión más largas son una gran ventaja en entornos industriales.

4. ¿Qué es RS-485?

RS-485 (estándar EIA-485) es una mejora de RS-422 porque aumenta el número de dispositivos de 10 a 32 y define el número máximo de características eléctricas para garantizar un voltaje de señal suficiente. Con la capacidad de múltiples dispositivos, puede crear una red de dispositivos usando un único puerto RS-422. Con excelente inmunidad al ruido y capacidades multidispositivo, al establecer una red de dispositivos distribuidos conectados a PC, otros controladores de recopilación de datos, HMI u otras operaciones en aplicaciones industriales, RS-485 es la conexión serie preferida. RS-485 es un superconjunto de RS-422, por lo que todos los dispositivos RS-422 pueden controlarse mediante RS-485. RS-485 puede utilizar más de 4000 pies de cable para comunicación en serie.

Conexión DB-9 pines

-------------

\ 1 2 3 4 5 /

\ 6 7 8 9 /

-------

La sección transversal de la línea conectada desde la computadora.

Las funciones de los pines RS-485 y RS-422

Datos: TXD+ (pin 8), TXD- (pin 9), RXD+ (pin 4), RXD- (pin 5)

Apretón de manos: RTS+ (pin 3), RTS- (pin 7), CTS+ (pin 2), CTS- (pin 6)

Tierra: GND (pin 1)

5. ¿Qué es un apretón de manos?

El canal RS-232 permite una conexión sencilla de tres cables: Tx, Rx y tierra. Pero para la transmisión de datos, ambas partes deben utilizar la misma velocidad en baudios para la sincronización de datos. Aunque este método es suficiente para la mayoría de las aplicaciones, su uso es limitado en situaciones en las que el receptor está sobrecargado. En este momento, se necesita la función de protocolo de enlace del puerto serie. En esta sección, analizamos las tres formas más comunes de protocolo de enlace RS-232: protocolo de enlace de software, protocolo de enlace de hardware y Xmodem.

a. Protocolo de enlace de software: el primer tipo de protocolo de enlace que analizamos es el protocolo de enlace de software. Generalmente se usa cuando los datos reales son caracteres de control, similar a cómo GPIB usa cadenas de comando. Todavía quedan tres líneas necesarias: Tx, Rx y cable de tierra. Debido a que los caracteres de control en la línea de transmisión no son diferentes de los caracteres comunes, la función SetXModem permite al usuario habilitar o deshabilitar el uso de los dos caracteres de control XON y OXFF. Estos caracteres son enviados por el receptor en una comunicación para hacer que el remitente haga una pausa.

Por ejemplo: supongamos que el remitente envía datos a una alta velocidad en baudios. Durante la transmisión, el receptor descubre que el búfer de entrada está lleno porque la CPU está ocupada con otro trabajo. Para detener temporalmente la transmisión, el receptor envía XOFF, un valor típico es 19 decimal o 13 hexadecimal, hasta que el búfer de entrada esté vacío. Una vez que el receptor está listo para recibir, envía XON, un valor típico es 17 decimal, que es 11 hexadecimal, para continuar la comunicación. Cuando el buffer de entrada está medio lleno, LabWindows envía XOFF. Además, si se interrumpe la transferencia XOFF, LabWindows enviará XOFF cuando el buffer alcance el 75% y el 90%. Obviamente, el remitente debe seguir este código para garantizar que la transmisión continúe.

b.Apretón de enlace de hardware: el segundo es utilizar el protocolo de enlace de línea de hardware. Al igual que las líneas Tx y Rx, RTS/CTS y DTR/DSR funcionan juntas, una como salida y la otra como entrada.

El primer conjunto de líneas es RTS (Solicitud de envío) y CTS (Borrar para enviar). Cuando el receptor está listo para recibir datos, establece la línea RTS en alto para indicar que está listo. Si el remitente también está listo, establece CTS en alto para indicar que está a punto de enviar datos. Otro conjunto de líneas es DTR (Data Terminal Ready) y DSR (Data Set Ready). Actualmente se utilizan principalmente para comunicaciones por módem. Permite que el puerto serie y el módem comuniquen su estado. Por ejemplo: cuando el módem está listo para recibir datos de la PC, configura la línea DTR en alto para indicar que se ha establecido la conexión a la línea telefónica. La línea de lectura DSR está configurada en alto y la PC comienza a enviar datos. Una regla simple es que DTR/DSR se usa para indicar que el sistema está listo para la comunicación, mientras que RTS/CTS se usa para la transmisión de un solo paquete de datos.

En LabWindows, la función SetCTSMode habilita o deshabilita el uso del protocolo de enlace de hardware. Si el modo CTS está habilitado, LabWindows usa las siguientes reglas:

Cuando la PC envía datos:

La biblioteca RS-232 debe detectar la línea CTS alta antes de poder enviar datos.

Cuando la PC recibe datos:

Si el puerto está abierto y la cola de entrada está libre para recibir datos, la función de biblioteca establece RTS y DTR en alto.

Si la cola de entrada está llena al 90%, la función de biblioteca establece RTS bajo pero mantiene DTR alto.

Si la cola del puerto está casi vacía, el recuento de llantos establece RTS alto pero deja DRT alto.

Si el puerto está cerrado, la función de biblioteca establece RTS y DTR en nivel bajo.

c, protocolo de enlace XModem: el último protocolo de enlace analizado se denomina protocolo de transferencia de archivos XModem. Este protocolo es muy común en la comunicación por módem. Aunque se utiliza habitualmente en comunicaciones por Módem, el protocolo XModem se puede utilizar directamente en comunicaciones con otros dispositivos que sigan este protocolo. En LabWindows, la aplicación XModem real está oculta para el usuario. Siempre que las PC y otros dispositivos utilicen el protocolo XModem, las funciones XModem de LabWindows se utilizan para la transferencia de archivos. Las funciones son XModemConfig, XModemSend y XModemReceive.

XModem utiliza un protocolo con los siguientes parámetros: start_of_data, end_of_data, neg_ack, wait_delay, start_delay, max_tries, paquete_size. Estos parámetros deben ser reconocidos por ambas partes que se comunican. Estándar XModem tiene una definición estándar: sin embargo, se pueden modificar a través de la función XModemConfig para satisfacer necesidades específicas. El uso de estos parámetros está determinado por el carácter neg_ack enviado por el receptor. Esto notifica al remitente que está listo para recibir datos. Comienza a intentar enviar, con un parámetro de tiempo de espera start_delay; cuando los intentos de tiempo de espera exceden max_ties veces, o se recibe el start_of_data enviado por el receptor, el remitente deja de intentarlo. Si se recibe start_of_data del remitente, el receptor leerá los paquetes de información posteriores. El paquete contiene el número de paquetes, el complemento del número de paquetes como verificación de errores, el tamaño real del paquete en bytes de tamaño de paquete y el valor de verificación de la suma para una verificación adicional de errores. Después de leer los datos, el receptor llama a wait_delay y luego envía una respuesta al remitente. Si el remitente no recibe una respuesta, reenviará el paquete hasta que reciba una respuesta o se exceda el número máximo de retransmisiones max_tries. Si no se recibe respuesta, el remitente notifica al usuario que la transmisión de datos falló.

Dado que los datos deben enviarse en paquetes de bytes de tamaño de paquete, cuando se envía el último paquete de datos, si los datos no son suficientes para llenar un paquete de datos, el código ASCII NULL (0) bytes se completará más adelante. Esto da como resultado que se reciban más datos que los datos originales. Asegúrese de no utilizar XON/XOFF en el caso de XModem, porque es probable que la cantidad de paquetes enviados por el remitente de XModem aumente hasta el valor del carácter de control XON/OFF, lo que provocará fallas de comunicación.