PROTOCOLOS DE COMUNICACIÓN SPI/I2C/UART/UART
- UDAyT
- 6 abr 2018
- 3 Min. de lectura
Comparación entre protocolos de comunicación en serie
(SPI, I2C & USART)
La comunicación en serie es una de las metodologías de comunicación más usadas en sistemas integrados.
¿Qué es la comunicación en serie?
Como su nombre indica, se trata de una comunicación en serie, es decir los datos son enviados uno tras otro (y no todo junto como lo hace la comunicación en paralelo) en la Figura 1 se observa dicho comportamiento; sin embargo, se necesita de algún tipo de sincronización (reloj) para realizar una comunicación exitosa.

Se debe tener muy claro que en la comunicación serial, la comunicación se realiza en serie mientras que el procesamiento de los datos es de manera paralela (en forma de registros).
Tipos de comunicación serial
Síncrona
En este tipo de comunicación, tanto el transmisor como el receptor comparten un reloj común para permanecer sincronizados entre sí.
Asíncrona
Este tipo de comunicación serial no requiere ninguna fuente de reloj común entre el transmisor y el receptor, ambos lados funcionan de acuerdo con sus relojes independientes.
Protocolos de comunicación en serie
Interfaz Periférica Serial (SPI, Serial Peripheral Interface)
Este es un protocolo de comunicación en serie de tipo síncrono que consta de dos líneas de datos (MOSI y MISO), una línea de reloj (SCK) y una línea de selección esclava (SS).

Toda la comunicación es manejada por el maestro; ningún esclavo puede enviar datos por su propia voluntad. El maestro envía datos a través de MOSI mientras los esclavos responden a través de la línea MISO. En todo el proceso SCK (reloj serie) juega un papel muy importante, cada dispositivo esclavo depende de este reloj para leer datos de MOSI y responder a través de MISO. SS (Slave Select) se usa para hacer que un esclavo en particular esté despierto y el maestro quiera comunicarse (ver Figura 2).

Circuito inter integrado (I2C, del inglés Inter-Integrated Circuit)
I2C utiliza dos cables para todo el proceso: SDA (datos en serie) y SCL (reloj en serie). El protocolo I2C puede admitir múltiples dispositivos esclavos, pero a diferencia de SPI, que solo admite un dispositivo maestro, I2C también puede admitir múltiples dispositivos maestros.
Cada dispositivo envía / recibe datos usando solo un cable que es SDA mientras que SCL mantiene la sincronización entre los dispositivos a través del reloj común que proporciona el maestro activo como se observa en la Figura 3.
Cada esclavo tiene su propia dirección única de 7 a 10 bits que el maestro usa para identificarlos. Cada vez que el maestro desea enviar datos, primero genera una solicitud que tiene una dirección particular de ese esclavo.
Cada esclavo hace coincidir esta dirección con la suya la del maestro que corresponde. Cada mensaje se inicia con una condición de inicio y finaliza con una condición de detención.
Un solo mensaje puede contener múltiples bytes de datos, cada uno con un bit de reconocimiento (ACK) o reconocimiento negativo (NACK) entre ellos.
Las resistencias pull-up con SDA y SCL son necesarias para ejecutar este protocolo.
UART/USART
La diferencia entre ellos es que UART solo realiza comunicación en serie asíncrona, mientras que USART puede realizar un proceso de comunicación en serie tanto síncrono como asíncrono.
UART ---> Receptor y Transmisor Asíncrono Universal
USART ---> Receptor y Transmisor Sincrónico Universal y Asíncrono.
Para el modo asíncrono, este protocolo utiliza solo dos cables, es decir, Rx y TX. Como aquí no se necesita ningún reloj, ambos dispositivos deben hacer uso de sus relojes internos independientes para funcionar. Sin embargo, existe un término llamado tasa en baudios que ayuda a que estos dispositivos permanezcan sincronizados al fijar la velocidad del intercambio de datos. La velocidad en baudios se refiere a la cantidad de bits de datos transmitidos por segundo, por lo que ambos dispositivos deberían funcionar con la misma velocidad en baudios para mantener su correcto funcionamiento.
UART / USART tiene una gran limitación que solo dos dispositivos pueden comunicarse usando este protocolo a la vez. El pin TX de un dispositivo transmite datos al pin RX de otro dispositivo y, de forma similar, el TX de este último transmite datos al RX del dispositivo anterior. Así es como se produce el intercambio de datos tal como se aprecia en la Figura 4.

Para el modo Sincrónico (Figura 5), se usa un pin XCK adicional para proporcionar el reloj. El reloj es generado por el dispositivo que envía datos en ese momento.

Excelente
Muy buena información, es clara y digerible. Espero sigan subiendo más información útil como esta!
Buena información y clara, justo lo que buscaba
muy buena información