Proto. – Comunicación

1.- Protocolos de Comunicación.

Los protocolos de comunicación I2 C/TWI y SPI Cuando se desea transmitir un conjunto de datos desde un componente electrónico a otro, se puede hacer de múltiples formas. Una de ellas es estableciendo una comunicación “serie”; en este tipo de comunicación la información es transmitida bit a bit (uno tras otro) por un único canal, enviando por tanto un solo bit en cada momento. Otra manera de transferir datos es mediante la llamada comunicación “paralela”, en la cual se envían varios bits simultáneamente, cada uno por un canal separado y sincronizado con el resto. El microcontrolador, a través de algunos de sus pines de E/S, utiliza el sistema de comunicación serie para transmitir y recibir órdenes y datos hacia/desde otros componentes electrónicos. Esto es debido sobre todo a que en una comunicación serie solo se necesita en teoría un único canal (un único “cable”), mientras que en una comunicación en paralelo se necesitan varios cables, con el correspondiente incremento de complejidad, tamaño y coste del circuito resultante. No obstante, no podemos hablar de un solo tipo de comunicación serie. Existen muchos protocolos y estándares diferentes basados todos ellos en la transferencia de información en serie, pero implementando de una forma diferente cada uno los detalles específicos (como el modo de sincronización entre emisor y receptor, la velocidad de transmisión, el tamaño de los paquetes de datos, los mensajes de conexión y desconexión y de dar paso al otro en el intercambio de información, los voltajes utilizados, etc.). De entre el gran número de protocolos de comunicación serie reconocidos por la inmensa variedad de dispositivos electrónicos del mercado, los que nos interesarán conocer son los que el ATmega328P es capaz de comprender y por tanto, los que podrá utilizar para contactar con esa variedad de periféricos. En este sentido, los estándares más importantes son:

I 2 C (Inter-Integrated Circuit, también conocido con el nombre de TWI –de “TWo-wIre”, literalmente “dos cables” en inglés–): es un sistema muy utilizado en la industria principalmente para comunicar circuitos integrados entre sí. Su principal característica es que utiliza dos líneas para transmitir la información: una (llamada línea “SDA”) sirve para transferir los datos (los 0s y los 1s) y otra (llamada línea “SCL”) sirve para enviar la señal de reloj. En realidad también se necesitarían dos líneas más: la de alimentación y la de tierra común, pero estas ya se presuponen existentes en el circuito.

Por “señal de reloj” se entiende una señal binaria de una frecuencia periódica muy precisa que sirve para coordinar y sincronizar los elementos integrantes de una comunicación (es decir, los emisores y receptores) de forma que todos sepan cuándo empieza, cuánto dura y cuándo acaba la transferencia de información. En hojas técnicas y diagramas a la señal de reloj en general se le suele describir como CLK (del inglés “clock”). Cada dispositivo conectado al bus I²C tiene una dirección única que lo identifica respecto el resto de dispositivos, y puede estar configurado como “maestro” o como “esclavo”. Un dispositivo maestro es el que inicia la transmisión de datos y además genera la señal de reloj, pero no es necesario que el maestro sea siempre el mismo dispositivo: esta característica se la pueden ir intercambiando ordenadamente los dispositivos que tengan esa capacidad.

La velocidad de transferencia de datos es de 100 Kbits por segundo en el modo estándar (aunque también se permiten velocidades de hasta 3,4 Mbit/s). No obstante, al haber una única línea de datos, la transmisión de información es “half duplex” (es decir, la comunicación solo se puede establecer en un sentido al mismo tiempo) por lo que en el momento que un dispositivo empiece a recibir un mensaje, tendrá que esperar a que el emisor deje de transmitir para poder responderle.

SPI (Serial Peripheral Interface): al igual que el sistema I²C, el sistema de comunicación SPI es un estándar que permite controlar (a cortas distancias) casi cualquier dispositivo electrónico digital que acepte un flujo de bits serie sincronizado (es decir, regulado por un reloj). Igualmente, un dispositivo conectado al bus SPI puede ser “maestro” –en inglés, “master” – o “esclavo” –en inglés, “slave“–, donde el primero es el que inicia la transmisión de datos y además genera la señal de reloj (aunque, como con I²C , con SPI tampoco es necesario que el maestro sea siempre el mismo dispositivo) y el segundo se limita a responder. La mayor diferencia entre el protocolo SPI y el I²C es que el primero requiere de cuatro líneas (“cables”) en vez de dos. Una línea (llamada normalmente “SCK”) envía a todos los dispositivos la señal de reloj generada por el maestro actual; otra (llamada normalmente “SS”) es la utilizada por ese maestro para elegir en cada momento con qué dispositivo esclavo se quiere comunicar de entre los varios que puedan estar conectados (ya que solo puede transferir datos con un solo esclavo a la vez); otra (llamada normalmente “MOSI”) es la línea utilizada para enviar los datos –0s y 1s– desde el maestro hacia el esclavo elegido; y la otra (llamada normalmente “MISO”) es la utilizada para enviar los datos en sentido contrario: la respuesta de ese esclavo al maestro. Es fácil ver que, al haber dos líneas para los datos la transmisión de información es “full duplex” (es decir, que la información puede ser transportada en ambos sentidos a la vez).

En las siguientes figuras se muestra el esquema de líneas de comunicación existentes entre un maestro y un esclavo y entre un maestro y tres esclavos respectivamente. Se puede observar que, para el caso de la existencia de varios esclavos es necesario utilizar una línea “SS” diferente por cada uno de ellos, ya que esta línea es la que sirve para activar el esclavo concreto que en cada momento el maestro desee utilizar (esto no pasa con las líneas de reloj, “MOSI” y “MISO”, que son compartidas por todos los dispositivos).Técnicamente hablando, el esclavo que reciba por su línea SS un valor de voltaje BAJO será el que esté seleccionado en ese momento por el maestro, y los que reciban el valor ALTO no lo estarán (de ahí el subrayado superior que aparece en la figura).

Como se puede ver, el protocolo SPI respecto el I²C tiene la desventaja de exigir al microcontrolador dedicar muchos más pines de E/S a la comunicación externa. En cambio, como ventaja podemos destacar que es más rápido y consume menos energía que I²C.

Información de Arduino tomada desde el Libro “Arduino-Curso Practico” del Autor Oscar Torrente Artero. Editorial AlfaOmega.

Anuncios

Crea un blog o un sitio web gratuitos con WordPress.com.

Subir ↑

A %d blogueros les gusta esto: