mikrocontroller.net

Forum: Compiler & IDEs Probleme mit Atmel DataFlash


Autor: Matze (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Μαtthias W. (matthias) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Matze (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
verlangt ja auch keiner :-)...

dann hier einmal die c datei

Autor: Matze (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
und die header datei...

Autor: rene (Gast)
Datum:

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

rene

Autor: Matze (Gast)
Datum:

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

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Μαtthias W. (matthias) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

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

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

Matthias

Autor: Matze (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Μαtthias W. (matthias) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Matze (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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??

Autor: Μαtthias W. (matthias) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Matze (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Autor: Matze (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
und den neuen c file

Autor: Matze (Gast)
Datum:

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

Autor: Matze (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Matze (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hat keiner eine idee wo der fehler liegen könnte???

Autor: Oliver Döring (odbs)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Autor: Matze (Gast)
Datum:

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

Autor: Mehmet Kendi (mkmk)
Datum:
Angehängte Dateien:

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

Autor: Matze (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 :-)

Autor: Herrmann (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.