Red de conocimiento informático - Problemas con los teléfonos móviles - ¿Quién ha utilizado el programa SPI flash W25Q64B? ¿Puedes compartirlo?

¿Quién ha utilizado el programa SPI flash W25Q64B? ¿Puedes compartirlo?

Para obtener más información, consulte Introducción al microcontrolador STC51 (lenguaje C). La versión publicada del documento se titula "Introducción sencilla al microcontrolador 51: basado en la serie STC15W4K".

Capítulo 24 Memoria Flash Rom de 2 MB W25Q16/W25X16

Comprensión de Flash Rom

FlashRom es una memoria de solo lectura que se borra rápidamente, lo que a menudo se denomina "memoria flash ", la memoria de programa del microcontrolador es Flash Rom. La llamada "memoria flash" es un tipo de memoria no volátil, que es un producto mejorado de EEPROM. Su característica más importante es que los datos deben borrarse en bloques y el chip tiene una gran capacidad (W25Q16 tiene una capacidad de 2 M bytes), mientras que EEPROM puede operar en un solo byte y el chip tiene una capacidad pequeña (24c512 tiene una capacidad de 65536 bytes). La capacidad del primero es 32 veces mayor que la del segundo. Además, la velocidad de lectura y escritura de Flash Rom es mayor que la de EEPROM y el precio del chip es básicamente el mismo. El precio de venta al público del W25Q16 es de 3,5 yuanes. FlashRom no sólo se utiliza en la industria * *, sino que también se utiliza ampliamente en la electrónica de consumo. Por ejemplo, los dispositivos de almacenamiento comunes, como unidades flash USB, tarjetas SD y tarjetas CF, utilizan FlashRom como dispositivo de almacenamiento principal.

Clasificación de la memoria flash Rom

El primer lote de memoria flash NOR de Intel

La memoria flash NAND fue producida por primera vez por Hitachi, un 90% más corta que la memoria flash NOR. almacenamiento y eliminación de datos más rápido. Ampliamente utilizado en tarjetas SD, tarjetas XD, tarjetas SM, tarjetas CF y otras tarjetas de memoria.

Si se utiliza para almacenar pequeñas cantidades de datos, la memoria flash NOR es más adecuada, mientras que la memoria flash NAND es una solución ideal para alta densidad de datos. Por ejemplo, la memoria de programa de un microcontrolador es memoria flash NOR en Flash Rom, y las tarjetas de memoria o discos USB comunes usan memoria flash NAND.

Conozca W25X16/W25Q16

Este artículo presenta principalmente W25X16, que es compatible con W25X16 y tiene mejor rendimiento. W25Q16 mantiene todas las funciones y compatibilidad de pines con la serie W25X y agrega características eficientes como entrada y salida dual/cuádruple. El W25Q tiene una frecuencia de reloj de 80 MHz y una velocidad de lectura (secuencial) equivalente de 320 megabits (40 megabytes) por segundo, que es más de 6 veces la del flash serie estándar de 50 MHz. Al mismo tiempo, W25Q reduce la cantidad de relojes necesarios para cada instrucción de lectura de 40 a 12, lo que reduce aún más la carga de instrucciones de "lectura aleatoria" en un 70%. El precio de venta al público del W25Q16 es de 3,5 yuanes. Pertenecen al tipo flash NOR y se usan comúnmente en el empaque de chips, lo que puede reducir el área de la placa impresa.

archivo:///C:/DOCUME ~ 1/ADMINI ~ 1/LOCALS ~ 1/Temp/msohtml 1/01/clip _ imagen 002 jpg archivo:///C:/DOCUME ~. 1/ADMINI ~ 1/LOCALS ~ 1/Temp/msohtml 1/066

W25X16 tiene bits de almacenamiento de 16 Mbit.

