Forum: Mikrocontroller und Digitale Elektronik 29F040 Flash Speicher - Programmierung


von moax (Gast)


Lesenswert?

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

von Willi (Gast)


Lesenswert?

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.

von moax (Gast)


Lesenswert?

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

von Willi (Gast)


Lesenswert?

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.

von Willi (Gast)


Angehängte Dateien:

Lesenswert?

Ein Beispiel anbei, weil heut ein schöner Tag ist.
uchar = unsigned char

von moax (Gast)


Lesenswert?

Danke sehr für deine Bemühungen, ich denke jetzt ist alles klar.

Viele Grüße

moax

von Bernd S. (Firma: Anscheinend Corner-Cases ;-)) (bernd_stein)


Lesenswert?

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
Noch kein Account? Hier anmelden.