Probleme mit Atmel DataFlash

Gast #501466
Lesenswert?

Schönen guten Tag,

ich versuche mich gerade an einem Flashspeicherchip von Atmel 
(AT45DB312D). Leider bekomme ich ihn nicht zum laufen. Habe schon alles 
mögliche probiert. Kann auch nicht genau bestimmen ob das lessen oder 
das schreiben nicht funktioniert. vielleicht könnte mal einerder sich 
damit schon beschäftigt hat über den code gucken.

mfg
matze
Angehängte Dateien:
Gast #501959
Lesenswert?

Man muss bei den AT45DBs ein bischen aufpassen. Die sehen alle irgendwie 
gleich aus, von der Kapazität mal abgesehen. Ein genauerer Blick ins 
Datasheet zeigt indes, dass sie es nicht sind. Das fängt damit an, dass 
das 011er nur einem Puffer hat, ab dem 041er aber zwei drin sind.

Und es betrifft auch die SPI-Schnittstelle, die zumindest bei den 
kleinen Typen zum SPI Mode 0 der AVRs inkompatibel sind (man landet 1 
Bit daneben), nur in Mode 3 funktionieren. Der 321er allerdings hat ein 
anderes Verhalten im SPI, nennt sich auch anders, das zu AVR Mode 0 
kompatibel aussieht. Möglicherweise hängt das SPI-Verhalten aber auch 
noch vom Command-Code ab. Immerhin gibt es für die gleiche Operation 2 
verschiedene Kommandos, ohne dass Atmel verrät wo der Unterschied liegt. 
Da fehlen eindeutig einpaar Seiten in den Datasheets.
Gast #502163
Lesenswert?

Also die ID kann ich lesen. Bekomme auch das was ich erwarte. Also 
funktioniert die. Das Statusregister kann ich auch lesen.
Habe dann versucht einen Block zu schreiben (einfach 1 - 528) und den 
wieder zurück zu lesen. Doch leider bekomme ich nur den wert 128 wieder. 
und das in allen 528 byte. kann nicht genau definieren welche der beiden 
funktionen nicht funktioniert.
Gast #502215
Lesenswert?

aber ich nutze doch den "ProgramMainMemoryTroughBuffer" Befehl. Der 
schreibt zuerst die Daten in einen Puffer. Wenn dann CS wieder auf High 
geht, wird die Page im MainMemory gelöscht und anschließend der Inhalt 
des Puffers in die Page geschrieben. Oder funktioniert dieser Befehl 
nicht so richtig??
Gast #502296
Lesenswert?

also ich hab mal zum testen einen block in buffer 1 geschrieben und 
wieder zurückgelesen. und da passt schon was nicht. hab wieder von 0 bis 
527 reingeschrieben und dann wieder gelesen. bis byte 99 bekomme ich 
werte, aber auch nicht die richtigen. bei byte 99 erwarte ich den wert 
99, bekomme aber 98. und ab byte 100 bekomme ich nur noch null zurück.
könnte der chip kaputt sein??? hänge mal die neue headerdatei an.
Angehängte Dateien:
Gast #503181
Lesenswert?

Ich hab da noch mal ne frage zur adressierung..
zum schreiben in den puffer wird eine pufferadresse gefordert. Da der 
nur 528 byte groß its, und ich 528 byte schreibe, gehe ich mal davon aus 
dass die bei null beginnt.

ich würde jetzt gern wissen ob er die pufferadresse automatisch 
hochzählt, oder ob ich bei jedem byte die adresse neu setzen muss...
Gast #509110
Lesenswert?

Das hab ich auch schon gelesen. Steht auch nicht viel mehr als im 
Datenblatt.
Aber ich hab den Fehler selbst gefunden....die mosileitung war nicht 
richtig verlötet. und so gingen wohl daten verloren...dann noch ein paar 
kleine änderungen am code und es funktioniert alles wunderbar :-)
Gast #525828
Lesenswert?

Hallo

Habe auch ein Problem mit dem Data Flash 16Mb

So funktioniert er prima aber ich bekomme beim lesen von Pages immer 
doppelte daten

d.h

Page 0  Daten1
Page 1 Daten1

Page 1 sollte aber Daten 2 liefern und so führt sich das fort

wenn ich page+=2 nehme dann sind die Daten sauber hintereinander.


Habe allerdings meinen eigenen Code

Könnt Ihr mal drüberschauen???

Danke
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren