Forum: Mikrocontroller und Digitale Elektronik SST26VF016B Flash Speicher Adressierung


von GG (Gast)


Angehängte Dateien:

Lesenswert?

Mahlzeit! :)

Ich beschäftige mich gerade erstmalig mit einem Flash Speicher 
(SST26VF016B). Kommuniziere mit dem Ding über SPI... soweit, so gut! 
Jetzt Frage ich mich, kann ich überhaupt einzelne Adressen beschreiben? 
Oder muss ich immer einen kompletten Sektor/Block füllen? Außerdem 
verstehe ich nicht, wie und wo ich überhaupt speichern darf. Im 
Datenblatt finde ich nichts zur Adressierung...?

von Florian (Gast)


Lesenswert?

Steht alles im DB.....
Adressierung ist Byte weiße.
Du kannst 1 bis max 256 Bytes in einem rutsch schreiben
aber nur bis zum 256 Byte Page boundary sonst gibt es einen
wrap arround zum Page Anfang.

Einfach etwas überschreiben geht nicht, halt flash typisch, also
muss zuvor gelöscht werden. Kleinste erase Größe ist ein. 4k Sektor.

Der Chip ist bei Power Up global schreib geschützt, also muss zuvor
die Blockprotection gelockert werden, mit z.b. dem global unprotect  cmd
ist er dann komplett beschreibbar.. mit den NvLock Bits kann die
Protection nach Power Up blockweiße auch abgeschaltet werden (einmalig).

Vor jedem schreiben und löschen ist das write enable cmd nötig.

Lesen geht im burst wenn nötig von Anfang bis Ende....

Dies mal grob zur  essentiellen Nutzung, weitere Möglichkeiten und
Feinheiten sind alle im DB dokumentiert...

Gruß
Florian



werden.

von GG (Gast)


Lesenswert?

Danke soweit. Ich wundere mich nur, warum es 8kB, 32kB und 64kB Blöcke 
gibt. Ich hatte einfach nur sorge, dass vielleicht in den ersten Blöcken 
irgendwelche Statusregister liegen könnten. Wieso legt man überhaupt 
unterschiedlich große Blöcke an?

von Florian (Gast)


Lesenswert?

Die 8KByte und 32KByte Blöcke bieten dir Bereiche mit einer
feineren granulrität. Die 8KByte Blöcke können zudem auch
zusätzlich gegen lesen geschützt werde.
Diese spezielle Aufteilung gibt es nur in den ersten und letzten
64KByte. Den gesamten Bereich (vgl. Memmap) kannst du für deine
Daten nutzen, da überschreibst du höchstens deine eigenen Daten...

Gruß Florian

von GG (Gast)


Lesenswert?

Hallo noch mal!

Es geht noch immer um meinen SST26VF016B Flash Speicher. Kurz gesagt; 
die Schreibgeschwindigkeit ist zu langsam!

In meinem Fall müsste ich alle 10us 3-4 Bytes wegschreiben können und 
das in Summe von etwa 100kB. Die 256Byte Puffer reichen also nicht aus.

Der oben genannte Chip benötigt für das speichern eines Bytes etwas über 
50us. Volle 256 Byte sind nach rund 1100us gespeichert... das sind nicht 
mal 0,25MB/s für die reine Speicherzeit??? Ich hätte wirklich nicht 
gedacht, dass die Dinger so langsam sind.

Was kann man machen? Mehrere Chips seriell beschreiben? Oder gibt es 
schnellere Flash Speicher? Habe ich vielleicht etwas übersehen und der 
kleine Chip könnte doch schneller arbeiten?

von Pete K. (pete77)


Lesenswert?

Nutzt Du denn quad-spi mit 104Mhz? Laut Datenblatt soll sich eine Page 
(256 Bytes) in 1.5ms beschreiben lassen. Sind dann wohl ca. 170kB/s.

: Bearbeitet durch User
von GG (Gast)


Lesenswert?

nein, normale SPI. Mit QSPI wäre die übertragung etwas schneller, aber 
damit gewinne ich im Programm kein bisschen Zeit. Die Speicherzeit 
bleibt dadurch unverändert.

von Axel S. (a-za-z0-9)


Lesenswert?

Pete K. schrieb:
> Nutzt Du denn quad-spi mit 104Mhz?

Braucht er nicht.

> Laut Datenblatt soll sich eine Page
> (256 Bytes) in 1.5ms beschreiben lassen.

Ja. Er hat sogar "nur" 1.1ms gemessen. Sein Exemplar ist schneller als 
der Hersteller garantiert. Trotzdem bleibt die Tatsache, daß er seine 
Anforderung von

GG schrieb:
> In meinem Fall müsste ich alle 10us 3-4 Bytes wegschreiben können

mit diesem Flash nicht schafft. Auch wenn er immer 256 Bytes im RAM 
puffert und dann als eine Page schreibt, braucht er im Schnitt 4,3µs pro 
Byte. Für 3 Byte dann knapp 13µs und für 4 Byte gar 17.2µs. Und das nur 
unter der Bedingung, daß das Flash schon gelöscht ist, zwischendrin also 
keine Löschoperationen anfallen.

GG schrieb:
> Was kann man machen? Mehrere Chips seriell beschreiben?

Du meinst bestimmt: parallel beschreiben. Ja, könnte man machen.

> Oder gibt es schnellere Flash Speicher?

Gibt es sicher auch.

> Habe ich vielleicht etwas übersehen und der
> kleine Chip könnte doch schneller arbeiten?

Der ist schon (etwas) schneller, als er sein müßte.

Wenn deine Daten-Bursts immer nur 100KB groß sind und dazwischen genug 
Leerlaufzeit, dann kannst du natürlich die 100KB erstmal im RAM puffern 
und dann langsamer rausschreiben. Dein Flash ist ja nur Faktor 2 
langsamer als deine Daten reinkommen. Du brauchst also im Idealfall nur 
50KB RAM-Puffer.

von Pete K. (pete77)


Lesenswert?

Der Winbond W25Q32FV hat eine typische page-write von 0.7ms, also etwa 
doppelt so schnell.

Der W25N01GV braucht sogar nur 250us Tpp.

: Bearbeitet durch User
von Florian (Gast)


Lesenswert?

Darf man Fragen was dein Vorhaben ist..
Ich meine wir reden von einem 2MBYTE Flash, bei
deiner anvisierten Schreibrate wäre das Ding in 5 bis 6
Sekunden voll bei kontinuierlichen Transfer und dann?

Ansonsten ja Busy Zeiten nach dem schreiben von 256bytes
sind bei mir im Schnitt auch knapp unter 1,1ms.
Die tatsächliche Zeit hängt aber auch von den Daten ab,
mit komplett  0xff Byte Pattern oder 0x00 Byte Pattern hat
man  Grenzen in denen man sich reell dazwischen befindet.

Er ist bei den Wald und Wiesen SPI Flash's mit 256b page, 4k Sektor
und 64k Block Organisation nicht der schnellste beim Schreiben aber
hat dafür aber recht fixe Erase Zeiten.

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.