Parece que no puedo escribir en spi flash

9

Bueno, he estado atrapado en esto por un tiempo, tal vez 2-3 semanas en este punto. Simplemente no estoy seguro de lo que estoy haciendo mal. Estoy tratando de escribir en esta parte de spi flash , y ahora solo estoy ejecutando rutinas para borrar, escribir y leer para tratar de aislarlo, pero hasta ahora no tengo suerte. Por supuesto, he resuelto un montón de errores en el camino ...

De todos modos, tengo mi línea WP atada en lo alto del tablero, y reduje la velocidad del reloj a 200 kHz, luego ejecuto mi rutina de borrado y se ve así:

ingrese la descripción de la imagen aquí Primero verifico la ID solo para depurar, ese es el comando 9F, luego configuro WREN con el comando 06, C7 es todo el borrado del chip, y luego verifico el bit de estado con 05 y está claro. El tiempo de borrado de chips de esta cosa es de solo 35 ms.

Ahora recargo mi código e intento escribir:

ingrese la descripción de la imagen aquí Primero configuré WREN con 06, verifiqué el estado para ver que WREN está configurado con 05, y luego envié el comando de programa de página 02 a la dirección 0x000000. Puedes ver que estoy escribiendo deadcafe como los primeros bits. Tampoco se muestra aquí después de que se completa la escritura (una página o 256 bytes), envío el comando 0x04 para deshabilitar WREN. Lo he observado y configuré los últimos cuatro bytes del búfer de mi página para que sean 0xAA, 0x55, 0xAA, 0x55 y los vi justo antes de que el CS suba.

Ahora pare el código de recarga e intente ejecutar un ciclo de lectura: ingrese la descripción de la imagen aquí envíe 0x03 como el comando de lectura y 0x000000 como la dirección, y ... todo 0xFF desde el dispositivo.

Puedo ver el dispositivo respondiendo a mi ID de lectura y configurar los comandos WREN para que sepa que me escucha y puedo responder. No sé qué estoy haciendo mal en este momento. Creo que volveré a leer la hoja de datos y probaré algunas cosas, pero si alguien tiene alguna idea, agradecería la ayuda. Se perfila como otro fin de semana frustrante trabajando en esto.

confuso
fuente
10
Y ... lo descubrí. Si tuviera un dólar por cada vez que descubriera algo después de finalmente desesperarme lo suficiente como para publicar en algún lugar en busca de ayuda. Resulta que hay otro comando 0x98 llamado Desbloqueo global, que no se menciona en las secciones sobre habilitación de escritura o programación ... De todos modos, agregué eso antes de mi comando WREN y funcionó. disculpa por la molestia.
confundido
10
Agregue su comentario como respuesta y acéptelo.
geometrikal
De acuerdo con @geometrikal en que debe responder a su propia pregunta. No tuve más que problemas con la interfaz PIC SPI; exactamente por las mismas razones: la documentación.
Usuario.1
2
¡Hola! Usted publicó una buena pregunta hace aproximadamente un año y luego publicó una buena respuesta en los comentarios. ¡Pero la pregunta sigue apareciendo en la parte superior de la lista "Sin respuesta"! Copie sus comentarios en una respuesta y márquelo como "Aceptado". De esta manera, se gestionará correctamente y podremos votar su respuesta :)
bitsmack
1
@confundido, por favor publique su respuesta y márquela como contestada para que podamos cerrar la pregunta, Gracias
Voltaje pico

Respuestas:

3

Simplemente odio que esto todavía esté en la parte superior de la lista de "sin respuesta", así que voy a responder.

Como se indica en los comentarios de 'confundido', hay un comando llamado 'Desbloqueo global' que debe ejecutarse antes de escribir en la parte flash.

levemente balbuceado
fuente
1
Debe aceptar su respuesta, de lo contrario, esta pregunta se marcará como "sin respuesta".
Étienne