Módulos UART y SPI

 

  • Módulos UART y SPI

Cuando se habla de protocolos de comunicación, UART, SPI son las interfaces de hardware más comunes usadas en el desarrollo de microcontroladores. En este blog te contaremos las características de estos protocolos, las ventajas e inconvenientes de cada uno y algunos ejemplos de cómo se usan en los microcontroladores.

UART

El protocolo UART, viene de las siglas en inglés ‘Universal Asynchronous Receiver-Transmitter’ (Receptor-transmisor asíncrono universal), mientras que USART son las siglas de ‘Universal Synchronous and Asynchronous Receiver-Transmitter’. La diferencia entre ellos es obvia, UART realiza solo comunicación en serie asíncrona, mientras que USART puede realizar procesos de comunicación en serie tanto síncronos como asíncronos.

Las principales características son:

Tiene dos líneas de datos, una para transmitir (TX) y otra para recibir (RX), que se utilizan para comunicarse a través del pin digital 0, pin digital 1.

TX y RX siempre están conectados entre dos dispositivos. (por ejemplo, USB y un ordenador)

Admite la transmisión de datos bidireccional, asíncrona y en serie.

También puede manejar problemas de administración de sincronización entre ordenadores y dispositivos seriales externos.

Funcionamiento

En cuanto a su funcionamiento es simple, los datos que fluyen desde TX del UART transmisor hasta el RX del UART receptor, una vez se haya conectado e iniciado la comunicación. Sin embargo, la comunicación entre dispositivos puede realizarse de 3 formas:

• Símplex = transmisión de datos en una dirección.

• Half-duplex = transmisión de datos en cualquier dirección, pero no simultáneamente.

• Full-duplex = transmisión de datos en ambas direcciones simultáneamente.

La transmisión de UART convierte los datos en paralelo del dispositivo maestro (por ejemplo, la CPU) en forma de serie y los transmite en serie a la UART receptora. Después volverá a convertir los datos en serie en datos paralelos para el dispositivo receptor.


Además, al ser asíncrono, no hace uso de relojes, el direccionamiento distribuye la información adecuadamente. UART agrega bits de inicio y parada que se transfieren para representar el inicio y el final de un mensaje, ayudando así al receptor a saber cuándo comenzar y dejar de leer bits. Cuando el UART receptor detecta un bit de inicio, leerá los bits equivalentes a la tasa de BAUD definida. Esta tasa define la velocidad de transmisión de bits, la cual es similar a la de símbolos, y normalmente la velocidad viene predeterminada en 115.200 baudios.

Es importante que ambos UART tengan definida la misma velocidad en baudios, ya que si la diferencia es de más del 10% la temporización de los bits puede estar desactivada y dejar los datos inutilizables.


 Protocolo

En cuanto al protocolo de trabajo de un UART su funcionamiento es el siguiente. El que primero que quiere transmitir datos, recibirá datos de un bus de datos que es enviado por otro componente (por ejemplo, la CPU). Después de obtener los datos del bus de datos, agregará un bit de inicio, un bit de paridad y un bit de parada para crear el paquete de datos. Este paquete de datos se transmite luego por el pin TX donde el UART receptor leerá el paquete de datos en su pin RX. Los datos se envían hasta que no quedan datos en el UART transmisor, y se recibe el bit de parada. 

Por tanto, cada paquete UART estará compuesto de los siguientes bits: 1 bit de inicio (nivel bajo), 8 bits de datos, incluido el bit de paridad, 1 o 2 bits de parada (nivel alto).

Existe también una bandera llamada FIFO (First Input, First Output): Primero en entrar, primero en salir. Es un búfer UART que obliga a que cada byte se pase en secuencia al UART receptor. Esta bandera tendrá el bit ‘BUSY’ (ocupado) que solo estará inactivo después de que los datos hayan terminado de transmitirse, el FIFO se vacíe y cada bit se haya transmitido, incluido el bit de parada.

 Referencias: 

Diferencias de los protocolos de comunicación UART vs I2C vs SPI. (s. f.). Solectroshop -Tu tienda de Arduino, Raspberry, Micro:Bit, Sparkfun. https://solectroshop.com/es/blog/diferencias-de-los-protocolos-de-comunicacion-uart-vs-i2c-vs-spi-n107

Comentarios

Entradas populares de este blog

ARREGLO LOGICO GENERICO (GAL)

Función "rising_edge" para VHDL

Señal del reloj en VHDL