- Tipos de protocolos de comunicación
- Modos de transmisión en comunicación en serie
- Sincronización de reloj
- Otros términos relacionados con la comunicación en serie
- Protocolos serie síncronos
- Protocolos seriales asincrónicos
- Conclusión
Antes de comenzar con los protocolos de comunicación en serie, rompamos la terminología en tres partes. La comunicación es una terminología muy conocida que implica el intercambio de información entre dos o más medios. En los sistemas embebidos, la comunicación significa el intercambio de datos entre dos microcontroladores en forma de bits. Este intercambio de bits de datos en el microcontrolador se realiza mediante un conjunto de reglas definidas conocidas como protocolos de comunicación. Ahora bien, si los datos se envían en serie, es decir, uno tras otro, el protocolo de comunicación se conoce como Protocolo de comunicación en serie. Más específicamente, los bits de datos se transmiten uno a la vez de manera secuencial a través del bus de datos o canal de comunicación en la comunicación serial.
Tipos de protocolos de comunicación
Hay diferentes tipos de transferencia de datos disponibles en la electrónica digital, como la comunicación en serie y la comunicación en paralelo. De manera similar, los protocolos se dividen en dos tipos, como el protocolo de comunicación en serie y los protocolos de comunicación en paralelo. Ejemplos de protocolos de comunicación en paralelo son ISA, ATA, SCSI, PCI e IEEE-488. De manera similar, hay varios ejemplos de protocolos de comunicación en serie como CAN, ETHERNET, I2C, SPI, RS232, USB, 1-Wire y SATA, etc.
En este artículo, se discutirán los diferentes tipos de protocolos de comunicación en serie. La comunicación en serie es el enfoque más utilizado para transferir información entre periféricos de procesamiento de datos. Cada dispositivo electrónico, ya sea una computadora personal (PC) o un dispositivo móvil, funciona con comunicación en serie. El protocolo es la forma de comunicación segura y confiable que tiene un conjunto de reglas dirigidas por el host de origen (remitente) y el host de destino (receptor) similar a la comunicación en paralelo.
Modos de transmisión en comunicación en serie
Como ya se dijo anteriormente, en la comunicación en serie los datos se envían en forma de bits, es decir, pulsos binarios y es bien sabido que el uno binario representa la lógica ALTA y el cero representa la lógica BAJA. Hay varios tipos de comunicación en serie según el tipo de modo de transmisión y la transferencia de datos. Los modos de transmisión se clasifican en Simplex, Half Duplex y Full Duplex.
Método simplex:
En el método simplex, el medio, es decir, el remitente o el receptor, pueden estar activos a la vez. Entonces, si el remitente está transmitiendo los datos, el receptor solo puede aceptar y viceversa. El método simplex es una técnica de comunicación unidireccional. Los ejemplos más conocidos del método simplex son Televisión y Radio.
Método Half Duplex:
En el método semidúplex, tanto el emisor como el receptor pueden estar activos pero no al mismo tiempo. Entonces, si el remitente está transmitiendo, el receptor puede aceptar pero no puede enviar y viceversa. Los ejemplos más conocidos del medio dúplex es Internet, donde el usuario envía una solicitud de datos y los obtiene del servidor.
Método Full Duplex:
En el método dúplex completo, tanto el receptor como el transmisor pueden enviarse datos entre sí al mismo tiempo. El ejemplo más conocido es el teléfono móvil.
Aparte de esto, para una transmisión de datos adecuada, el reloj juega un papel importante y es una de las fuentes primarias. El mal funcionamiento del reloj da como resultado una transmisión de datos inesperada, incluso a veces la pérdida de datos. Por tanto, la sincronización del reloj se vuelve muy importante cuando se utiliza la comunicación en serie.
Sincronización de reloj
El reloj es diferente para los dispositivos seriales y se clasifica en dos tipos, a saber. Interfaz serial síncrona e interfaz serial asíncrona.
Interfaz serial síncrona:
Es una conexión punto a punto de un maestro a un esclavo. En este tipo de interfaz, todos los dispositivos utilizan un solo bus de CPU para compartir datos y reloj. La transmisión de datos se vuelve más rápida con el mismo bus para compartir reloj y datos. Además, no hay desajuste en la velocidad en baudios en esta interfaz. En el lado del transmisor, hay un desplazamiento de los datos a la línea serial que proporciona el reloj como una señal separada ya que no hay inicio, parada y los bits de paridad se agregan a los datos. En el lado del receptor, los datos se extraen utilizando el reloj proporcionado por el transmisor y convierte los datos en serie de nuevo a la forma paralela. Los ejemplos más conocidos son I2C y SPI.
Interfaz serial asincrónica:
En la interfaz serial asincrónica, la señal de reloj externa está ausente. Las interfaces seriales asincrónicas se pueden ver principalmente en aplicaciones de larga distancia y son un ajuste perfecto para la comunicación estable. En la interfaz serial asíncrona, la ausencia de una fuente de reloj externa hace que dependa de varios parámetros, como el control de flujo de datos, el control de errores, el control de velocidad en baudios, el control de transmisión y el control de recepción. En el lado del transmisor, hay un desplazamiento de datos paralelos a la línea serial usando su propio reloj. También agrega los bits de verificación de inicio, parada y paridad. En el lado del receptor, el receptor extrae los datos utilizando su propio reloj y convierte los datos en serie de nuevo a la forma paralela después de eliminar los bits de inicio, parada y paridad. Los ejemplos más conocidos son RS-232, RS-422 y RS-485.
Otros términos relacionados con la comunicación en serie
Además de la sincronización del reloj, hay ciertas cosas que debe recordar al transferir datos en serie, como la velocidad en baudios, la selección de bits de datos (encuadre), la sincronización y la verificación de errores. Analicemos estos términos brevemente.
Velocidad en baudios: La velocidad en baudios es la velocidad a la que se transfieren los datos entre el transmisor y el receptor en forma de bits por segundo (bps). La velocidad en baudios más comúnmente utilizada es 9600. Pero hay otra selección de velocidad en baudios como 1200, 2400, 4800, 57600, 115200. Cuanto mayor sea la velocidad en baudios, los datos se transferirán a la vez. Además, para la comunicación de datos, la velocidad en baudios debe ser la misma tanto para el transmisor como para el receptor.
Encuadre: el encuadre se refiere al número de bits de datos que se enviarán del transmisor al receptor. El número de bits de datos varía según la aplicación. La mayor parte de la aplicación utiliza 8 bits como bits de datos estándar, pero también puede seleccionarse como 5, 6 o 7 bits.
Sincronización: los bits de sincronización son importantes para seleccionar una parte de los datos. Indica el inicio y el final de los bits de datos. El transmisor establecerá bits de inicio y parada en la trama de datos y el receptor lo identificará en consecuencia y realizará el procesamiento posterior.
Control de errores: El control de errores juega un papel importante en la comunicación en serie, ya que hay muchos factores que afectan y agregan ruido en la comunicación en serie. Para deshacerse de este error, se utilizan los bits de paridad donde la paridad verificará la paridad par e impar. Entonces, si el marco de datos contiene el número par de unos, entonces se conoce como paridad par y el bit de paridad en el registro se establece en 1. De manera similar, si el marco de datos contiene un número impar de unos, entonces se conoce como paridad impar y borra el bit de paridad impar en el registro.
El protocolo es como un lenguaje común que usa el sistema para comprender los datos. Como se describió anteriormente, el protocolo de comunicación en serie se divide en tipos, es decir, sincrónico y asincrónico. Ahora ambos se discutirán en detalle.
Protocolos serie síncronos
El tipo síncrono de protocolos seriales como SPI, I2C, CAN y LIN se utilizan en diferentes proyectos porque es uno de los mejores recursos para periféricos integrados. Además, estos son los protocolos más utilizados en las principales aplicaciones.
Protocolo SPI
La interfaz periférica en serie (SPI) es una interfaz síncrona que permite interconectar varios microcontroladores SPI. En SPI, se requieren cables separados para los datos y la línea de reloj. Además, el reloj no está incluido en el flujo de datos y debe proporcionarse como una señal separada. El SPI puede configurarse como maestro o como esclavo. Las cuatro señales SPI básicas (MISO, MOSI, SCK y SS), Vcc y Ground son parte de la comunicación de datos. Por lo tanto, necesita 6 cables para enviar y recibir datos del esclavo o del maestro. En teoría, el SPI puede tener un número ilimitado de esclavos. La comunicación de datos se configura en registros SPI. El SPI puede ofrecer hasta 10 Mbps de velocidad y es ideal para la comunicación de datos de alta velocidad.
La mayoría de los microcontroladores tienen soporte incorporado para SPI y se pueden conectar directamente a dispositivos compatibles con SPI:
- Comunicación SPI con el microcontrolador PIC PIC16F877A
- Cómo utilizar la comunicación SPI en el microcontrolador STM32
- Cómo usar SPI en Arduino: comunicación entre dos placas Arduino
Comunicación serial I2C
Comunicación de dos líneas entre circuitos integrados (I2C) entre diferentes circuitos integrados o módulos donde dos líneas son SDA (línea de datos en serie) y SCL (línea de reloj en serie). Ambas líneas deben estar conectadas a un suministro positivo usando una resistencia pull up. I2C puede ofrecer una velocidad de hasta 400 Kbps y utiliza un sistema de direccionamiento de 10 o 7 bits para apuntar a un dispositivo específico en el bus i2c para que pueda conectar hasta 1024 dispositivos. Tiene una comunicación de longitud limitada y es ideal para la comunicación a bordo. Las redes I2C son fáciles de configurar ya que utilizan solo dos cables y los nuevos dispositivos pueden simplemente conectarse a las dos líneas de bus I2C comunes. Al igual que SPI, el microcontrolador generalmente tiene pines I2C para conectar cualquier dispositivo I2C:
- Cómo utilizar la comunicación I2C en el microcontrolador STM32
- Comunicación I2C con el microcontrolador PIC PIC16F877
- Cómo usar I2C en Arduino: comunicación entre dos placas Arduino
USB
USB (Universal Serial Bus) es un protocolo generalizado con diferentes versiones y velocidades. Se pueden conectar un máximo de 127 periféricos a un solo controlador host USB. USB actúa como dispositivo "plug and play". Los USB se utilizan en casi dispositivos como teclados, impresoras, dispositivos multimedia, cámaras, escáneres y mouse. Está diseñado para una instalación fácil, clasificación de datos más rápida, menos cableado e intercambio en caliente. Ha reemplazado los puertos serie y paralelo más voluminosos y lentos. USB usa señalización diferencial para reducir la interferencia y permitir la transmisión de alta velocidad a larga distancia.
Un bus diferencial se construye con dos hilos, uno representa los datos transmitidos y el otro su complemento. La idea es que el voltaje 'promedio' en los cables no transmita ninguna información, lo que resulta en menos interferencia. En USB, los dispositivos pueden consumir una cierta cantidad de energía sin preguntar al anfitrión. El USB utiliza solo dos cables para la transferencia de datos y es más rápido que la interfaz en serie y en paralelo. Las versiones USB admiten diferentes velocidades, como 1,5 Mbps (USB v1.0), 480 Mbps (USB2.0), 5 Gbps (USB v3.0). La longitud del cable USB individual puede alcanzar hasta 5 metros sin un concentrador y hasta 40 metros con un concentrador.
PUEDEN
La red de área del controlador (CAN) se utiliza, por ejemplo, en automóviles para permitir la comunicación entre las ECU (unidades de control del motor) y los sensores. El protocolo CAN es robusto, de bajo costo y basado en mensajes, y cubre muchas aplicaciones, por ejemplo, automóviles, camiones, tractores, robots industriales. El sistema de bus CAN permite el diagnóstico y la configuración de errores centralizados en todas las ECU. Los mensajes CAN se priorizan a través de ID de modo que los ID de mayor prioridad no se interrumpan. Cada ECU contiene un chip para recibir todos los mensajes transmitidos, decidir la relevancia y actuar en consecuencia; esto permite una fácil modificación e inclusión de nodos adicionales (por ejemplo, registradores de datos de bus CAN). Las aplicaciones incluyen arranque / parada de vehículos, sistemas para evitar colisiones. Los sistemas de bus CAN pueden proporcionar una velocidad de hasta 1 Mbps.
Microalambre
MICROWIRE es una interfaz de 3 cables en serie de 3 Mbps esencialmente un subconjunto de la interfaz SPI. Microwire es un puerto de E / S en serie en microcontroladores, por lo que el bus Microwire también se encontrará en EEPROM y otros chips periféricos. Las 3 líneas son SI (Entrada serial), SO (Salida serial) y SK (Reloj serial). La línea de entrada en serie (SI) al microcontrolador, SO es la línea de salida en serie y SK es la línea de reloj en serie. Los datos se desplazan hacia afuera en el borde descendente de SK y se valoran en el borde ascendente. SI se desplaza hacia el flanco ascendente de SK. Una mejora de bus adicional a MICROWIRE se llama MICROWIRE / Plus. La principal diferencia entre los dos buses parece ser que la arquitectura MICROWIRE / Plus dentro del microcontrolador es más compleja. Admite velocidades de hasta 3 Mbps.
Protocolos seriales asincrónicos
El tipo asincrónico de protocolos seriales es muy esencial cuando se trata de una transferencia de datos confiable a mayor distancia. La comunicación asíncrona no requiere un reloj de tiempo que sea común a ambos dispositivos. Cada dispositivo escucha y envía pulsos digitales de forma independiente que representan bits de datos a una velocidad acordada. La comunicación en serie asíncrona a veces se denomina en serie Transistor-Transistor Logic (TTL), donde el nivel de alto voltaje es lógico 1 y el bajo voltaje equivale a lógica 0. Casi todos los microcontroladores en el mercado hoy en día tienen al menos un receptor asíncrono universal- Transmisor (UART) para comunicación serial. Los ejemplos son RS232, RS422, RS485, etc.
RS232
El RS232 (estándar recomendado 232) es un protocolo muy común que se utiliza para conectar diferentes periféricos como monitores, CNC, etc. El RS232 viene en conectores macho y hembra. El RS232 es de topología punto a punto con un máximo de un dispositivo conectado y cubre una distancia de hasta 15 metros a 9600 bps. La información sobre la interfaz RS-232 se transmite digitalmente por lógicos 0 y 1. El "1" lógico (MARCA) corresponde a un voltaje en el rango de -3 a -15 V. El "0" lógico (ESPACIO) corresponde a un voltaje en el rango de +3 a +15 V. Viene en conector DB9 que tiene 9 pines como TxD, RxD, RTS, CTS, DTR, DSR, DCD, GND.
RS422
El RS422 es similar al RS232 que permite enviar y recibir mensajes simultáneamente en líneas separadas pero utiliza una señal diferencial para esto. En la red RS-422, solo puede haber un dispositivo transmisor y hasta 10 dispositivos receptores. La velocidad de transferencia de datos en RS-422 depende de la distancia y puede variar de 10 kbps (1200 metros) a 10 Mbps (10 metros). La línea RS-422 tiene 4 cables para transmisión de datos (2 cables trenzados para transmisión y 2 cables trenzados para recepción) y un cable de tierra GND común. El voltaje en las líneas de datos puede estar en el rango de -6 V a +6 V.La diferencia lógica entre A y B es mayor que +0,2 V.Lógico 1 corresponde a la diferencia entre A y B menor que -0,2 V. El estándar RS-422 no define un tipo específico de conector, por lo general puede ser un bloque de terminales o un conector DB9.
RS485
Dado que RS485 utiliza topología multipunto, es más utilizado en las industrias y es el protocolo preferido de la industria. RS422 puede conectar 32 controladores de línea y 32 receptores en configuraciones diferenciales, pero con la ayuda de repetidores y amplificadores de señal adicionales hasta 256 dispositivos. El RS-485 no define un tipo específico de conector, pero a menudo es un bloque de terminales o un conector DB9. La velocidad de funcionamiento también depende de la longitud de la línea y puede alcanzar los 10 Mbit / sa 10 metros. El voltaje en las líneas está en el rango de -7 V a +12 V. Hay dos tipos de RS-485 como el modo semidúplex RS-485 con 2 contactos y el modo dúplex completo RS-485 con 4 contactos. Para obtener más información sobre el uso de RS485 con otros microcontroladores, consulte los enlaces:
- Comunicación serial RS-485 MODBUS usando Arduino UNO como esclavo
- Comunicación serial RS-485 entre Raspberry Pi y Arduino Uno
- Comunicación serial RS485 entre Arduino Uno y Arduino Nano
- Comunicación serial entre STM32F103C8 y Arduino UNO usando RS-485
Conclusión
La comunicación en serie es uno de los sistemas de interfaz de comunicación más utilizados en electrónica y sistemas integrados. Las velocidades de datos pueden ser diferentes para diferentes aplicaciones. Los Protocolos de Comunicación Serie pueden jugar un papel decisivo a la hora de tratar este tipo de aplicaciones. Por lo tanto, elegir el protocolo serial correcto se vuelve muy importante.