Diagrama de temporización del protocolo SPI y explicación detallada de la aplicación práctica de los cuatro modos

Hola a todos, soy Wuji.

En el último capítulo explicamos la definición de la interfaz spi, hoy explicaremos el diagrama de tiempo del protocolo spi y el uso de los cuatro modos de spi con más profundidad.

Cuando entré en contacto por primera vez con el desarrollo de MCU, tenía más miedo de mirar el diagrama de tiempo, que es un conocimiento extraño para mí.

Especialmente para SPI e IIC, antes de escribir programas, copiaron directamente los programas de otras personas, y las funciones se realizaron, y no estudiaron el tiempo de transmisión de datos.

En ese momento, no tenía experiencia y la información que buscaba en Internet era demasiado académica y no podía entenderla.

Después de hacer muchos proyectos, descubrí que los buses de comunicación más utilizados no son más que SPI, IIC, USART, CAN y comunicación de puerto único.

La comprensión se ha profundizado gradualmente, y ahora es más claro analizar el diagrama de tiempo.

Por lo tanto, a menudo inculco un concepto con los estudiantes de programación de Wuji MCU, primero aprende a usarlo y luego será más fácil usarlo más y obtener más experiencia .

No mueras cuando no tengas experiencia, de lo contrario pagarás muchos costos de tiempo innecesarios.

A continuación, entramos en el tema.

1. Explicación detallada de los cuatro modos de spi

Antes de hablar sobre el diagrama de tiempo, primero debemos comprender los cuatro modos de spi, y los diferentes modos recopilan datos de diferentes maneras.

Generalmente, en la microcomputadora de un solo chip con función SPI incorporada, hay dos bits de configuración de registro CPOL y CPHA.

Tomemos como ejemplo el microcontrolador STM32, que se puede configurar a través de miembros de la estructura.

Esto se configura directamente a través de la biblioteca de firmware, y el código subyacente de la biblioteca de firmware también se usa para configurar los registros correspondientes.

Vamos a presentar para qué son útiles CPOL y CPHA.

CPOL es para determinar el estado de nivel de la línea de señal de reloj SCLK cuando no hay transmisión de datos.

CPOL=0: en estado inactivo, SCLK permanece bajo

CPOL=1: en estado inactivo, SCLK mantiene un nivel alto

CPHA es para determinar si la transmisión de bits de datos comienza desde el primer borde del reloj (SCLK) o el segundo desde el segundo borde del reloj (SCLK).

CPHA=0: los datos se recopilan desde el primer borde del reloj (SLCK)

CPHA=1: Los datos se recopilan desde el borde del segundo reloj (SLCK)

Bien, después de comprender los conceptos básicos de CPOL y CPHA, los dos siguientes comenzarán a "combinarse".

La combinación de CPOL y CPHA forma los cuatro modos de SPI.

Descargo de responsabilidad: Algunas imágenes son de Internet y no son originales.

Analicemos la diferencia entre los cuatro modos, que es más importante.

Debido a que el esclavo, el esclavo se refiere al chip que utiliza el protocolo SPI para comunicarse, como el chip w25q64 (Flash), la pantalla OLED, etc.

Muchos esclavos no tienen bits de configuración de registro CPOL y CPHA. Si observa sus hojas de datos, se confundirá y no podrá encontrar estas dos cosas en absoluto.

Todos estos deben mirar sus diagramas de tiempo para analizar qué modo se usa.Si el modo es incorrecto, habrá problemas con la transmisión de datos.

Es por eso que es posible usar la secuencia de tiempo escrita por mí mismo en este chip, pero no cambiar a otros chips de comunicación spi.

1. Modo 0 (CPOL=0, CPHA=0)

Características del modo 0:

CPOL = 0: nivel bajo cuando está inactivo, el primer borde de transición es el borde ascendente y el segundo borde de transición es el borde descendente

CPHA = 0: los datos se muestrean en el primer flanco de transición (flanco ascendente)

 

 

2. Modo 1 (CPOL=0, CPHA=1)

Características del modo 1:

