Cómo implementar SPI SCK con ESP8266

Tengo un ESP8266-01 y un chip de memoria Microchip 23LC1024 que se comunica a través del bus SPI y quiero manejarlo con el ESP8266-01. Mi pensamiento es implementar el protocolo SPI en el software, es decir, bit-banging. Mi preocupación es acerca de conducir la señal del reloj en tiempos muy específicos. Básicamente, esta pregunta es una pregunta genérica sobre SPI: si SPI es un protocolo síncrono, lo que significa que el reloj del maestro le dice al esclavo cuándo leer/escribir datos, ¿la frecuencia del reloj debe ser muy específica? Quiero decir, ¿el reloj debe ir ALTO y BAJO en intervalos de tiempo muy rígidos?

use un módulo esp8266 con pines SPI de hardware accesibles

Respuestas (1)

La frecuencia del reloj es irrelevante, siempre que sea lo suficientemente baja.

La hoja de datos dice que la frecuencia máxima es de 20 MHz, por lo que limita la velocidad más alta. Eso equivale a un período de reloj de 50 ns.

El otro requisito para el reloj es que debe estar alto durante al menos 25 ns y bajo durante al menos 25 ns, lo que da un total de 50 ns.

El tercer requisito para el reloj es que debe hacer una transición lo suficientemente rápida, debe ir de bajo a alto y de alto a bajo en 20 ns.

No hay ningún requisito de frecuencia de reloj mínima o valor máximo para que el reloj sea alto o bajo. Puede transmitir bits con la irregularidad que desee, e incluso tomar períodos de tiempo infinitamente largos entre bits.

¿El requisito de que debe ser alto para 25 ns y bajo para 25 ns no es en realidad un requisito para una frecuencia máxima? ¿Cual es la diferencia entre ellos?
OK, agregaré una palabra para aclarar eso. ¿Mejor?
ok, básicamente el segundo contiene al primero. ¡Gracias! Entonces, si el ESP8266 funciona a 160 Mhz, ¿necesito asegurarme de agregar retrasos en mi código entre las instrucciones para poner el reloj en ALTO y BAJO?
Sí, correcto, lo más probable es que alternar el reloj alto y bajo resulte en un reloj demasiado rápido. Hay muchas formas de hacer retrasos. Pero hubiera pensado que los dispositivos ESP32 tienen hardware SPI, ¿estás seguro de que no tiene interfaz de hardware SPI? ¿ES ESP8266-01 de alguna manera especial para que no tenga SPI?
El ESP8266-01 no rompe los pines SPI, solo 4 GPIO. Lo hago principalmente con fines educativos.