Puerto Serial – protocolo y su teoría

Un puerto Serial es un modulo de comunicación digital para un sistema embebido.Es decir, permite la comunicación entre dos dispositivos digitales. Cuenta con dos conexiones, RX y TX. Lo que nos indica los modos de comunicación que puede manejar, Full-duplex, Duplex y Simplex. Además podemos considerar como su principal ventaja a la sencillez de su protocolo de comunicación. Sin embargo también tiene desventajas como que sólo se puede comunicar a un puerto dos dispositivos.

Full duplex. Significa que puede recibir y enviar información digital simultáneamente.

Duplex o Half-duplex. Es cuando sólo podemos transmitir o recibir información, una cosa a la vez.

Simplex. Cuando sólo podemos ya sea recibir o transmitir.

La función principal de un puerto serial, es la de empacar y des-empacar paquetes de datos binarios seriales. Como resultado, la serialización significa convertir un dato paralelo (byte) a un conjunto de pulsos seriales que puedan ser recibidos y enviados por una línea de transmisión. En primer lugar, el protocolo serial opera mediante tres condiciones digitales básicas: inicio de transmisión (IT), paridad (P) y fin de transmisión (FT). Estas condiciones son sincronizadas mediante un oscilador interno.  El generador permite controlar la velocidad del puerto serial. Por lo tanto, la velocidad se mide en BAUD ‘s. Al modulo serial también se le conoce como UART ó USART o EUSART.

  • UART – Universal Asyncronos Receiver and Transmitter que en español se traduciría como Transceptor Asíncrono.
  • USART – Universal Syncronos and Asyncronos Receiver and Transmitter, que significa en español Transceptor Síncrono y Asíncrono.
  • EUART – Enhanced Universal Asyncronos Receiver and Transmitter ó Transceptor Asíncrono Universal Mejorado.

Nota. Otros puertos seriales incluyen al puerto i2c, puerto spi, puerto USB, puerto CAN en un microcontrolador

Estructura interna y configuración de un puerto serial

Una UART contiene, en su estructura interna, un generador de paridad, registros de corrimiento, oscilador variable (para generar el BAUD), verificadores de las tres condiciones y lógica de control. Por consiguiente, la Figura-1, muestra un diagrama a bloques general para una UART. Un paquete de datos se transmite a través de un registro de corrimiento. Por lo tanto, la velocidad a la que se transmite, esta controlada por el generador de BAUD. La lógica de control se encarga de agregar los bits de Inicio, Paridad y de Fin de transmisión [1]. El proceso de recepción serial es lo opuesto.

Diagrama general de un UART Serial
Diagrama de un puerto serial
Licencia Creative Commons

Figura 1. Estructura general de una UART (Puerto serial). Esta obra está bajo una Licencia Creative Commons Atribución-NoComercial-SinDerivar 4.0 Internacional.

Para configurar al modulo se requiere indicar la velocidad de operación. Los BAUDios que es una medida de cuantos bits por segundo se van a transmitir, se configuran mediante un registro de propósito específico. Dependiendo del lenguaje de programación la configuración puede ser relativamente sencilla. En el caso de Arduino se haría con la instrucción Serial.begin(9600). También es necesario configurar cuantos bits de parada y si habrá o no bit de paridad. Una de las configuraciones más usadas para un puerto serial es:

  • 8 bits de datos
  • 1 bit de parada
  • Sin bit de paridad
  • 1 bit de inicio
  • Velocidad de 9600 BAUD

Para que pueda haber una sincronización de los datos enviados, se requiere que ambos dispositivos que usen el mismo puerto serial, tengan la misma configuración.

Funciones de Arduino para el puerto Serial

Modos de comunicación en el puerto serial

El modo de comunicación para un puerto serial,se refiere a la forma en la que se envían y reciben los paquetes de información. De acuerdo al tipo de conexión, una UART tiene separadas las lineas de transmisión y recepción. Esta característica le permite poder operar los tres modos de comunicación asíncrona que existen. Los modos de comunicación son los siguientes:

  • Full-duplex. Significa que puede transmitir y recibir simultáneamente.
  • Half-duplex.  O sólo transmite o sólo recibe.
  • Simplex. Sólo se dedica a transmitir información binaria.

Cuando se diseña una aplicación que requiere comunicación serial, al inicio, se suelen cometer algunos errores básicos. Dentro de los esquemas de comunicación se utiliza al dispositivo serial en modo simplex, sólo enviando información. Lo recomendable es usar el esquema de comunicación Half-duplex, en donde, solo se envíe información si así lo pide uno de los elementos en la comunicación.

Tipos de conexiones o arreglos del puerto serial

Cuando un puerto serial, opera o trabaja a un voltaje lógico distinto del de nuestro sistema embebido se requieren hacer ciertas modificaciones al circuito. La Figura-2, muestra tres tipos de conexiones para un puerto de comunicación digital. En el elemento 1, estaríamos comunicando a dos sistemas con el mismo voltaje lógico. Mientras que para el elemento 2 se considera que uno de los dispositivos trabaja a un voltaje distinto, por lo que requiere de una etapa intermedia que ajuste a los voltajes lógicos. Esta etapa intermedia puede ser un » elevador de voltaje » o en ingles » level shiffter «. En este enlace puedes ver a uno de ello, CLICK AQUI. En el caso 3, de la Figura-2 se observa como seria la comunicación serial con una computadora.

