¿Cómo funciona el protocolo SPI?
SPI es
un acrónimo para referirse al protocolo de comunicación serial Serial
Peripherical Interface. Este protocolo nace casi a principios de 1980 cuando
Motorola lo comienza a introducir y desarrollar en el primer microcontrolador
derivado de la misma arquitectura del microcontrolador 680000. SPI se ha
convertido es uno de los más populares protocolos para trabajar con
comunicación serial debido a su velocidad de transmisión, simplicidad,
funcionamiento y también gracias a que muchos dispositivos en el mercado como
pantallas LCD, sensores, microcontroladores pueden trabajar con el.
El SPI
es un protocolo síncrono que trabaja en modo full duplex para recibir y
transmitir información, permitiendo que dos dispositivos pueden comunicarse
entre sí al mismo tiempo utilizando canales diferentes o líneas diferentes en
el mismo cable. Al ser un protocolo síncrono el sistema cuenta con una línea
adicional a la de datos encarga de llevar el proceso de sincronismo. Veamos
cómo funciona:
Dentro
de este protocolo se define un maestro que será aquel dispositivo encargado de
transmitir información a sus esclavos. Los esclavos serán aquellos dispositivos
que se encarguen de recibir y enviar información al maestro. El maestro también
puede recibir información de sus esclavos, cabe destacar. Para que este proceso
se haga realidad es necesario la existencia de dos registros de desplazamiento,
uno para el maestro y uno para el esclavo respectivamente. Los registros de
desplazamiento se encargan de almacenar los bits de manera paralela para
realizar una conversión paralela a serial para la transmisión de información.
Existen cuatro líneas lógicas encargadas de realizar todo el proceso:
- MOSI (Master Out Slave In):. Línea utilizada para
llevar los bits que provienen del maestro hacia el esclavo.
- MISO (Master In Slave Out):. Línea utilizada para
llevar los bits que provienen del esclavo hacia el maestro.
- CLK (Clock):. Línea proviniente del
maestro encarga de enviar la señal de reloj para sincronizar los
dispositivos.
- SS (Slave Select):. Línea encargada de
seleccionar y a su vez, habilitar un esclavo.
Se
presenta una imagen donde se tienen todas estas líneas con sus respectivos
registros de desplazamiento y su dirección de flujo:
Existen
cuatro modos en el cual se puede enviar información dependiendo de dos
párametros basados en la señal de reloj. El primer de ellos es la polaridad y
el segundo es la fase. Al tener dos parámetros donde cada uno puede tomar dos
estados se tendrá entonces cuatro modos distintos de poder llevar a cabo el
proceso de transmisión y envío de información.
- Modo 0: CPOL = 0 y CPHA = 0.
Modo en el cual el estado del reloj permanece en estado lógico bajo y la
información se envía en cada transición de bajo a alto, es decir alto
activo.
- Modo 1: CPOL = 0 y CPHA = 1.
Modo en el cual el estado del reloj permanece en estado lógico bajo y la
información se envía en cada transición de alto a bajo, es decir bajo
activo.
- Modo 2: CPOL = 1 y CPHA = 0.
Modo en el cual el estado del reloj permanece en estado lógico alto y la
información se envía en cada transición de bajo a alto, es decir alto
activo.
- Modo 3: CPOL = 1 y CPHA = 1.
Modo en el cual el estado del reloj permanece en estado lógico alto y la
información se envía en cada transición de alto a bajo, es decir bajo
activo.
Esta
puede puede brindarle una idea más intuitiva de los modos explicados
anteriormente.
La
configuración de modos es independiente para cada esclavo con esto quiere decir
que cada esclavo puede tener una configuración de CPOL y CPHA distinta a la de
otros esclavos, inclusive una frecuencia de trabajo distinta y entonces para
esto, el maestro deberá adaptarse a la configuración de cada esclavo. Por esta
razón es recomendable que el sistema trate de trabajar con los mismo parámetros
de ser posible porque sino, será un dolor de cabeza.
En este
protocolo se define únicamente un maestro y varios esclavos. La manera en la
cual estos dispositivos se conectan pueden ser de dos tipos: encadenado o
paralelo. El de tipo encadenado las entrada del mosi de cada esclavo va
conectada con el mosi del master para el primer caso o de su esclavo anterior
para el resto. Además, se utiliza un único de selección de esclavo proveniente
del maestro en forma paralela hacia cada esclavo.
Por otro
lado, en el tipo paralelo se utiliza un único mosi proviente del maestro en
forma paralela hacia cada esclavo. Además, se adiciona una línea de selección
de esclavo proveniente del maestro por cada esclavo que exista en el sistema.
Para tener
un mejor entendimiento de estas conexiones, se presenta una imagen ilustrativa:
La
transmisión de información puede darse de muchas maneras dependiendo del
fabricante, en muchos casos la línea SS habilita un esclavo cuando ésta se pone
en estado lógico cero pero eso puede cambiar. La transimisión de bits se puede
dar comenzando con el LSB o con MSB dependiendo también del fabricante, es
muchos casos se comienza por el bit más significativo. Un bit es transmitido
cada ciclo de reloj.
¿Ventajas?
Existe una serie de ventajas que ofrece este protocolo, entre ellas está la
velocidad de transmisión ya que es configurable a través de software y
dependerá también de los dipositivos utilizados en el sistema. Con respecto a
otros protocolos seriales que trabajan a modo half duplex, el SPI tiene
velocidades de transmisión mucho mayores debido a que éste trabaja en modo full
duplex. Otros parámetros configurables a través de software son la frecuencia
del reloj, la configuración de fase (CPHA) y polaridad (CPOL). Si solo existe
un esclavo, puede colocarse la línea SS fija si el esclavo lo permite. No se
limitan a trabajar con palabras de ocho bits. Es ampliamente utilizado cuando
se necesita comunicar con equipos a distancias cortas.
Rederencias:
Comentarios
Publicar un comentario