CPOL = 0: nivel bajo cuando está inactivo, el primer borde de transición es el borde ascendente y el segundo borde de transición es el borde descendente

CPHA = 1: los datos se muestrean en el segundo flanco de transición (flanco descendente)

 

3. Modo 2 (CPOL=1, CPHA=0)

CPOL = 1: nivel alto cuando está inactivo, el primer borde de transición es un borde descendente y el segundo borde de transición es un borde ascendente

CPHA = 0: los datos se muestrean en el primer flanco de transición (flanco descendente)

 

4. Modo 3 (CPOL=1, CPHA=1)

CPOL = 1: nivel alto cuando está inactivo, el primer borde de transición es un borde descendente y el segundo borde de transición es un borde ascendente

CPHA = 1: los datos se muestrean en el segundo flanco de transición (flanco ascendente)

No sé si ha descubierto que los diferentes modos son en realidad la diferencia entre el estado de nivel del tiempo de inactividad de SCLK y el punto de partida del muestreo de datos.

¿Eres un inútil? Al principio, estaba confundido por estos modos.

Si no entiende, continúe leyendo desde el principio. Estos 4 modos son la premisa para analizar el diagrama de tiempo general más adelante.

 

2. Explicación detallada del diagrama de tiempo spi

Felicitaciones aquí, podrá romper completamente el protocolo SPI de inmediato.

Diagrama de tiempo Spi, la mejor manera es aprender a través de la aplicación práctica.

Tomemos como ejemplo el chip W25Q64 Flash, este chip actúa como esclavo en la comunicación SPI, es decir, SPI Slave.

En general, se utiliza una microcomputadora de un solo chip u otro procesador como maestro para comunicarse con él, y el maestro también envía el reloj SLCK.

El siguiente es el diagrama de tiempo del comando de lectura de datos W25Q64, usamos este ejemplo para explicar cómo mirar el diagrama de tiempo.

 

1. Primero determine qué SPI y qué modo admite el chip para leer y escribir datos

Después de determinar qué modo usar, el control maestro, es decir, la microcomputadora de un solo chip, puede determinar el método de recopilación de datos, y el control maestro y el esclavo deben ser consistentes.

Del diagrama de tiempo, no es difícil encontrar que la hoja de datos de W25Q64 le dice directamente que admite el modo 0 y el modo 3 de SPI para la comunicación.

Las hojas de datos de algunos chips no te lo dicen, entonces, ¿cómo sabes qué modo usar?

Paso 1: analice el estado de nivel de CLK cuando está inactivo a través del diagrama de tiempo. Del diagrama de tiempo anterior, podemos saber que tanto los niveles altos como los bajos están bien, ¿verdad? Luego continuaremos analizándolo con el estado de que CLK es bajo cuando está inactivo.

Paso 2: Analice si DI y DO recopilan datos en el flanco ascendente o descendente de CLK Tenga en cuenta que DI representa el pin MISO del esclavo (W25Q64) y DO representa el pin MOSI del esclavo (W25Q64).

Principalmente juzgamos si CLK está subiendo o bajando cuando DI y DO están en el área válida de datos.

¿Cuál es el área válida de datos?

Mire la imagen de arriba, el área que enmarqué en rojo es el área de datos válida.

Generalmente, los datos se transmiten a través de los dos pines de DI y DO, por lo que el área válida de los datos es que en este momento, los dos pines solo pueden estar en un nivel alto o bajo estable.

El nivel equivalente al área de datos efectiva es el último bit de datos que se transmitirá, el nivel bajo representa 0 y el nivel alto representa 1 .

Se transmiten 8 bits, lo que representa 1 byte de datos.

¿Qué es un área de datos no válidos?

Por ejemplo, el área del cuadro azul en la figura anterior es el área de datos no válidos. Es en este momento que el reloj de adquisición de datos CLK aún no ha llegado, por lo que los niveles de los pines DI y DO se pueden cambiar arbitrariamente. .

Después de comprender estos dos conceptos, debemos centrarnos en si CLK sube o baja cuando DI y DO están en el área de datos válidos .

