Forum: Mikrocontroller und Digitale Elektronik Quad-SPI für Speicher - gibt es hier einen Standard?


von avr (Gast)


Lesenswert?

Hallo zusammen

Gibt es einen Standard, der das Protokoll und die verschiedenen Modi 
beschreibt, den viele Speicherbausteine implementieren:

Command -> Address -> Dummy bytes -> Daten ...

Der Command bestimmt, wie Daten gelesen/geschrieben werden. Z.B. 
FastRead( 0x0B) oder QuadIO (0xEB).

Ist das ein Pseudostandard an den sich die meisten halten, oder gibt es 
da was richtiges?

von Μαtthias W. (matthias) Benutzerseite


Lesenswert?


von A. B. (Gast)


Lesenswert?

avr schrieb:
> Gibt es einen Standard, der das Protokoll und die verschiedenen Modi
> beschreibt, den viele Speicherbausteine implementieren:
>
> Command -> Address -> Dummy bytes -> Daten ...
>
> Der Command bestimmt, wie Daten gelesen/geschrieben werden. Z.B.
> FastRead( 0x0B) oder QuadIO (0xEB).

Leider totales Chaos. Abgesehen von Write Enable, Write Disable, Read 
Status Reg., dem Urahn-Read 0x03 und Urahn-Page Program 0x02 kocht jeder 
sein eigenes Süppchen. Vielfach ähnlich, aber dann mit subtilen 
Unterschieden.
Und bisweilen mit kleinen undokumentierten Gemeinheiten.

Wenn's um die "schnelleren" Modi geht, wird's erst richtig 
phantasievoll.
Aber das ist trotzdem alles noch halbwegs mit ein paar Tabellen 
halobwegs zu handhaben.

Richtig lustig wird's bei OctoSPI ...

Und das erwähnte SFDP hilft leider nur begrenzt. Eher ein großer 
Suppentopf, in dem man einfach alles und jedes Gemüse (schön klein 
geschnippelt) hineingeworfen hat. Sprich, da findet sich auch die 
exotischte Idee noch in Stein gemeißelt. Ganz abgesehen davon sind mir 
schon etliche Chips untergekommen, die lt. Datenblatt und Datecode 
SFDP-Daten drin haben sollten. Ja, das Kommando geht auch, nur leider 
herrscht in dem Datenblock gähnende Leere.
Und mancher Hersteller macht aus dem Datenblock noch ein extra Geheimnis 
(so etwa: Contact factory for details ...).

Bei OctoSPI kann man selbst die ID und auch die SFDP-Daten (wenn 
überhaupt vorhanden) nicht ohne diverse Versuche mit unterschiedlichen 
Parametern ermitteln, da das Kommando 1 oder 2 Byte lang, die Adressen 3 
oder 4 Byte lang sein können und die Anzahl der Dummy-Bytes auch nicht 
festgelegt ist.

Ach ja, die ID, machmal sind es drei Bytes, die endlos wiederholt 
werden, manchmal kommen nach den dreien nur noch lauter 0x00, manchmal 
noch eine "erweiterte ID".

Da kommt Freude auf ...

von avr (Gast)


Lesenswert?

Okay, danke - das habe ich fast schon vermutet. Ich habe auf JEDEC 
inzwischen zwei Standards gefunden, aber die decken nur einen kleinen 
Teil ab: JESD251A, JESD251-1

von A. B. (Gast)


Lesenswert?

Ein Blick in JESD216D lohnt sich. Da gehen einem die Augen über ...

Was aber praktisch immer problemlos geht: Nach Power-up per SPI (eine 
Leitung!) vom Anfang (ab Adresse 0) einen beliebig großen 
zusammenhängenden Block mit 0x03 lesen. Danach wird's kompliziert.

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.