¿Cuál es el uso de SPI en Embedded Board?

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.

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.

SPI es un protocolo de comunicación de hardware / firmware desarrollado por motorolla y luego por microhilo.

Es un protocolo dúplex completo de 4 hilos

El bus SPI especifica cuatro señales lógicas:

SCLK: Reloj serie (salida del maestro).

MOSI: Salida maestra, entrada esclava (salida del maestro).

MISO: entrada maestra, salida esclava (salida desde esclava).

SS: Slave Select (activo bajo, salida del maestro).

Cómo usarlo en microcontroladores Arduino:

Biblioteca SPI

Esta biblioteca le permite comunicarse con dispositivos SPI, con Arduino como dispositivo maestro.

Una breve introducción a la interfaz periférica en serie (SPI)

La interfaz periférica en serie (SPI) es un protocolo de datos en serie síncrono utilizado por microcontroladores para comunicarse rápidamente con uno o más dispositivos periféricos en distancias cortas. También se puede utilizar para la comunicación entre dos microcontroladores.

Con una conexión SPI, siempre hay un dispositivo maestro (generalmente un microcontrolador) que controla los dispositivos periféricos. Por lo general, hay tres líneas comunes a todos los dispositivos:

  1. MISO (Master In Slave Out): la línea Slave para enviar datos al maestro,
  2. MOSI (Master Out Slave In): la línea maestra para enviar datos a los periféricos,
  3. SCK (reloj serie): los pulsos de reloj que sincronizan la transmisión de datos generada por el maestro y una línea específica para cada dispositivo:
  4. SS (Slave Select): el pin en cada dispositivo que el maestro puede usar para habilitar y deshabilitar dispositivos específicos.

Cuando el pin Slave Select de un dispositivo está bajo, se comunica con el maestro. Cuando es alto, ignora al maestro. Esto le permite tener múltiples dispositivos SPI que comparten las mismas líneas MISO, MOSI y CLK.

Para escribir código para un nuevo dispositivo SPI, debe tener en cuenta algunas cosas:

¿Cuál es la velocidad máxima de SPI que puede usar su dispositivo? Esto es controlado por el primer parámetro en SPISettings. Si está utilizando un chip de 15 MHz, use 15000000. Arduino usará automáticamente la mejor velocidad que sea igual o menor que el número que usa con SPISettings.

¿Los datos se desplazan primero en el bit más significativo (MSB) o en el bit menos significativo (LSB)? Esto se controla mediante el segundo parámetro SPISettings, MSBFIRST o LSBFIRST. La mayoría de los chips SPI usan el primer orden de datos de MSB.

¿Está inactivo el reloj de datos cuando está alto o bajo? ¿Hay muestras en el borde ascendente o descendente de los pulsos de reloj? Estos modos están controlados por el tercer parámetro en SPISettings.

El estándar SPI es flexible y cada dispositivo lo implementa de manera un poco diferente. Esto significa que debe prestar especial atención a la hoja de datos del dispositivo al escribir su código.

En términos generales, hay cuatro modos de transmisión. Estos modos controlan si los datos se desplazan hacia adentro y hacia afuera en el borde ascendente o descendente de la señal del reloj de datos (llamada fase de reloj), y si el reloj está inactivo cuando está alto o bajo (llamado polaridad del reloj). Los cuatro modos combinan polaridad y fase de acuerdo con esta tabla:

Modo Polaridad del reloj (CPOL) Fase del reloj (CPHA) Captura de datos de borde de salida

  • SPI_MODE0 0 0 Falling Rising
  • SPI_MODE1 0 1 Rising Falling
  • SPI_MODE2 1 0 Rising Falling
  • SPI_MODE3 1 1 Falling Rising

Una vez que tenga sus parámetros SPI, use SPI.beginTransaction () para comenzar a usar el puerto SPI. El puerto SPI se configurará con todos sus ajustes. La forma más simple y eficiente de usar SPISettings es directamente dentro de SPI.beginTransaction (). Por ejemplo:

SPI.beginTransaction (SPISettings (14000000, MSBFIRST, SPI_MODE0));

Si otras bibliotecas usan SPI por interrupciones, se les impedirá acceder a SPI hasta que llame a SPI.endTransaction (). La configuración de SPI se aplica al comienzo de la transacción y SPI.endTransaction () no cambia la configuración de SPI. A menos que usted, o alguna biblioteca, llame a beginTransaction por segunda vez, la configuración se mantiene. Debe intentar minimizar el tiempo entre antes de llamar a SPI.endTransaction (), para una mejor compatibilidad si su programa se usa junto con otras bibliotecas que usan SPI.

Con la mayoría de los dispositivos SPI, después de SPI.beginTransaction (), escribirá el pin de selección esclavo LOW, llamará a SPI.transfer () cualquier cantidad de veces para transferir datos, luego escribirá el pin SS HIGH y finalmente llamará a SPI.endTransaction () .

Para obtener más información sobre SPI, consulte la página de Wikipedia sobre SPI.

Es el protocolo de comunicación llamado Interfaz periférica en serie que se utiliza para comunicarse entre dos dispositivos o circuitos integrados. Es un protocolo sincronizado.

Tiene una velocidad muy alta que I2C y cualquier otra de unos 10 MB / s. Algunas de sus versiones tienen una velocidad diferente a la original.

Los inconvenientes son que es un protocolo dentro de la caja que significa que la distancia entre dos dispositivos es limitada, requiere cuatro pines para convertirse en un functiomal completo y un punto en común entre ellos.

Es un protocolo muy fácil de implementar.

Solo EXPLORA las cosas.