Forum: Compiler & IDEs Probleme mit Atmel DataFlash


von Matze (Gast)


Angehängte Dateien:

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

von Μαtthias W. (matthias) Benutzerseite


Lesenswert?

Hi

für ein AT45DB041B hab ich fertigen Code da und würde auch mal über 
deinen kucken aber mit .rar kann ich nichts anfangen (nein, ich werde 
mir keine extra Software für das Format installieren)

Matthias

von Matze (Gast)


Angehängte Dateien:

Lesenswert?

verlangt ja auch keiner :-)...

dann hier einmal die c datei

von Matze (Gast)


Angehängte Dateien:

Lesenswert?

und die header datei...

von rene (Gast)


Lesenswert?

Ich hatte nur einen schnellen Blick. Zuerst muss man das RAM Füllen dann 
den Schreibbefehl geben, das lesen geht genauso.

rene

von Matze (Gast)


Lesenswert?

es gibt auch einen befehl der dass beides hintereinander macht. da kann 
man sich das schreiben in einen puffer sparen.

von A.K. (Gast)


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.

von Μαtthias W. (matthias) Benutzerseite


Lesenswert?

Hi

Datenblatt:
http://www.atmel.com/dyn/resources/prod_documents/doc3597.pdf

Es geht also garnichts? Oder kannst du zumindest die ID lesen? Geht nur 
das Schreiben von Daten nicht? WP/ Pin Beschaltung?

Matthias

von Matze (Gast)


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.

von Μαtthias W. (matthias) Benutzerseite


Lesenswert?

Hi

Problem dürfte beim Schreiben liegen. Du mußt zuerst einen der beiden 
Buffer befüllen (mit dem BufferWrite Kommando) und dann das Kommando zum 
Schreiben des Buffer ins Flash absetzen.

Matthias

von Matze (Gast)


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??

von Μαtthias W. (matthias) Benutzerseite


Lesenswert?

Hi

stimmt eigentlich. Hatte ich nicht richtig hingekuckt. Kannst ja mal die 
Schreibbefehle über die Buffer testen. Als ertsten Test würde ich dir 
aber empfehlen einfach mal einen Buffer mit Daten zu befüllen und sofort 
wieder auszulesen. Dann kannst du dir sicher sein das die Kommunikation 
passt.

Matthias

von Matze (Gast)


Angehängte Dateien:

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.

von Matze (Gast)


Angehängte Dateien:

Lesenswert?

und den neuen c file

von Matze (Gast)


Lesenswert?

hab auch nochmal buffer 2 getestet und da bekomme ich nur völligen 
unsinn zurückgegeben.

von Matze (Gast)


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...

von Matze (Gast)


Lesenswert?

hat keiner eine idee wo der fehler liegen könnte???

von O. D. (odbs)


Angehängte Dateien:

Lesenswert?

Vielleicht hilft Dir das weiter?

Das ist der Quelltext für den Dataflash-Treiber des Linux-Kernels. Der 
SPI-Kram ist allerdings woanders untergebracht. Dieser Treiber 
funktioniert zumindest bei mir ohne Probleme.

von Matze (Gast)


Lesenswert?

hilft mir nicht wirklich weiter, aber trotzdem danke :-)

von Mehmet K. (mkmk)


Angehängte Dateien:

Lesenswert?

Da gibt es eine AppNote AVR335 von Atmel. Betrifft zwar den AT45DB161B, 
aber vielleicht hilft es dir weiter.

von Matze (Gast)


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 :-)

von Herrmann (Gast)


Angehängte Dateien:

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

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.