Las computadoras, tanto de escritorio como laptops, ya no cuenta con puertos de comunicación serial. Para lograr comunicar un sistema embebido serial con una computadora, se requiere de un puerto adicional. Este elemento electrónico se le conoce como convertidor USB-TTL. El convertidor esta programado para convertir el protocolo de comunicación serial al protocolo de comunicación USB. En este caso la computadora reconoce a dicho circuito como un puerto Serial Virtual. Por lo tanto, para los sistemas operativos de Windows se le asigna un nombre que comienza con la palabra COM seguida de un numero. Mientras tanto, Linux se utilizan las letras TTYACM# o TTYUSB# donde el # es un numero que se va asignando consecutivamente a la conexión de los dispositivos.

Conexiones comunes para la comunicación serial

Figura-2. Tipos de conexiones seriales. 1 – Dos dispositivos seriales con el mismo voltaje lógico. 2 – Distintos voltajes lógicos. 3 – Comunicación serial con una computadora mediante una tarjeta de conversión de protocolo serial a protocolo USB.

Protocolo Serial y sus tramas de comunicación

El protocolo serial se refiere a la forma o a la cantidad de bits que forma un paquete de datos. En este caso el » dato » es la información que queremos transmitir por el puerto serial. Como resultado, la trama de datos o bits digitales necesarios para transmitir un byte de información pueden variar. Esencialmente se tienen que agregar tres tipos de bits al byte de información. Un bit de inicio, un bit de paridad y uno o dos bits de parada. Por ejemplo, se configura el puerto serial a una velocidad de 9600 BAUD, 8 bits de datos, 1 bit de parada y sin bit de paridad. Para este ejemplo la trama de datos seria:

Paquete de datos = Bit de inicio+8 bits de datos + 1 bit de parada

Es decir, que esta configuración envía 10 bits para cada 8 que se quieran transmitir. Si la velocidad es 9600 bits/s, da como resultado una tasa real de 960Bytes por segundo, dado que cada byte tiene agregados dos bits por parte del protocolo serial. La Figura-3, muestra un tipo de trama, esta consta de 11 bits que se transmiten cada uno a una velocidad de 9600 bits/s. Es decir, que a cada bit le toma 1/9600 s transmitirse para cada flanco de subida del generador de BAUD. La taza de transferencia de esta configuración serial de 9600/11 =  872.72 Bytes/segundo. La Figura-4, indica una trama que no incluye al bit de paridad y con una velocidad mayor, para esta trama la tasa de transferencia sería de 115200/10 = 11520 Bytes/s.

Tramas especiales

Existen configuraciones poco comunes. La Figura-5 muestra una trama poco habitual, en donde solo se envían 6 bits de datos y con dos bits de parada sin bit de paridad. Esta configuración se podría utilizar para cuando el byte a enviar no se utilizan los últimos dos y permite velocidades más altas de transferencia de bytes, en este coso sería 115200/9 = 12800Bytes/s. Cada byte sólo teniendo 6-bits reales.

Trama-1 de comunicación serial

Figura-3. Trama de comunicación serial con la siguiente configuración: 1 bit de parada, 1 bit de inicio, 8 bits de datos a 9600 BAUDs.

Trama de comunicación serial 2

Figura-4. Para esta trama, no se configuro el bit de paridad y la velocidad se configuro a 115200 BAUD.

Trama de comunicación serial 3

Figura-5. Trama con 6 bits de datos, dos bits de parada y sin bit de paridad a 115200 BAUD.

Aplicaciones del puerto Serial

Las aplicaciones del puerto serial incluyen al uso de la mayoría de los sensores digitales tiene un puerto de comunicación serial. Por ejemplo el GPS NEUBLOX NEO-6M , requiere de un puerto serial para poder leer la información y configurarlo apropiadamente. También se puede usar en aplicaciones donde nuestro sistema embebido, por ejemplo Arduino, Tarjetas Freedom, ARM’s, quieran enviar información a una computadora. Si queremos dotar de conectividad, por ejemplo, wifi, ethernet, RF, XBEE, tenemos que saber usar este puerto y su protocolo para comunicarnos con los shields o módulos externos.

Ejemplo-1, usar un GPS para graficar la posición en Matlab. Puedes ver el tutorial en este enlace.

Ejemplo-2, mandar y recibir mensajes de texto o llamadas en un Arduino con un modulo GSM SIM900.

Resumen

Los puertos seriales y su protocolo son muy importantes en el diseño de sistemas embebidos. Su uso extendido esta fundamentado en la facilidad de su protocolo que sólo adhiere unos pocos bits a cada paquete de datos. Actualmente esta siendo desplazado por protocolos seriales más avanzados como lo son I2C o SPI. Finalmente, su facilidad de uso lo hace un puerto indispensable para hobbistas y profesionales de la electrónica y sistemas embebidos.

Fuentes:

[1] – http://www.atmel.com/images/Atmel-8271-8-bit-AVR-Microcontroller-ATmega48A-48PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf

Autor: Dr. Rubén Estrada-Marmolejo.

Profesor de Asignatura, Universidad de Guadajara, México.

One Response

  1. Juan abril 7, 2019

Escríbenos tus dudas o comentarios

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Usamos Cookies en nuestro sitio WEB

Por favor confirma, si aceptas nuestras cookies de rastreo. También puedes negar el uso de cookies de rastreo y seguir navegando sin que ninguna información sea enviada a servicios de terceros.