Nun, ich habe eine Weile daran festgehalten, vielleicht 2-3 Wochen an diesem Punkt. Ich bin mir nur nicht sicher, was ich falsch mache. Ich versuche, in diesen SPI-Flash-Teil zu schreiben , und jetzt führe ich nur Routinen aus, um ihn zu löschen, zu schreiben und zu lesen, um zu versuchen, ihn zu isolieren, aber bisher kein Glück. Natürlich habe ich ein paar Fehler auf dem Weg behoben ...
Wie auch immer, ich habe meine WP-Leitung hoch auf dem Brett gebunden und die Uhr auf 200 kHz verlangsamt. Dann führe ich meine Löschroutine aus und es sieht so aus:
Zuerst überprüfe ich die ID nur für das Debuggen, das ist der 9F-Befehl, dann setze ich WREN mit dem Befehl 06, C7 ist das vollständige Löschen des Chips, 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 zu schreiben:
Zuerst setze ich WREN mit 06, überprüfe den Status, um festzustellen, ob WREN mit 05 eingestellt ist, und sende dann den Seitenprogrammbefehl 02 an die 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 Befehl 0x04 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 das Neuladen des Codes und versuchen Sie, einen Lesezyklus auszuführen : Senden 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 reagiert, und WREN-Befehle festlegen, damit ich weiß, dass es mich hört und antworten kann. Ich weiß derzeit nicht, was ich 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 wird ein weiteres frustrierendes Wochenende, an dem wir an dieser Sache arbeiten.
Antworten:
Ich hasse es einfach, dass dies immer noch ganz oben auf der "unbeantworteten" Liste steht, also werde ich antworten.
Wie in den Kommentaren von "verwirrt" angegeben, gibt es einen Befehl namens "Global Unlock", der ausgeführt werden muss, bevor in den Flash-Teil geschrieben wird.
quelle