www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AT45DB (DataFlash): Adressierung


Autor: Andreas K. (all-finder)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo beisammen,

folgende Frage bzgl. der Adressierung des ATMEL AT45DB081D (ausgegangen 
von einer Pagegröße von 256byte). Ich habe 20 bit Werte,

9bit für den Block | 3bit für die Page des Blocks | 8bit für ein Byte

lt. Datenblatt sollen die 3 Adressbytes nach dem opcode übertragen 
werden. Wie werden diese zusammengesetzt? Habe ja 24bit für 20bit 
Adressen zu Verfügung stehen. Sollen diese vorne oder hinten angehangen 
werden?

Pinzipell möchte ich Hex-Daten im Speicher ablegen und da diese von 
anderen Schnittstellen kommen sind mir 256byte-Blöcke sympatischer als 
264byte Blöcke. Oder gibts hierzu andere Meinungen?

Danke, MfG

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Da steht alles drin.

Autor: genau so (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich verwende 264byte Bloecke und habe pro 256Bye noch 8 Byte fuer CRC 
und dergleichen.

Autor: Andreas K. (all-finder)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
danke. (wer lesen kann... ist klar im vorteil) warum auch immer die 
abbildungen im anhang sein müssen.. :(

okay, is ne idee.. wie hoch ist die wahrscheinlichkeit für einen 
übertragungsfehler zw. speicher und controller? (abstand nicht mehr als 
4 mm, keine störquellen in direkter übergebung, bei 8MHz)

Autor: genau so (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es geht weniger um Uebertragungsfehler als um Speicherfehler. Zugegeben, 
die Atmel Datenflash sind NOR-Flash und daher viel zuverlaessiger als 
NAND-Flash, aber eben nicht 100%. Diese 8 Byte verwendet man am Besten 
als speicher fuer Hammingcode, damit kann man je nach Code-Laenge 1 bit 
Fehler korrigieren kann. Ein CRC ist eigentlich 2. Wahl, da man damit 
allenfalls einen Fehler erkennen, aber nicht korrigieren kann.

Autor: Andreas K. (all-finder)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Etwas offtopic, möchte aber keinen neuen Thread eröffnen:
- ich kann während z.B. Buffer 1 in den Speicher schreibt nicht 
gleichzeitig in Buffer 2 schreiben?!
- und schlimmer, während ein Speicherbereich gelöscht wird, ist der 
Speicher ebenfalls "busy"?

:(

also wäre es sinnvoll, vor der Schreibinteraktion den Speicherbereich zu 
löschen...

Autor: ahem (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Waehrend der Buffer1 in Flash kopiert wird kann man nauterlich in den 
Buffer2 schreiben. Das dauert so um die paar ms.

Autor: Andreas K. (all-finder)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann verstehe ich das DB nicht, dort steht, dass (z.B. unter 7.8, 
letzter Satz), dass das Statusregister angibt, dass der "Teil" busy ist. 
Nur kann ich beim Statusregister nicht Bereiche abfragen, sondern nur 
den Gesamtstatus des Speichers...

Autor: Andreas K. (all-finder)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
evtl. hier noch ein Auszug...

Autor: ahem (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Both the erase and programming are self timed.... ja. aber waehrend 
dieser Zeit kann man in den anderen Bbuffer schreiben. Im Prinzip kann 
man waehrend der Programmierzeit den anderen Buffer gesammt fuellen und 
so dauernd programmieren. Damit erreicht man die maximale Schreibrate 
von 1 Seite/ Programmierzeit.

Autor: ahem (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry das ist der falsche mode. Nicht main memory page through buffer, 
sondern ... buffer write + buffer to main memory with built in erase.

Autor: Andreas K. (all-finder)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ahem wrote:
> Sorry das ist der falsche mode. Nicht main memory page through buffer,
> sondern ... buffer write + buffer to main memory with built in erase.

Ist das nicht das selbe? Während des Vorgangs "buffer to main memory 
with built in erase." ist der Speicher wieder busy. Bei jeder Funktion 
(außer beim Schreiben in einen Buffer) steht eine Wartezeit...

oder habe ich nur die Busyeigenschaft vom Datenregister falsch 
aufgefasst?

Autor: ahem (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist das nicht das selbe?

Nein, ist es nicht. Denn der andere Buffer ist benutzbar (schreibbar). 
Ohne Wartezeit. Das Busy bezieht sich auf den Vorgang, der dauert.

Autor: ahem (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich betreib meine Datenflash immer so. Jeweils 4ms Wartezeit waeren 
nicht tragbar.

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.