Debido a que 1024 bits es 1K, 16 mbit = 16 * 1024 * 1024 = 1677216 bits, se puede ver el bit W25X16 en el diagrama de estructura de memoria del manual. Los 3 bits altos de la dirección de 24 bits se fijan en 0 (0 (w25x 64) solo requiere los 3 bits más altos), la dirección efectiva es solo 21 bits, 2 elevado a la potencia 21 = 2097152 bytes y 2097152 bytes almacenados exactamente 1677216 bits.

W25X16 está dividido en 8192 páginas, cada página tiene 256 bytes. El comando de programación de páginas se puede usar para programar 256 bytes a la vez, el comando de borrado de sector se puede usar para borrar 16 páginas a la vez. y el comando de borrado de bloques se puede utilizar para programar 256 bytes a la vez, se pueden borrar 256 páginas a la vez, y todo el chip se puede borrar a la vez con el comando de borrado general. Para W25X16 y 1 página = 256 bytes, en resumen,

1 página = 256 bytes

1 sector = 16 páginas = 16*256 bytes = secciones de 4096 palabras (W25X16 tiene 512 sectores).

1 bloque = 256 páginas = 256*256 bytes = 65536 bytes (32 bloques en W25X16).

Utiliza la interfaz SPI estándar para comunicarse con el microcontrolador y la velocidad de reloj máxima es de 75 M. La disposición de los pasadores de W25X16 se muestra en la siguiente figura.

file:///C:/DOCUME ~ 1/ADMINI ~ 1/LOCALS ~ 1/Temp/msohtml 1/01/clip _ image 006 jpg

Número de pines.

Nombre del pin

Tipo de entrada y salida

Función

1

/CS

I

Selección de chip, operación de bajo nivel, estado de alta impedancia del pin DO de alto nivel.

2

Orden de defensa

O

Salida de datos, salida de flanco descendente

Tres

/WP

I

Protección contra escritura, el registro de estado de protección de bajo nivel no se reescribirá.

Cuatro

GND

Tierra

Cinco

Dior

Entrada - Salida

Entrada/salida de datos

VI

CLK

I

Reloj

Siete

/Hold

I

Hold, retención de nivel bajo

Ocho

VCC

Fuente de alimentación, 2,7-3,6 V

Descripción:

DIO: En modo normal, este pin es un pin de entrada serie (DI), a través del cual, datos, dirección y Los comandos se envían al chip y se capturan en el borde ascendente del pin CLK. Cuando se utiliza la "Instrucción de salida dual de lectura rápida", este pin se convierte en el pin DO. En este caso, el chip tiene dos pines DO, por lo que se denomina salida dual. En este momento, la velocidad de comunicación del chip equivale a duplicarse, por lo que la velocidad de transmisión es más rápida.

7 agujas (/hold): Sujeta las agujas. Cuando la selección del chip /CS es de nivel bajo y el nivel de retención es bajo, el pin DO está en un estado de impedancia alta, las señales en los pines DIO y CLK se ignorarán, HOLD se elevará y el dispositivo reanudará su funcionamiento normal. Este pin es útil cuando el chip comparte la misma interfaz SPI con muchos otros chips. Normalmente, este pin está conectado a un nivel alto para garantizar el funcionamiento normal del chip.

No es necesario hacer nada, simplemente conéctate directamente. Los puertos del w25 son compatibles con 5V. Con un 1117-3.3V, puedes *usar* 5V, o 5V puedes usar dos diodos para obtener 3.6V, que también está muy cerca de 3.3V.

Registro de estado interno W25X16 (todos los bits se borran durante el reinicio del encendido)

Siete

Seis

Cinco

Cuatro

Tres

2

1

Sociedad de Investigaciones Psíquicas

Bit reservado(0)

Tuberculosis

BP2

BP1

BP0

WEL

p>

Ocupado

Ocupado:

