SPI se ha ganado un papel sólido en los sistemas embebidos, ya sea que se trate de sistemas en procesadores de chips, tanto con procesadores de 32 bits de gama alta como los que usan ARM, MIC o Power PC y con otros microcontroladores como AVR, PIC, etc. incluyen controladores SPI capaces de ejecutarse en modo maestro o esclavo. Los controladores AVR programables en el sistema se pueden programar utilizando una interfaz SPI. Los diseños basados en chips o FPGA a veces usan SPI para comunicarse.
Algunas de las características que permiten que SPI sea ampliamente utilizado son:
1. Comunicación dúplex completa.
- ¿Qué debo hacer si tengo interés en la incrustación y la robótica, pero estoy en mi tercer año en E&TC?
- ¿Cuál es el sistema operativo integrado más utilizado?
- ¿Cuáles son las habilidades / conocimientos básicos necesarios para la programación integrada / sistemas / firmware?
- ¿Cuál es la historia de System on Chips (SoC)?
- ¿Qué distribución de Linux es mejor para desarrolladores integrados?
2. Mayor rendimiento que TWI.
3. No se limita a palabras de 8 bits en el caso de transferencia de bits.
4. Interfaz de hardware simple
5. Elección arbitraria de tamaños de mensajes, contenido y propósito.
6. Requisitos de baja potencia típicamente
7. Slave usa el reloj maestro y no requiere osciladores de precisión.
8. Requisitos de energía más bajos que TWI debido a menos circuitos.
Sin embargo, sería injusto comparar la interfaz serial TWI con SPI. Cada uno de ellos tiene su área de aplicación dependiendo de la necesidad del sistema, como algunas de las características que hacen que TWI sea tan valioso como SPI.
1. Menos número de pines en paquetes IC que SPI
2. El control de flujo de hardware está presente
3. Tiene un estándar formal a diferencia de SPI
4. Se dirige a los esclavos antes de la comunicación.
CÓMO FUNCIONA SPI: –
La comunicación es iniciada por el maestro todo el tiempo. El maestro primero organiza el reloj usando una frecuencia, que es menor o igual a la frecuencia máxima que admite el dispositivo esclavo. Ahora, este maestro SPI controla la transferencia de datos mediante la generación de la señal de reloj (SCLK). El maestro luego selecciona el esclavo deseado para la comunicación tirando de la línea de selección de chip (SS) de ese periférico esclavo en particular al estado “bajo” y activa el Esclavo particular con el que desea comunicarse utilizando la señal de selección de esclavo (SS). Una vez que se selecciona el esclavo, recibe o transmite datos a través de las dos líneas de datos. Un maestro, generalmente el microcontrolador host, siempre proporciona señal de reloj a todos los dispositivos en un bus, esté o no seleccionado. Los esclavos en el bus que no ha sido activado por el maestro usando su señal de selección de esclavo ignorarán las señales de entrada de reloj y MOSI del maestro, y no deben conducir MISO. Eso significa que el maestro selecciona solo un esclavo a la vez.
El uso de estos cuatro pines puede depender de los dispositivos. Por ejemplo, el pin SDI puede no estar presente si un dispositivo no requiere una entrada (ADC por ejemplo), o el pin SDO puede no estar presente si un dispositivo no requiere una salida (controladores LCD por ejemplo). Si un microcontrolador solo necesita hablar con 1 periférico SPI o un esclavo, entonces el pin CS en ese esclavo puede estar conectado a tierra. Con múltiples dispositivos esclavos, se necesita una señal SS independiente del maestro para cada dispositivo esclavo.
¿Cuál es el significado de la salida Triestatal en SPI?
En la electrónica digital, la lógica de tres estados, tri-estados o 3 estados permite que un puerto de salida asuma un estado de alta impedancia además de los niveles lógicos 0 y 1, eliminando efectivamente la salida del circuito. Esto permite que múltiples circuitos compartan la misma línea o líneas de salida (como un bus que no puede escuchar más de un dispositivo a la vez. La mayoría de los dispositivos / periféricos tienen salidas de tres estados, que pasan al estado de alta impedancia (desconectado) cuando el dispositivo no está seleccionado Los dispositivos sin estas salidas de tres estados no pueden compartir el bus SPI con otros dispositivos, ya que la selección de chip de este esclavo puede no activarse.
Ahora, si se requiere un período de espera (como para la conversión de analógico a digital), el maestro debe esperar al menos ese período de tiempo antes de comenzar a emitir ciclos de reloj. En el SPI maestro, los bits se envían desde el pin MOSI y se reciben en el pin MISO. Los bits que se desplazarán se almacenan en el registro de datos SPI, SP0DR, y se envían primero el bit más significativo (bit 7). Cuando el bit 7 del maestro se desplaza a través del pin MOSI, un bit del bit 7 del esclavo se desplaza al bit 0 del maestro a través del pin MISO. Después de 8 pulsos o cambios de reloj, este bit finalmente terminará en el bit 7 del maestro. El bit menos significativo se puede enviar primero estableciendo el bit LSBF en 1 en el registro de control SPI. El reloj que controla qué tan rápido se desplazan los bits hacia SP0DR es la señal SCLK. La frecuencia de este reloj puede controlarse mediante el registro de velocidad de transmisión SPI, SP0BR. El pin SS debe estar bajo para seleccionar un esclavo. A continuación se muestra un sistema SPI completo.
Un dúplex completo significa que la transmisión de datos puede ocurrir en ambas direcciones durante cada ciclo de reloj. Entonces, cuando el maestro envía un bit en la línea MOSI; el esclavo lo lee desde esa misma línea y el esclavo envía un bit en la línea MISO; el maestro lo lee desde esa misma línea. Ahora, para realizar la transferencia de datos, se utilizan registros de desplazamiento organizados con un tamaño de palabra determinado, como 8 bits (puede ser más) tanto en maestro como en esclavo. Están conectados en un anillo. Mientras el maestro desplaza el valor del registro a través de la línea MOSI, el esclavo desplaza los datos a su registro de desplazamiento.
Los datos generalmente se desplazan primero con el bit más significativo de MSB, mientras que el nuevo bit menos significativo de LSB se transfiere al mismo registro. Después de que ese registro se ha desplazado, el maestro y el esclavo han intercambiado sus valores de registro. Luego, cada dispositivo toma ese valor y realiza la operación necesaria con él (por ejemplo, escribiéndolo en la memoria). Si hay más datos para intercambiar, los registros de desplazamiento se cargan con datos nuevos y el proceso se repite. Cuando no hay más datos para transmitir, el maestro detiene su reloj. Normalmente, luego rechaza al esclavo.
Hay un “modo de flujo de bytes múltiples” disponible con la interfaz de bus SPI. En este modo, el maestro puede cambiar bytes continuamente. En este caso, la selección de esclavos (SS) se mantiene baja hasta que todo el proceso de transmisión finaliza.
Los dispositivos SPI a veces usan otra línea de señal para enviar una señal de interrupción a una CPU host. Algunos de los ejemplos de este tipo de señales son las interrupciones de los sensores de la pantalla táctil, las alertas de límite térmico de los sensores de temperatura, las alarmas emitidas por chips de reloj en tiempo real y las inserciones de los auriculares del códec de sonido en un teléfono celular.