SPI-Flash memory Standard-Protokoll?

Gast #4001692
Lesenswert?
• ▲
▼
Hallo allerseits,
für einen Datenlogger benötige ich ein 256 Mbit SPI flash memory. Ein 
solches Teil ist rasch gefunden und ich nehme natürlich gerne ein 
günsitges Exemplar - doch was ist, wenn das Teil irgendwann nicht mehr 
verfügbar ist?
Könnte ich dieses austauschen, auch durch ein Flash eines anderen 
Herstellers?
Mit andern Worten: Gibt es Standard-Protokolle zum Ansprechen der (SPI) 
Flash-Speicher, welche von mehreren Herstellern verwendet werden?
Wie finde ich ein solches Flash?
Danke für die Hinweise!
#4001700
Lesenswert?
• ▲
▼
Tobias schrieb:
> Mit andern Worten: Gibt es Standard-Protokolle zum Ansprechen der (SPI)
> Flash-Speicher, welche von mehreren Herstellern verwendet werden?

Gewissermassen. Das Protokoll der SD-Cards.

Auf die üblichen Dataflashes von Atmel/Microchip/... trifft das m.W. 
nicht zu. Die sind nicht einmal zu sich selber kompatibel, wenn man die 
verschiedenen Chips eines Herstellers über die Jahre betrachtet.
#4001710
Lesenswert?
• ▲
▼
SPI Flash Speicher sind in den Grundbefehlen kompatibel, nur die 
beknackten Atmel Data Flashes fallen sowohl beim Pinout als auch bei den 
Befehlen komplett aus dem Schema. Offensichtlich wollte sich dort jemand 
verwirklichen und etwas erfinden, was komplett inkompatibel zu allen 
anderen ist. Wenigstens Lesen (ab Adresse 0) und ID auslesen ist der 
normale Befehl. Aber wenn du Micron M25P, Spansion S25, Winbond W25 oder 
halt die Adesto AT25 Reihe nimmst, bist du auf der sicheren Seite. Die 
sind kompatibel. Nimm am besten gleich das SO16 wide Gehäuse, das haben 
auch irgendwie alle im Programm.
Gast #4001755
Lesenswert?
• ▲
▼
Für 256 MBit reichen 24 bit Addressierung nicht mehr aus.

Der Spansion S25FL256S hat ein Bank Address Register, die Frage ist 
jetzt ob das alle Hersteller gleich machen, d.h. ob Einigkeit der 
Hersteller über die Commands/Format besteht.
#4002045
Lesenswert?
• ▲
▼
> nur die
> beknackten Atmel Data Flashes fallen sowohl beim Pinout als auch bei den
> Befehlen komplett aus dem Schema.

Es sind halt DATA Flashes. Um bei einem 25P80 ein paar Bytes zu ändern, 
muß man 64K auslesen, den 64K Sektor löschen und dann wieder 
zurückschreiben. Da die wenigsten Mikrocontroller 64K freies RAM haben, 
müsste man die Daten in einem anderen Sektor zwischenspeichern oder eine 
Zuordnungstabelle verwalten. Bei einem M25P80 dauert die ganze Aktion 
lt. Datenblatt ca. 0,8 Sekunden (ohne Transferzeit und mit Speicherung 
der 74K im Controller-RAM).

Bei einem Atmel Dataflash dagegen kann man eine Page in einen der beiden 
Puffer lesen, dort einzelne Bytes überschreiben und dann wieder den 
Puffer in das Flash Array zurückschreiben lassen. Dauert bei einem 
AT45DB081 ca. 20ms komplett. In diesem Fall ist der Dataflash ca. 40x 
schneller und braucht für die ganze Aktion kein zusätzliches RAM im 
Controller. Allerdings gibt es sie meines Wissens nach nur bis 64 MBit 
(AT45DB624).
#4002116
Lesenswert?
• ▲
▼
Postkunde schrieb:
> Die Atmel Datenflash sind auch NOR Flash, im Gegensatz zu allen anderen,
> welche NAND Flash sind.

Nicht alle. So sind auch die Microchip/SST Typen offenbar NOR Flash, 
aber wie Atmel wohl auch nur bis 64Mbit erhältlich. Bei 32Mbit kann man 
noch byteweise schreiben, bei 64MBit nur noch in 256 Byte Pages.

Grad bei einem Datenlogger kann dieser Unterschied von Bedeutung sein. 
Wenn man nämlich sicherstellen will, dass die Daten im Flash bei 
Abschaltung aktuell sind, ohne vorher das System eigens runterfahren 
oder mit Notstrom arbeiten zu müssen. Dazu ist es sehr nützlich, wenn 
man byteweise schreiben kann.
Gast #4002830
Lesenswert?
• ▲
▼
Christian R. schrieb:

> Aber wenn du Micron M25P, Spansion S25, Winbond W25 oder halt
> die Adesto AT25 Reihe nimmst, bist du auf der sicheren Seite.
> Die sind kompatibel. Nimm am besten gleich das SO16 wide Gehäuse,
> das haben auch irgendwie alle im Programm.

+1
aber nur bis 128 MBit, für Feiglinge bis 64 MBit. Aber das sind auch nur 
2 bis 4 Chips... Zum Ausgleich hab' ich mich getraut, schmale SO-8 
Gehäuse zu verwenden.
Gast #4003115
Lesenswert?
• ▲
▼
Danke für die hilfreichen Hinweise. Einen Standard-Befehlssatz gibts 
hier offenbar nur begrenzt, was aber sicher auch durch die oft 
unterschiedliche Gliederung verursacht wird. Ich werd' da mal die 
Hersteller anfragen.
Eine andere Idee wäre natürlich eine SD Karte, welche in China mit Slot 
nicht mal teurer ist. Der Controller bietet leider kein Platz um ein 
Filesystem zu verwalten - aber da kann ich ja via SPI auch ohne FS drauf 
schreiben und lesen, oder? Ein wear leveling sollte die Karte ja schon 
selbst machen... Ich denk', ich muss da mal etwas nachforschen...

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.