Non riesco a scrivere su Spi Flash


9

Beh, sono stato bloccato su questo per un po ', forse 2-3 settimane a questo punto. Non sono sicuro di cosa sto facendo di sbagliato. Sto provando a scrivere su questa parte di spi flash , e ora sto solo eseguendo routine per cancellare, scrivere e leggere per cercare di isolarlo, ma finora senza fortuna. Ovviamente ho risolto un sacco di bug lungo la strada ...

Comunque ho la mia linea WP legata in alto sul tabellone e ho rallentato il clock fino a 200 khz, quindi ho eseguito la mia routine di cancellazione e sembra così:

inserisci qui la descrizione dell'immagine Prima controllo l'ID solo per il debug, questo è il comando 9F, quindi ho impostato WREN con il comando 06, C7 è l'intero chip-cancella, quindi controllo il bit di stato con 05 ed è chiaro. Il tempo di cancellazione del chip di questa cosa è di soli 35 ms.

Ora ricarico il mio codice e provo a scrivere:

inserisci qui la descrizione dell'immagine Prima ho impostato WREN con 06, controllare lo stato per vedere che WREN è impostato con 05, lo è, quindi inviare il comando 02 del programma di pagina all'indirizzo 0x000000. Puoi vedere che scrivo deadcafe come i primi bit. Anche qui non è raffigurato dopo il completamento della scrittura (una pagina o 256 byte), invio il comando 0x04 per disabilitare WREN. L'ho osservato e ho impostato gli ultimi quattro byte del mio buffer di pagina su 0xAA, 0x55, 0xAA, 0x55 e li ho visti appena prima che il CS salisse.

Ora interrompi il caricamento del codice e prova a eseguire un ciclo di lettura: inserisci qui la descrizione dell'immagine invia 0x03 come comando di lettura e 0x000000 come indirizzo e ... tutti 0xFF indietro dal dispositivo.

Riesco a vedere il dispositivo che risponde al mio ID di lettura e impostare i comandi WREN in modo da sapere che mi sente e può rispondere. Non so cosa sto sbagliando a questo punto. Immagino che tornerò a leggere il foglio dati e provare alcune cose, ma se qualcuno ha qualche idea apprezzerei l'aiuto. Si sta preparando per essere un altro weekend frustrante a lavorare su questa cosa.


10
E ... l'ho capito. Se avessi un dollaro per ogni volta che avrei capito qualcosa dopo essere diventato finalmente abbastanza disperato da pubblicare un posto per chiedere aiuto. Si scopre che c'è un altro comando 0x98 chiamato Global Unlock, che non è menzionato nelle sezioni sull'abilitazione della scrittura o sulla programmazione ... Ad ogni modo aggiungendolo prima del mio comando WREN e ha funzionato. scusa per il disturbo.
confuso il

10
Aggiungi il tuo commento come risposta e accettalo.
geometrikal,

Concordando con @geometrikal che dovresti rispondere alla tua domanda. Non ho avuto altro che problemi con l'interfaccia PIC SPI; per gli stessi identici motivi: la documentazione.
Utente 1,

2
Ciao! Hai pubblicato una buona domanda circa un anno fa e poi hai inserito una buona risposta nei commenti. Ma la domanda viene ancora visualizzata nella parte superiore dell'elenco "Senza risposta"! Copia i tuoi commenti in una risposta e contrassegnalo come "Accettato". In questo modo verrà gestito correttamente e possiamo votare la tua risposta :)
bitsmack,

1
@confuso inserisci la tua risposta e contrassegnala come risposta in modo da poter chiudere la domanda, grazie
Voltage Spike

Risposte:


3

Odio il fatto che sia ancora in cima all'elenco "senza risposta", quindi ho intenzione di rispondere.

Come affermato nei commenti da 'confuso', esiste un comando chiamato 'Sblocco globale' che deve essere eseguito prima di scrivere nella parte flash.


1
Dovresti accettare la tua risposta, altrimenti questa domanda sarà comunque contrassegnata come "senza risposta".
Étienne,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.