HOME

PRODUCTOS

PROYECTOS

TUTORIALES

VIDEOS

FREEWARE

PROGRAMAS

FUNCIONES C

EMPRESA

ENGLISH

                   

El estándar SPI para comunicación síncrona de alta velocidad.

El estándar SPI (Syncronous Peripheral Interface) es utilizado para la comunicación serial entre dispositivos. El SPI fue inicialmente creado por Motorola y adoptado posteriormente por diferentes fabricantes, como Microchip y Atmel. Se trata de un enlace de datos en serie, síncrono, y que opera en modo full dúplex, es decir, las señales de datos viajan en ambas direcciones en forma simultánea.

El canal SPI fue diseñado para aplicaciones de trasmisión de datos a velocidades altas (10 Mbps) y distancias cortas, del orden de 10 a 20 cms, ó bien dentro de un mismo PCB (circuito impreso), entre 2 circuitos integrados como podrían ser un  microcontrolador y otro dispositivo, por ejemplo, un circuito integrado con la función RFID. Las señales de trasmisión de datos y control del canal SPI, usan niveles de voltaje TTL ó bien 3.3 volts, dependiendo de la tecnología de fabricación del dispositivo.

Los dispositivos SPI se comunican entre sí utilizando un bus de 4 señales (MOSI, MISO, SCK, SS) y un esquema maestro/esclavo, en el cual el maestro inicia el protocolo de trasmisión de los datos. En ocasiones, las interfaces SPI son circuitos que están ya disponibles como parte del hardware en los microcontroladores como por ejemplo el 18F2550 (Microchip) ó Atmega8 (Atmel-AVR) ó bien en dispositivos como módulos lectores RFID, tarjetas de memoria, convertidores A/D, etc.

Sin embargo, es también posible implementar un esquema de comunicaciones SPI, utilizando 4 bits de entrada/salida de un microcontrolador junto con un firmware adecuado que maneje el protocolo SPI. A este método se le conoce como 'bit-banging'.

Las señales denominadas MOSI y MISO son portadoras de los datos en ambas direcciones mientras la señal SCK es la señal de reloj la cual sincroniza la recepción de los datos. Por cada pulso de reloj, un bit de información ingresa al dispositivo Master ó al Slave. De tal manera que se requieren 8 pulsos para transferir 1 byte.

La señal SS (Slave Select) habilita el esclavo correspondiente. En la Figura 1 se muestra un ejemplo con solamente un circuito master y un esclavo. Sin embargo, añadiendo varias líneas SS, por ejemplo SS1 y SS2 y SS3, se puede implementar una red de varios circuitos SPI, controlados por el mismo dispositivo Master, como se muestra en la Figura 2.

Cuando el maestro selecciona un dispositivo esclavo y genera una señal de reloj (SCK), los datos pueden fluir en ambas direcciones simultáneamente (full dúplex), ya que el mismo reloj funciona para los 2 dispositivos, maestro y esclavo. De hecho, en lo que se refiere a la comunicación SPI, los datos se transfieren siempre en ambas direcciones. Corresponde a los dispositivos maestro y esclavo saber si un byte recibido contiene información útil o no. Así, un dispositivo debe descartar el byte recibido en un modo "sólo transmitir".

SPI no especifica un protocolo de alto nivel para el diálogo maestro-esclavo, y no cuenta con un mecanismo de hardware para la confirmación (acknowledge) ó validación de la recepción de los datos. Por ejemplo, sin un protocolo adecuado en el firmware, el dispositivo SPI maestro no tendría conocimiento de si existe un esclavo conectado y listo para la transferencia de datos.

De acuerdo a lo mencionado en el párrafo anterior, el usuario debe entonces adoptar ó diseñar un protocolo especial para la comunicación SPI, y que permita, tanto el diagnóstico de fallas, como la validación de los bloques de datos trasmitidos, de acuerdo a su aplicación.

Tratándose de un canal de trasmisión síncrono, la velocidad de trasmisión de SPI depende de la frecuencia de generación del reloj (señal SCK), por lo que puede tomar cualquier valor. No existen velocidades estándar de trasmisión, como en el caso del RS232. La velocidad máxima típica de SPI puede llegar a 10 Mbps.

Figura 1: señales presentes en el estándar SPI

 

Figura 2: Ejemplo de un diseño de red SPI con un maestro y varios circuitos esclavo. La línea de activación SS permite al maestro seleccionar el circuito con el cual desea comunicarse:

 

Consulte aquí un tutorial sobre la interfaz SPI de Microchip

Consulte aquí un proyecto en donde se emplea el canal SPI para leer información de un sistema RFID