Paso 3: Cómo leer un diagrama de temporización
Ahora que he explicado flash, SPI, y una implementación específica de un SPI flash dispositivos, lo siguiente que necesita comprender es diagramas de tiempo de comunicación *. Diagramas de tiempo explican la secuencia de los datos a través de los pernos para emitir instrucciones al dispositivo. Cada dispositivo SPI responde a su propio conjunto de instrucciones (por ejemplo, un flash será tener una lectura o borrar instrucción) y el diagrama de tiempo es la relación entre el comportamiento conceptual de la instrucción y el protocolo de hardware real para ejecutar dicha instrucción.
En el diagrama de esta sección he copiado el diagrama de tiempo de chip erase de la hoja de datos porque es el más fácil de entender.
El eje inferior es tiempo, los ejes verticales representan cuatro pernos SPI y los datos de secuencia aparece en ellos con el tiempo para ejecutar una instrucción. Nota: "Alta impedancia" significa que usted puede ignorar esa señal (es conducido a la resistencia no 0 o 1, pero muy alta, por lo que efectivamente es un circuito abierto). De los casos cuando aparecen dos líneas (como DI) que simple representa algún tipo de transiciones están sucediendo que son desconocido; una sola línea significa un valor específico de alto o bajo.
Veamos el diagrama de izquierda a derecha y de arriba a abajo.
Para hablar a cualquier dispositivo SPI, es chip-select debe ser traído alto y luego impulsada por la baja (recuerda /CS significa bajo activo). Cuando /CS es baja, tenga en cuenta que el reloj en el diagrama se dibuja muy explícitamente para mostrar ocho fases. Esto significa que usted debe de pulso el reloj ocho veces, una vez por poco. En el momento que el reloj es el efecto estroboscópico, datos en va de alto a bajo a alto. Creo que el diagrama de DI es erróneo, porque si dibuje una línea vertical el flanco ascendente de cada reloj y calcular los valores binarios de DI en esos puntos, usted debe obtener valor 11000111 o 0xC7. Esta es la instrucción que le dice el chip para borrar a sí mismo. Una vez que alto se trae chip select, la circuitería interna comenzará ejecutando la función de borrado de 0xC7 y virutas. Esta instrucción toma aproximadamente 1 ~ 2 segundos para completar.
Tenga en cuenta, no es necesario para realmente cambiar el reloj pin 8 veces para enviar 8 bits de un byte, la biblioteca SPI hace esto para usted cuando usted utiliza la función SPI.transfer(). Todavía tendrá que conducir manualmente /CS con digitalWrite(), pero el SCK, MOSI y MISO es manejado por las funciones SPI.
Usted notará en mi código fuente una función llamada "not_busy()". Esta función emite un "registro de control de lectura #1" y comprueba el bit 0 indica si la operación interna se ha completado todavía, y el flash no está ocupado continuamente. El tiempo de esta operación coincide con figura 9.2.8 de la hoja de datos.
* Nota que no me refiero a los esquemas de distribución eléctrica, que explican el nanosegundo la configuración y tiempos para la lógica digital interna; el me refiero a los diagramas son los diagramas lógicos que ignoran nanosegundos y describir la secuencia de eventos lógicas. La sincronización eléctrica real de la interfaz SPI está a cargo de la biblioteca Arduino SPI. Y para ser honesto, ese código no es muy complejo, podría simplificarse aún más si está diseñando un dispositivo específico.