Bit de solo lectura, cuando el chip realiza "programación de página", "borrado de sector", "borrado de bloque", "Se establece automáticamente en 1 al ejecutar" Instrucciones de "Borrado de chip" o "Escribir registro de estado". En este momento, todas las instrucciones excepto la instrucción "leer registro de estado" no son válidas. Cuando se completen las instrucciones para programar, borrar y escribir el registro de estado, cambiará automáticamente a 0, lo que indica que el chip puede recibir.

Bit de protección contra escritura WEL:

Bit de solo lectura, indicador de permiso de operación de escritura. Al ejecutar la instrucción de habilitación de escritura, este bit es 1, lo que indica que la operación de escritura está permitida y 0, lo que indica que la operación de escritura está prohibida. Cuando el chip se apaga o ejecuta los comandos de desactivación de escritura, programa de página, borrado de sector, borrado de bloque, borrado de chip y registro de estado de escritura, ingresará automáticamente al estado de protección contra escritura.

Bits de protección de bloque BP2, BP1, BP0:

Los bits legibles se utilizan para la protección de bloque y se pueden modificar escribiendo el comando de registro de estado. Cuando estos tres bits son 0, el área del bloque no está protegida. Cuando el bit SPR es 1 o el pin /WP está bajo, estos tres bits no se pueden cambiar.

archivo:///C:/DOCUME ~ 1/ADMINI ~ 1/LOCALS ~ 1/Temp/msohtml 1/01/clip _ imagen 008 jpg

TB abajo arriba. Bits de protección de bloque:

Los bits de lectura y escritura utilizados para proteger el bloque superior inferior se pueden modificar escribiendo el comando de registro de estado. Cuando este bit es 0, el área inferior superior del módulo no está protegida y este bit no se puede cambiar cuando el bit SPR es 1 o el pin /WP está bajo.

Bit de protección del registro de estado SPR:

Bit de lectura y escritura, el significado es el siguiente.

Sociedad de Investigación Psíquica

/WP

Memoria de estado

Fácil de leer

1

Fácil de leer

1

No puedo leer ni escribir

1

1

Fácil leer

W25X16 incluye 15 instrucciones básicas. A través de estas 15 instrucciones básicas y el bus SPI, se puede controlar completamente el chip. Después de que /CS baja, la instrucción comienza a transmitirse. El primer byte de datos en el pin DIO es el código de instrucción. Los datos DIO se recopilan en el flanco ascendente del pin CLK, con el bit alto primero.

Las instrucciones varían en longitud desde 1 byte hasta varios bytes, a veces seguidas de bytes de dirección, bytes de datos, bytes virtuales y, a veces, una combinación de estos. La transferencia de instrucciones se completa en el flanco ascendente del pin /CS. Todas las instrucciones de lectura pueden completarse en cualquier bit de reloj, mientras que todas las instrucciones de escritura, programación y borrado pueden completarse después de un límite de bytes. De lo contrario, la instrucción no tendrá efecto. Esta característica protege el chip de escrituras accidentales.

Nombre de la instrucción

Byte 1

Byte 2

Byte 3

Byte 4

Byte 5

Byte 6

Siguiente byte

Escritura permitida

06H

Escritura prohibida

04H

Leer registro de estado

05H

(S7~S0)

Escribir registro de estado

01H

S7~S0

Leer datos

03H

A23~A16

A15~ A8

A7~A0

(D7~D0)

Siguiente byte

Continuar

Lectura rápida

0BH

A23~A16

A15~A8

A7~ A0

Byte ficticio

D7~D0

Siguiente byte

Salida dual de lectura rápida

3BH

A23~A16

A15~A8

A7~A0

Byte ficticio

I /O=(D6, D4, D2, D0) O=(D7, D5, D3, D1)

1 byte cada 4 ciclos de reloj

Programación de páginas

02H

A23~A16

A15~A8

A7~A0

(D7~D0)

Siguiente byte

Hasta 256 bytes

Borrar bloque (64K)

D8H

A23~A16

A15~A8

A7~A0

Borrado de sector (4K)

20H

A23 ~A16

