Kann anscheinend nicht in Spi Flash schreiben

Nun, ich hänge schon eine Weile daran fest, vielleicht 2-3 Wochen an diesem Punkt. Ich bin mir einfach nicht sicher, was ich falsch mache. Ich versuche, in diesen Spi-Flash-Teil zu schreiben , und jetzt führe ich nur Routinen zum Löschen, Schreiben und Lesen aus, um zu versuchen, ihn zu isolieren, aber bisher kein Glück. Natürlich habe ich auf dem Weg ein paar Fehler behoben ...

Wie auch immer, ich habe meine WP-Leitung hoch auf dem Brett gebunden, und ich habe den Takt auf 200 kHz verlangsamt, dann führe ich meine Löschroutine aus und es sieht so aus:

Geben Sie hier die Bildbeschreibung einZuerst überprüfe ich die ID nur für Debug, das ist der 9F-Befehl, dann setze ich WREN mit dem 06-Befehl, C7 ist der gesamte Chip-Löschvorgang, und dann überprüfe ich das Statusbit mit 05 und es ist klar. Die Chip-Löschzeit dieses Dings beträgt nur 35 ms.

Jetzt lade ich meinen Code neu und versuche einen Schreibvorgang:

Geben Sie hier die Bildbeschreibung einZuerst setze ich WREN mit 06, überprüfe den Status, um zu sehen, dass WREN mit 05 gesetzt ist, es ist, dann sende den Seitenprogrammbefehl 02 an Adresse 0x000000. Sie können sehen, dass ich Deadcafe als die ersten paar Bits schreibe. Auch hier nicht abgebildet ist, dass ich nach Abschluss des Schreibvorgangs (eine Seite oder 256 Bytes) den 0x04-Befehl sende, um WREN zu deaktivieren. Ich habe das beobachtet und die letzten vier Bytes meines Seitenpuffers auf 0xAA, 0x55, 0xAA, 0x55 gesetzt, und ich habe sie gesehen, kurz bevor der CS hoch geht.

Stoppen Sie nun den Reload-Code und versuchen Sie, einen Lesezyklus auszuführen: Geben Sie hier die Bildbeschreibung einSenden Sie 0x03 als Lesebefehl und 0x000000 als Adresse und ... alle 0xFF vom Gerät zurück.

Ich kann sehen, wie das Gerät auf meine Lese-ID antwortet, und WREN-Befehle festlegen, damit ich weiß, dass es mich hört und antworten kann. Ich weiß nicht, was ich an dieser Stelle falsch mache. Ich denke, ich werde wieder das Datenblatt lesen und einige Dinge ausprobieren, aber wenn jemand einen Einblick hat, würde ich mich über die Hilfe freuen. Es entwickelt sich ein weiteres frustrierendes Wochenende, an dem ich an diesem Ding arbeite.

Und... ich habe es herausgefunden. Wenn ich jedes Mal einen Dollar hätte, wenn ich etwas herausgefunden habe, nachdem ich endlich verzweifelt genug war, um irgendwo Hilfe zu suchen. Es stellt sich heraus, dass es einen anderen Befehl 0x98 namens Global Unlock gibt, der in den Abschnitten über die Schreibfreigabe oder Programmierung nicht erwähnt wird ... Wie auch immer, ich habe das vor meinem WREN-Befehl hinzugefügt und es hat funktioniert. Entschuldigung für die Mühe.
Fügen Sie Ihren Kommentar als Antwort hinzu und akzeptieren Sie ihn.
Stimme @geometrikal zu, dass du deine eigene Frage beantworten solltest. Ich hatte nichts als Probleme mit der PIC-SPI-Schnittstelle; aus genau den gleichen Gründen: die Dokumentation.
Danke, das verdient Glückwünsche. Ich habe einen Tag verschwendet, bis ich das gefunden habe.
Hi! Sie haben vor ungefähr einem Jahr eine gute Frage gestellt und dann eine gute Antwort in den Kommentaren gepostet. Aber die Frage erscheint immer noch ganz oben in der "Unbeantwortet"-Liste! Bitte kopieren Sie Ihre Kommentare in eine Antwort und markieren Sie diese als "Akzeptiert". Auf diese Weise wird es korrekt verwaltet und wir können Ihre Antwort positiv bewerten :)
@confused Bitte posten Sie Ihre Antwort und markieren Sie sie als beantwortet, damit wir die Frage schließen können. Danke

Antworten (1)

Ich hasse es nur, dass dies immer noch ganz oben auf der Liste der „unbeantworteten“ steht, also werde ich antworten.

Wie in den Kommentaren von 'confused' angegeben, gibt es einen Befehl namens 'Global Unlock', der vor dem Schreiben in den Flash-Teil ausgeführt werden muss.

Sie sollten Ihre Antwort akzeptieren, ansonsten wird diese Frage immer noch als "unbeantwortet" markiert.