En la figura anterior se puede ver que cuando DI y DO están en el área de datos válidos, CLK está en el borde ascendente y en el borde descendente, DI y DO están en el área de datos no válidos donde el nivel se puede cambiar arbitrariamente.

De esta manera, los patrones pueden ser analizados.

En primer lugar, el flanco ascendente recopila datos y, mediante el método de exclusión, solo el modo 0 y el modo 3 cumplen las condiciones.

Entonces el tiempo de inactividad de CLK debe ser bajo, de modo que solo se cumpla el modo 0.

Por lo tanto, después de saber que se usa el modo 0, el programa escrito en la MCU sabrá si los datos se leen desde el flanco ascendente de CLK, si se envían o desde el flanco descendente.

 

2. Analizar el tiempo total

Para analizar el tiempo, primero debemos estar familiarizados con la función que debe cumplir este tiempo. Aunque las diferentes funciones tienen diferentes tiempos, el orden y la definición de envío de datos son diferentes.

El tiempo que estamos analizando ahora es leer los datos almacenados del chip Flash W25Q64.

Dividí todo el tiempo en 3 partes de acuerdo con la secuencia de pulso CLK :

① Comando de lectura

Cabe señalar aquí que los datos de instrucciones de lectura se generan en el pin DI de W25Q64, y DI es equivalente a MISO de W25Q64, que es para recibir los datos enviados por el control maestro (generalmente una microcomputadora de un solo chip).

Por lo tanto, este comando de lectura (0x03) es enviado por la MCU a W25Q64 .

0x03 se divide en 8 bits y se transmite en la línea DI, y se transmite 1 bit en cada flanco ascendente de CLK.

②Dirección de 24 bits

Después de enviar el comando de lectura, la MCU continúa enviando la dirección de memoria de 24 bits, lo que equivale a leer los datos de la dirección de memoria de W25Q64.

Estos datos están determinados por el programa MCU, por lo que no son fijos. Puede ver que los bits de datos pueden ser altos o bajos.

③MCU recibe datos

En este momento, los roles de las partes de la comunicación han cambiado, la MCU se ha convertido en el receptor de datos y el W25Q64 se ha convertido en el remitente de datos.

Porque los datos se envían desde el DO de W25Q64, que es el pin MOSI de W25Q64.

A través de esta secuencia, el microcontrolador puede leer los datos almacenados en la dirección especificada por W25Q64.

Si eres un estudiante de nuestra programación de computadoras de un solo chip Wuji, si no entiendes bien el artículo, puedes darme tu opinión. Si hay demasiadas personas que dan su opinión, lo explicaremos en vivo. Si hay pocas gente, lo explicaremos uno a uno.

3. Atención del programa MCU

Los microcontroladores 51 generalmente no tienen un módulo SPI incorporado, por lo que se debe simular todo el tiempo escribiendo un programa, denominado SPI simulado.

El microcontrolador STM32 generalmente tiene un SPI incorporado, por lo que no es necesario escribir un programa para simular el tiempo y aplicarlo directamente.

Pero si usa el SPI incorporado, hay un detalle que es particularmente fácil de ignorar, es decir, cuando lee datos, debe enviar un byte de datos de valor arbitrario antes de leer un byte.

Enviar un byte de datos de valor arbitrario es generar un reloj en el bus CLK para proporcionar un reloj para la señal SPI del esclavo, y el SPI del esclavo no generará la señal CLK por sí mismo.

Por ejemplo, tengo la siguiente función de lectura de datos:

Si puede entender este paso, básicamente ha entendido el protocolo SPI.

No importa cómo se cambie el esclavo, por ejemplo, en lugar de W25Q24, se reemplaza con una pantalla OLED, el principio de sincronización es el mismo, pero las instrucciones y los registros relacionados son diferentes.

Si es útil para usted, organice una fiesta de tres para mí ~

Supongo que te gusta

Origin blog.csdn.net/weixin_43982452/article/details/123131398
Recomendado
Clasificación