A15~A8

A7~A0

Borrado de chip

C7H

Corte de energía CA

B9H

Liberar falla de energía/ID del dispositivo

Lesiones personales

Byte ficticio

Byte ficticio

Pseudo byte

(ID7~ID0)

Fabricación ID del equipo

90H

Pseudo byte

Pseudo byte

00H

(M7~M0)

(ID7~ID0)

ID JEDEC

9FH

(M7~M0)

(ID15~ID8 )

(ID7~ID0)

Nota: Los datos de orden superior tienen prioridad y los datos entre paréntesis indican que los datos se leen desde el pin DO.

Habilitación de escritura 06H:

El comando de habilitación de escritura establecerá la posición WEL del registro de estado. Antes de ejecutar cada comando de "Programación de página", "Borrado de sector", "Borrado de bloque", "Borrado de chip" y "Registro de estado de escritura", primero debe configurar la posición wel y luego tirar del pin /cs hacia Bajo, luego ingrese el código de comando de habilitación de escritura 06H desde el pin Dior, recójalo en el borde ascendente de CLK y luego tire del pin /CS hacia arriba.

file:///C:/DOCUME ~ 1/ADMINI ~ 1/LOCALS ~ 1/Temp/msohtml 1/01/clip _ image 010 jpg

Escritura prohibida 04H. :

El tiempo es el mismo que el de habilitar escritura. Después de ejecutar los comandos del programa de página, borrado de sector, borrado de bloque, borrado de chip y registro de estado de escritura, el bit WEL cambiará automáticamente a 0, es decir, entrará automáticamente en el estado de inhibición de escritura.

Leer el registro de estado 05H

Cuando /CS baja, 05H se envía desde el pin DIO al chip y el chip recopila los datos en el flanco ascendente de CLK. . Cuando el chip reconoce que los datos recopilados son 05H, el chip generará el valor del "registro de estado" desde el pin DO y los datos se generarán en el flanco descendente de CLK, con el bit alto primero.

La instrucción para leer el registro de estado se puede utilizar en cualquier momento, incluso durante el proceso de programación, borrado y escritura del registro de estado, de modo que la programación y el borrado se puedan juzgar a partir del bit BUSY del estado. registro y si el ciclo de escritura del registro de estado ha terminado, para saber si el chip puede recibir la siguiente instrucción. Si /CS no se eleva, el valor del registro de estado siempre saldrá del pin DO, y cuando /CS se eleva, la instrucción finalizará. La secuencia de tiempo para leer el registro de estado se muestra en la siguiente figura.

file:///C:/DOCUME ~ 1/ADMINI ~ 1/LOCALS ~ 1/Temp/msohtml 1/01/clip _ image 012

Escribir registro de estado. 01H

Antes de ejecutar la instrucción de registro de estado de escritura, debe presionar "tiempo de habilitación de escritura" para ejecutar la instrucción "habilitar escritura" y luego bajar /CS nuevamente para enviar 01H desde el pin Dior a Luego envíe el valor del registro de estado requerido al chip, tire de /CS hacia arriba y la instrucción finalizará. Si el pin /CS no se afirma alto en este momento, o se afirma más tarde, este valor no se escribirá.

archivo:///C:/DOCUME ~ 1/ADMINI ~ 1/LOCALS ~ 1/Temp/msohtml 1/01/clip _ image 014 jpg

Leer datos 03H.

El comando de lectura de datos permite leer uno o más bytes. Primero, baje /CS, envíe 03H desde el pin Dior al chip y luego envíe la dirección de 24 bits al chip. Estos datos son recopilados por el chip en el flanco ascendente del reloj. El chip recibe 24 bits y los emite desde el pin DO en el flanco descendente del pin CLK, con el bit alto primero. Después de leer los datos de esta dirección, la dirección se incrementa automáticamente y luego los datos de la siguiente dirección se envían a través del pin DO. En otras palabras, mientras CLK esté funcionando, una instrucción puede leer todos los datos en toda el área de almacenamiento del chip, elevar el pin /CS y finalizar la instrucción de "leer datos". Cuando el chip ejecuta el programa, borra y lee las instrucciones del registro de estado, la instrucción "leer datos" no es válida.

