Interfaces de comunicación serial de la Raspberry Pi
Por comunicación serial, entendemos que es la transmisión y recepción de datos por medio de una secuencia de bits, transmitiendo un bit la vez por medio del mismo cable o canal.
Preferimos utilizar la comunicación serial sobre la paralela en sistemas de comunicación a larga distancia, donde se vuelve difícil utilizar la comunicación paralela debido a los problemas de sincronización, diafonía y costo del cable o del medio.
La tarjeta Raspberry Pi tiene varias interfaces físicas de comunicación serial, tales como:
- Comunicación asíncrona serial,
- Interfaz de periféricos serie, y
- Circuito inter-integrado.
Comunicación asíncrona serial
La comunicación asíncrona serial es un sistema de comunicación que no utiliza una señal de reloj común al transmisor y al receptor.
En lugar de utilizar un mismo reloj, se utiliza un símbolo de inicio y un símbolo de parada para sincronizar al transmisor y al receptor.
La comunicación asíncrona serial tiene su origen en el telégrafo eléctrico. En un sistema telegráfico, todos los telégrafos se conectaban en serie, y el transmisor de cada uno de ellos siempre estaba cortocircuitado. Cuando se iba a transmitir un mensaje, se ponía el transmisor en circuito abierto, lo cual era la indicación de inicio de transmisión. Cuando se detenía la transmisión, se volvía a cortocircuitar el transmisor.
Este sistema se replicó en los teletipos. Mientras la clave Morse usa un código de longitud variable, los teletipos usan un código de longitud fija; esto permite simplificar el problema de sincronización.
Para poder realizar la comunicación, debemos de tener varios parámetros establecidos con anticipación en el transmisor y receptor. Los parámetros más frecuentes son:
- Tipo de operación: dúplex o semidúplex.
- El número de bits por carácter: 5, 6, 7 u 8.
- Número de símbolos por segundo o baudios: 57600 por ejemplo.
- El tipo de paridad utilizada: par, impar o ninguna.
- El número de bits de parada: 1, 1.5 o 2.
Figura 1. Diagrama de la trama de datos usada en la comunicación asíncrona serial (fuente: Wikimedia). |
Otros parámetros los usamos de manera implícita o, rara vez, de forma explícita:
- El ordenamiento de los bits, que se conoce como endianness.
- La definición de los símbolos de marca y espacio, es decir cuando un bit es 0 y cuando es 1.
En la actualidad, usamos un dispositivo llamado transmisor–receptor asíncrono universal (UART, por sus siglas en inglés) para la comunicación asíncrona serial.
En el siguiente video podemos ver como se implementaba electromecánicamente una interfaz asíncrona serial. Como ya mencionamos, los teletipos fueron unos de los precursores de la comunicación asíncrona serial.
Interfaz de periféricos serie
La interfaz de periféricos serie (SPI, por sus siglas en inglés) es un sistema de comunicación serial síncrona. Por comunicación síncrona se entiende que existe una señal de reloj común entre el transmisor y el receptor, la cual se envía por un cable o canal separado.
La utilizamos fundamentalmente para la comunicación entre un procesador y uno o varios periféricos a corta distancia.
La arquitectura de la SPI es cliente–servidor y una topología tipo bus. La operación es dúplex.
Es importante remarcar que puede haber varios clientes; pero sólo puede haber un servidor.
Figura 2. Un maestro y varios esclavos sobre un bus SPI (fuente: Wikimedia). |
Un ejemplo de aplicación puede ser el uso del convertidor analógico–digital MCP3008 con la Raspberry Pi.
Circuito inter-integrado
El circuito inter-integrado (I2C, por sus siglas en inglés) es un sistema de comunicación síncrona, cliente–servidor, con conmutación de paquetes y topología de bus.
Es importante remarcar, que a diferencia de la SPI, I2C puede tener múltiples servidores.
Se utiliza para la comunicación entre microprocesadores y periféricos.
Figura 3. Ejemplo de un bus I2C con servidor y múltiples clientes (fuente: Wikimedia). |
Un ejemplo con la Raspberry Pi es la comunicación con una tarjeta Arduino.
Conclusiones
La tarjeta Raspberry Pi tiene varias interfaces para la comunicación serial; como son la comunicación asíncrona serial, la interfaz de periféricos serie y el circuito inter-integrado.
La comunicación serial se prefiere a la paralela en sistemas de comunicación a larga distancia, donde la comunicación paralela puede presentar problemas de sincronización, diafonía y el costo del cable.