Este documento describe diferentes protocolos de comunicación serial entre microcontroladores, incluyendo SPI, I2C y RS-232. SPI es un protocolo síncrono que utiliza 3 cables y un maestro genera la señal de reloj. I2C es también síncrono y permite más de un maestro utilizando dos líneas (SCL, SDA) y un cable de tierra. RS-232 es asíncrono y requiere un convertidor como MAX232 para equilibrar los niveles de voltaje entre dispositivos.
1. 1
Abstract: In most modern circuits microcontrollers
communicate with each other are needed, there are two
ways to communicate in serial: synchronous and
asynchronous manner. Among the best known are the ISP
synchronous protocols, I2C; the asynchronous protocol
most commonly used today is the TTL-RS232, these
protocols will be treated below.
Words key: asíncrono, GND, I2S, Microcontroladores,
SCL, SDA, síncrono y SPI.
I. INTRODUCCIÓN
Una manera muy fácil de comunicarse serialmente es el
protocolo SPI, el mismo que minimiza el consumo de espacio
y pines en los proyectos a implementarse, y funciona mediante
el envío de ceros y unos de forma secuencial sobre tres cables
pero también existe el protocolo I2C el cual permite tener más
de un maestro, pero lo más común es tener un solo maestro,
tiene 3 canales que son el SCL (reloj), SDA (datos) y GND.
De manera asíncrona la conexión más conocida es la RS-232 y
en la misma es necesario un CI MAX232 para equilibrar los
niveles de voltaje.
II. MARCO TEÓRICO
Tipos de Comunicación Serial
Existen dos tipos de comunicaciones seriales: la síncrona y
asíncrona, en la comunicación serial síncrona, se necesitan 2
líneas, una línea sobre la cual se transmitirán los datos y otra la
cual contendrá los pulsos de reloj que indicaran cuando un
dato es válido, de este tipo de comunicación son los
protocolos:
• I2C (Inter Integrated Circuit) que es una marca registrada de
Philips.
• SPI (Serial Peripherical Interface) que es una marca
registrada de Motorola corporation.
En la comunicación Serial asíncrona, no son necesarios los
pulsos de reloj. La duración de cada bit está determinada por
la velocidad con la cual se realiza la transferencia de datos.
Comunicación Serial Síncrona
SPI (Interfaz Periférica Serial)
Es un subsistema de comunicaciones seriales independiente,
que le permite al microcontrolador comunicarse síncronamente
con otros dispositivos. Cada dispositivo puede actuar como
transmisor y receptor al mismo tiempo, por lo que este tipo de
comunicación serial es full dúplex. Tiene mayor velocidad de
transmisión que I2C. Su implementación en hardware es
simple, aunque no permite control de flujo y sólo funciona en
las distancias cortas.
El SPI necesita dos dispositivos para la comunicación. Un
maestro, aquel que inicia la transferencia de información sobre
el bus y genera las señales de reloj y control. Un esclavo, un
dispositivo controlado por el maestro a través de una línea
selectora llamada Chip Select.
Especificaciones Del Bus
Todas las líneas del bus transmiten la información sobre una
sola dirección.
La señal sobre la línea de reloj (SCLK) es generada por el
maestro y sincroniza la transferencia de datos.
La línea MOSI (Master Out Slave In) transporta los datos
del maestro hacia el esclavo.
La línea MISO (Master In Slave Out) transporta los datos
del esclavo hacia el maestro.
Los datos son transferidos en bloques de 8 bits, en donde el bit
más significativo (MSB) se transmite primero.
COMUNICACIÓN SERIAL EN
MICROCONTROLADORES
Danny Tierra
Escuela Superior Politécnica de Chimborazo
Riobamba, Ecuador
camishi19@homail.com
2. 2
Ilustración 1 Esquema SPI maestro-esclavo
I2C (Inter Integrated Circuit)
I2C es un estándar que facilita la comunicación entre
microcontroladores, memorias y otros dispositivos con cierto
nivel de "inteligencia", sólo requiere de dos líneas de señal y
un común. Permite el intercambio de información entre
muchos dispositivos a una velocidad aceptable, de unos 100
Kbits por segundo, una de las señales del bus marca el tiempo
(pulsos de reloj) y la otra se utiliza para intercambiar datos.
Descripción de las señales
SCL (System Clock) es la línea de los pulsos de reloj que
sincronizan el sistema.
SDA (System Data) es la línea por la que se mueven los datos
entre los dispositivos.
GND (Masa) común de la interconexión entre todos los
dispositivos "enganchados" al bus.
La comunicación en más detalle
Cuando el dispositivo maestro quiere comunicarse con un
esclavo, produce una secuencia de inicio en el bus. La
secuencia de inicio y son las dos secuencias especiales que se
han definido en el bus I2C; estas secuencias son los dos
únicos casos en que se permite que la línea de datos (SDA)
cambie cuando la línea de reloj (SCL) está alta. Cuando se
están transmitiendo datos, la línea SDA debe permanecer
estable, y jamás cambiar, mientras la línea SCL está alta. Las
secuencias de inicio y de parada señalan el comienzo y el final
de una transacción con los dispositivos esclavos.
Los datos se transfieren en secuencias de 8 bits. Estos bits se
colocan en la línea SDA comenzando por el bit de más peso.
Una vez puesto un bit en SDA, se lleva la línea SCL a alto.
Debemos recordar que el chip no puede llevar la línea a un
estado alto, en realidad, lo que hace es "soltarla", y el que la
pone en nivel lógico alto es el resistor de polarización. Por
cada 8 bits que se transfieren, el dispositivo que recibe el dato
envía de regreso un bit de reconocimiento, de modo que en
realidad por cada byte de dato se producen 9 pulsos sobre la
línea SCL (es decir, 9 pulsos de reloj por cada 8 bits de dato).
Si el dispositivo que recibe envía un bit de reconocimiento
bajo, indica que ha recibido el dato y que está listo para
aceptar otro byte. Si retorna un alto, lo que indica es que no
puede recibir más datos y el dispositivo maestro debería
terminar la transferencia enviando una secuencia de parada.
Ilustración 2Esquema I2C
Comunicación Serial Asíncrona
TTL-RS232
El puerto serial de las computadoras es conocido como puerto
RS-232, la ventaja de este puerto es que todas las
computadoras traen al menos un puerto serial, este permite las
comunicaciones entre otros dispositivos.
La norma RS232 está definida tanto para la transmisión
síncrona como asíncrona; para una comunicación full duplex
desde la UART de un microcontrolador deben conectarse un
mínimo número de señales, concretamente TXD y RXD así
como la masa (GND). Sin embargo una interfaz típica RS232
requiere al menos 7 señales.
Ilustración 3 Interfaz TTL-RS232
3. 3
Para convertir TTL a RS232 se usa el CI MAX232 que es un
conversor de nivel TTL/RS232. Sólo es necesario este CI y 4
condensadores.
El MAX232
Este CI soluciona los problemas de niveles de voltaje cuando
se requiere enviar unas señales digitales sobre una línea RS-
232. Este chip se utiliza en aquellas aplicaciones donde no se
dispone de fuentes dobles de +12 y –12 Volts. El MAX 232
internamente convierte el voltaje de +5V al de doble polaridad
de +12V y –12V.
Elementos necesarios para una comunicación serie
asíncrona entre dos dispositivos.
Hardware.
Los dispositivos deben tener una tierra en común, las tierras de
los circuitos de los dos dispositivos deben estar conectadas.
Un cable de conexión de la salida del puerto emisor a la
entrada del puerto receptor.
Si se quiere comunicación en los dos sentidos, otro cable de
conexión del puerto que envía del receptor al receptor del
transmisor.
Los niveles de los voltajes del transmisor deben ser aceptables
por el receptor.
Software.
El baud rate debe ser el mismo en los dos equipos. (Velocidad
de envío y recepción de datos).
El número de stop bits, data bits y paridad deben ser iguales.
Cualquier protocolo de "Handshaking" necesario debe ser
habilitado o deshabilitado.
Hardware Handshaking.
Si alguno de los dispositivos que se está utilizando está
configurado para comunicarse con Hardware Handshaking no
pasará nada hasta que se activen las líneas correspondientes y
necesarias para empezar el procedimiento.
III. CONCLUSIONES
La comunicación de datos del bus I2C es lenta en comparación
con el bus ISP.
En una conexión asíncrona el transmisor y el receptor deberán
tener los mismos parámetros de velocidad, paridad, número de
bits del dato transmitido y de BIT de parada.
La USART es la parte física que se encarga de
comunicar el microcontrolador con la PC.
IV. RECOMENDACIONES
Se debe tener en cuenta que al usar la transmisión RS-232 solo
se usan un conjunto de los 25 terminales que tiene el conector
y no todos.
Al usar la comunicación asíncrona en microcontroladores se
debe tener en cuenta que se debe conectar el TX(emisor) con
RX(receptor).
Tener cuidado al interpretar la información en un bus TTL-
RS232 ya que en el mismo se envía primero el bit de menor
peso.
V. WEBGRAFÍA
[1] http://www.monografias.com/trabajos104/banco-pruebas-
comunicaciones-seriales-spi/banco-pruebas-comunicaciones-seriales-
spi.shtml.
[2] https://galaxi0.wordpress.com/el-puerto-serial/.
[3] http://www.i-micro.com/pdf/articulos/rs-232.pdf.
[4] http://www.i-micro.com/pdf/articulos/rs-232.pdf.
[5] http://www.dtic.upf.edu/~jlozano/interfaces/interfaces6.html.
[6] http://www.i-micro.com/pdf/articulos/spi.pdf.
[7] http://es.scribd.com/doc/26569687/Comunicacion-Serie-Modulo-SSP-
Interface-I2C#scribd
[8] http://www.aquihayapuntes.com/indice-practicas-pic-en-
c/comunicacion-serie-i2c-entre-pic-y-eeprom-24lc256a.html
[9] http://robots-argentina.com.ar/Comunicacion_busI2C.htm
[10] https://microcontroladores2utec.files.wordpress.com/2009/11/180909_a
rticulo_colaboracion_boletin_fica_omar_otoniel_flores.pdf