archivo:///C:/DOCUME ~ 1/ADMINI ~ 1/LOCALS ~ 1/Temp/msohtml 1/01/clip _ imagen 016 jpg

Programación de página 02H.

Antes de ejecutar las instrucciones de programación de la página, debe borrar toda el área a escribir, asegurarse de que todas las áreas a escribir sean 1 y luego presionar "Write Enable Sequence" para ejecutar "Write Enable". instrucción, y luego baje /CS, envíe 02H desde el pin Dior al chip, luego envíe la dirección de 24 bits al chip y luego envíe el byte que se escribirá en el chip. Después de escribir los datos, abra /CS. Después de escribir una página, la dirección debe cambiarse a 0. De lo contrario, si el reloj continúa, esta dirección se convertirá automáticamente en la dirección inicial de la página. Si se escriben menos de 256 bytes, los demás bytes escritos no tienen significado. Si los bytes escritos son mayores que 256 bytes, los bytes adicionales y los bytes inútiles sobrescribirán los 256 bytes recién escritos, por lo que es necesario asegurarse de que los bytes escritos sean menores o iguales a 256 bytes. Si la dirección que se está escribiendo está protegida contra escritura, el comando Programa de búsqueda no tiene ningún efecto.

archivo:///C:/DOCUME ~ 1/ADMINI ~ 1/LOCALS ~ 1/Temp/msohtml 1/01/clip _ imagen 018 jpg

archivo:/. //C:/DOCUME ~ 1/ADMINI ~ 1/LOCALS ~ 1/Temp/msohtml 1/01/clip _ image 020 jpg

Sector borrar 20H

Sector El sector. El comando de borrado borra un sector (4096 bytes) y todos los bytes del sector borrados son FFH. Antes de ejecutar el comando de borrado de sector, debe presionar "Secuencia de activación de escritura" para completar el comando "Activación de escritura", luego bajar /CS nuevamente, enviar 20H desde el pin Dior al chip y luego enviar el comando de borrado de sector de 24 bits. sector a la dirección del área del chip y luego tire /CS hacia arriba, el comando finaliza. Si no es a tiempo en este momento, si la dirección borrada está protegida contra escritura, el comando "borrar sector" no será válido.

archivo:///C:/DOCUME ~ 1/ADMINI ~ 1/LOCALS ~ 1/Temp/msohtml 1/01/clip _ image 022 jpg

Borrar bloque D8H.

El comando de borrado de bloque borra un bloque (65, 536 bytes) y todos los bytes del sector borrados son FFH. Antes de ejecutar el comando de borrado de bloque, debe presionar "Write Enable Sequence" para completar el comando "Write Enable", luego bajar /CS nuevamente, enviar D8H desde el pin DIO al chip y luego enviar el archivo de 24 bits. sector a la dirección del chip, y luego tire /CS hacia arriba, el comando finaliza. Si la dirección borrada está protegida contra escritura, el comando de borrado en bloque no tiene ningún efecto.

Chip Erase C7H

El comando de borrado de chip borra toda el área de almacenamiento del chip. Después de borrar, los bytes de toda el área de almacenamiento del chip son FFH. Antes de ejecutar el comando de borrado del chip, debe presionar "Write Enable Timing" para completar el comando "Write Enable", luego tirar /CS hacia abajo nuevamente, enviar C7H desde el pin DIO al chip y luego tirar /CS hacia arriba. El comando termina. Si el pin /CS no se eleva a tiempo en este momento, este comando no tendrá ningún efecto. Cualquier bloque está protegido contra escritura y el comando "Borrar bloque" no tiene ningún efecto.