Índice de lectura:
El nombre completo en inglés de SPI es Interfaz periférica en serie y, como su nombre indica,es una interfaz periférica en serie.SPI es una especificación de interfaz de comunicación en serie síncrona, que se utiliza principalmente para la comunicación de corto alcance en sistemas integrados.La interfaz fue desarrollada por Motorola a mediados de la década de 1980 y más tarde se convirtió en un estándar de la industria.
SPI es un bus de comunicación síncrono full-duplex de alta velocidad, y solo necesita usar hasta 4 cables, ahorrando los pines del chip. SPI se utiliza principalmente en EEPROM, FLASH, ADC, DAC y otros chips, así como entre procesadores de señales digitales y decodificadores de señales digitales.
La comunicación en modo dúplex completo se utiliza entre dispositivos SPI, que es el modo maestro-esclavo de un maestro y uno o más esclavos.El host es responsable de inicializar la trama. Esta trama de transmisión de datos puede usarse tanto para operaciones de lectura como de escritura. El selector de chips puede seleccionar uno de múltiples esclavos para responder a la solicitud del host.
También se puede ver en la tabla anterior que cuando se comunica entre dispositivos SPI, el cable de datos debe estar conectado MOSI a MOSI, conectado MISO a MISO y conectado SCLK a SCLK, en lugar de conexiones inversas TX y RX como puertos serie.Cuando solo hay un único dispositivo esclavo SPI, si el dispositivo esclavo lo permite, la línea CS/SS se puede fijar directamente a un nivel bajo.Sin embargo, al igual que el MAX1242, un chip que requiere que se active el borde descendente de la línea CS/SS, la línea CC/SS debe estar conectada al host.La siguiente figura muestra el método de conexión de un maestro y un esclavo.
Para múltiples dispositivos esclavos, cada esclavo necesita una línea CS/SS para conectarse al host, a fin de lograr el propósito de que el host pueda comunicarse con cualquier esclavo.La siguiente figura muestra el método de conexión de un maestro y varios esclavos.La mayoría de los dispositivos esclavos tienen las características de la lógica de tres estados, por lo que cuando el dispositivo no se selecciona, su línea de señal MISO se convertirá en un estado de alta impedancia (desconexión eléctrica).Los dispositivos sin una salida de tres estados requieren un búfer externo de tres estados para compartir el bus SPI con otros dispositivos esclavos.
En la comunicación SPI, el dispositivo anfitrión SPI se envía al dispositivo esclavo SPI a través de la línea SCLK a una frecuencia soportada por el dispositivo esclavo. Esto también significa que el esclavo no puede enviar datos activamente al host. Solo el host sondea para enviar al esclavo o el dispositivo esclavo informa activamente al host a través de un puerto de E / s de que los datos han llegado.
Dentro de cada ciclo de reloj de la SPI, se realizará una transmisión de datos dúplex completo.Cuando el host envía 1 bit a través de la línea MOSI, el esclavo también enviará datos de 1 bit a través de la línea MISO después de leerlos.Esto muestra que incluso si solo se lleva a cabo la comunicación simplex, se mantendrá esta secuencia de comunicación.
La transmisión SPI normalmente implica dos registros de desplazamiento con una longitud de palabra dada.Por ejemplo, un registro de desplazamiento de 8 bits en el maestro y el esclavo.Están conectados en una topología de anillo virtual, y los datos generalmente se mueven primero fuera del bit más significativo.En el borde del reloj, tanto el host como el esclavo mueven 1 bit de datos de la línea de transmisión a la otra parte.Cuando llega el siguiente flanco de reloj, los receptores de ambos lados muestrean entonces el bit en la línea de transmisión y lo ajustan al nuevo bit menos significativo del registro de desplazamiento.Después de que los bits de registro se muevan hacia fuera y hacia dentro, los valores de registro de intercambio maestro y esclavo.Si es necesario intercambiar más datos, vuelva a cargar el registro de desplazamiento y repita el proceso.La transmisión puede durar cualquier número de ciclos de reloj.Una vez completado, el host deja de cambiar el reloj signal.As en la figura siguiente, se muestra un diagrama esquemático del registro de desplazamiento durante la interacción entre el maestro y el esclavo.
El proceso de comunicación en la figura anterior es el siguiente:
1. El host SPI primero baja la línea SS o CS para decirle al esclavo SPI que inicie la comunicación.
2. El host envía una señal de reloj SCLK para informar al esclavo de las próximas operaciones de lectura y escritura.La señal de reloj SCLK se determina aquí por el modo SPI si es válida a un nivel alto o a un nivel bajo, que se introducirá más adelante.
3. Los datos a enviar por el host (Maestro) se escriben en la memoria intermedia de datos de transmisión (Memoria), el área de la memoria intermedia pasa a través del registro de desplazamiento (0~7) y el registro de desplazamiento en serie mueve los bytes bit a bit al esclavo a través de la línea de señal MOSI. Al mismo tiempo, los datos recibidos por la interfaz MISO se mueven bit a bit a través del registro de desplazamiento a la memoria intermedia de recepción.
4. El esclavo también devuelve el contenido de su propio registro de desplazamiento en serie (0~7) al host a través de la señal MISO line.At al mismo tiempo, los datos enviados por el servidor se reciben a través de la línea de señal MOSI, de modo que se intercambian los contenidos de los dos registros de desplazamiento.
Hay 4 modos de funcionamiento diferentes en la comunicación SPI. Es posible que diferentes dispositivos esclavos se hayan configurado en un modo determinado en la fábrica y no se puedan cambiar.Sin embargo, la comunicación SPI debe estar en el mismo modo para continuar.Por lo tanto, debemos configurar el modo del dispositivo host SPI en nuestras manos, es decir, a través de CPOL (polaridad de reloj) y CPHA (fase de reloj) para controlar el modo de comunicación del dispositivo maestro SPI, de la siguiente manera:
La polaridad del reloj (CPOL) define el nivel de la línea de reloj SCLK cuando está inactiva:
1. CPOL=0, es decir, SCLK=0, significa que el nivel de la línea de señal de reloj SCLK en el estado inactivo es bajo, por lo que el estado efectivo es alto.
2. CPOL=1, es decir, SCLK=1, significa que el nivel de la línea de señal de reloj SCLK en el estado inactivo es alto, por lo que el estado efectivo es bajo.
La fase de reloj (CPHA) define la temporización (es decir, la fase) de los bits de datos en relación con la línea de reloj:
1. CPHA=0, lo que significa que el terminal de salida (out) cambia los datos en el flanco de salida del ciclo de reloj anterior, mientras que el terminal de entrada (in) captura los datos en el flanco de entrada del ciclo de reloj (o poco después).La salida mantiene los datos válidos hasta el borde de cola del ciclo de reloj actual.Para el primer ciclo de reloj, el primer bit de datos debe aparecer en la línea MOSI antes del borde delantero del reloj.Es decir, un período con CPHA = 0 incluye un período de medio reloj inactivo y medio reloj configurado.
2. CPHA=1, lo que significa que el terminal de salida (out) cambia los datos en el borde delantero del ciclo de reloj actual, mientras que el terminal de entrada (in) captura los datos en el borde trasero del ciclo de reloj (o poco después).La salida mantiene los datos válidos hasta el flanco delantero del siguiente ciclo de reloj.Para el último ciclo de reloj, el dispositivo esclavo mantiene activa la línea de señal MISO hasta que desaparece la señal de selección de chip.Es decir, un ciclo con CHPA = 1 incluye la mitad de un conjunto de reloj y la mitad de un ciclo inactivo de reloj.
Nota: Los bordes delantero y trasero aquí significan el primer borde que aparece y el último borde que aparece en cada uno cycle.In en general, es: cuando el reloj es un reloj hacia adelante, el flanco ascendente de la línea de reloj es el flanco delantero, el flanco descendente del reloj es el flanco trasero y viceversa.La siguiente tabla muestra los cuatro modos de comunicación SPI:
la siguiente figura muestra el diagrama de temporización de la polaridad y la fase del reloj. La línea roja representa el borde delantero del reloj, y la línea azul representa el borde trasero del reloj.
Ventajas y desventajas del protocolo SPI
La ventaja de SPI es que tiene un rendimiento más alto que I2C, no está limitado por la velocidad de reloj máxima y puede lograr una interfaz de hardware potencialmente de alta velocidad y extremadamente simple. Las resistencias pull-up utilizadas en los circuitos periféricos son menores que el protocolo I2C, lo que significa que tiene un menor consumo de energía que I2C, la fuente de reloj del esclavo proviene del dispositivo host, no es necesario agregar osciladores de precisión, el esclavo no requiere una dirección única y el número de pines utilizados se reduce considerablemente en comparación con la interfaz paralela. Ventajas.
Pero al mismo tiempo, existen ciertas desventajas, como que SPI no tiene direccionamiento en banda, cuando se usan múltiples dispositivos esclavos en diferentes modos, el dispositivo anfitrión se reinicia cuando se cambian los modos, lo que ralentizará el acceso al dispositivo esclavo, el dispositivo esclavo SPI no tiene control de flujo de hardware, y solo puede ser utilizado por el anfitrión para retrasar de forma autónoma la llegada del siguiente ciclo de reloj, y solo puede comunicarse en distancias cortas. Desventajas.Sin embargo, si se puede aplicar SPI en la dirección de evitar las deficiencias de SPI, las ventajas de SPI lo hacen muy superior a otros protocolos.