Hallo, Ich habe einen Flash Speicher MX29F040 welchen ich über einen C167 programmieren muss. Das Auslesen von Manufacturer-ID und Device-ID funktioniert, was mir sagt, dass das Absetzen der Kommandos und auch prinzipiell die Konfiguration vom Speicherinterface funktioniert. Leider komme ich mit der Erklärung im Datenblatt zum Beschreiben des Speichers nicht ganz klar. Laut Datenblatt muss ich für eine Schreiboperation zuerst zwei Unlock Kommandos senden und ein "program set-up command". Im vierten Zyklus folgen Adresse + Daten. Jetzt meine erste Frage: Aus dem Datenblatt geht für mich jetzt nicht eindeutig hervor, ob ich diese gesamte Prozedur für jedes zu schreibende Byte wiederholen muss, oder kann ich einfach weiter Daten schreiben? Wenn ja, wie weiß dann der Speicher dass ich keine Daten mehr schreiben will und er den Schreibmodus verlassen kann? Dann gibt es noch die Funktion zur Statusabrage der Schreiboperation (Toggle Bit DQ6 und Polling DQ7). Muss der Status abgefragt werden, oder könnte man hier auch mit einer entsprechenden Wartezeit arbeiten (sodass der Schreibvorgang sicher beendet ist) und danach ein Verify über den gesamten geschriebenen Bereich machen? Ich hoffe, ich habe meine Probleme nicht allzu kompliziert geschildert, und wäre für eure Hilfe sehr dankbar. Viele Grüße moax
moax schrieb: > ob ich diese gesamte Prozedur für jedes zu schreibende > Byte wiederholen muss, oder kann ich einfach weiter Daten schreiben? Die muß in der Regel für jedes Byte wiederholt werden. Das ist kein Problem und geht sehr schnell. moax schrieb: > (Toggle Bit DQ6 und Polling DQ7). Muss der Status abgefragt werden, oder > könnte man hier auch mit einer entsprechenden Wartezeit arbeiten Eleganter ist das Auswerten von D6 oder D7. Einige Bausteine brauchen anschließend noch eine zusätzliche Abfrage (siehe Datenblatt). Eine vorgegebene Wartezeit einzufügen ist ganz schlecht, da vom jeweiligen Prozessortakt anhängig.
Hallo Willi, Vielen Dank für deine Antwort - das hat mir schon sehr weitergeholfen. Was ich noch nicht ganz verstehe ist folgendes: Ich schreibe folgendermaßen ein Byte in den Flash: 1. Unlock Cycle (ADDR:0x555, DATA:0xAA) 2. Unlock Cycle (ADDR:0x2AA, DATA:0x55) 3. Write Operation CMD (ADDR:0x555, DATA:0xA0) 4. Adresse + Daten des zu schreibenden Bytes Der 5. Zyklus wäre demnach eine Read-Operation auf die geschriebene Adresse und ich kann dadurch die Statusbits lesen - richtig? Damit ich die Statusbits lese muss sich der Speicher noch im Write Mode befinden. Ab wann schaltet der Speicher wieder in den Read-Modus zurück? Ich muss ja dann gegebenenfalls öfters lesen, um festzustellen wann der Schreibzyklus abgeschlossen ist. Ich hoffe ich habe die Frage verständlich formuliert. Viele Grüße Moax
Auf den Seiten 17 + 18 wird doch der Ablauf genau gezeigt. Der "Schreibmodus" ist nur beim Schreiben (4.) des betreffenden Bytes aktiv; danach liest Du nur noch aus, um festzustellen, dass der interne Programmierzyklus abgelaufen ist.
Ein Beispiel anbei, weil heut ein schöner Tag ist. uchar = unsigned char
Danke sehr für deine Bemühungen, ich denke jetzt ist alles klar. Viele Grüße moax
Nur weil es für mich gerade aktuell ist und evtl. auch für Andere interessant werden könnte. Ich brenne, flashe zur Zeit AM29F040B mit dem GALEP4. Das klappte zu Anfang nicht. Zum Einen war wohl ein falsches Netzteil schuld ( sollte 400mA bringen ist aber nur ein 300mA gewesen ). Nach dem Wechsel des Netzteils zeigte GALEP zwar nur 10,6xV, aber das flashen klappte, wenn ich zuvor ERASE durchgeführt hatte. Bernd_Stein
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.