Quad-SPI für Speicher - gibt es hier einen Standard?

Gast #6633278
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?
Gast #6633409
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 ...
Gast #6633785
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.

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.