Forum: Mikrocontroller und Digitale Elektronik STM32L4 memory-mapped QSPI Lesegeschwindigkeit maximieren


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Vincent H. (vinci)


Angehängte Dateien:

Bewertung
1 lesenswert
nicht lesenswert
Grüß euch

Ich würde gerne die Lesegeschwindigkeit eines IS25LP128 Flash an einem 
STM32L431 maximieren. Der Prozessor und das Flash wird mit 80MHz 
getaktet und ich nutze bereits das "FAST READ QUAD I/O OPERATION" 
Kommando um auf allen 4 Datenleitungen zu empfangen.

Leider entsprechen meine Tests nicht der erwarteten Performance. Meines 
Verständnis nach müsste alle 2 Takte ein Byte empfangen werden. Das 
Kopieren eines 1kB großen Blocks aus dem QSPI-Flash ins Prozessor RAM 
müsste also ohne Berücksichtigung des Instruction/Address-Overheads in
1
1 / 80MHz * 1024B * 2 = ~26µs

erledigt sein.

Tatsächlich dauert der komplette Lesevorgang allerdings 100µs. Woher 
kann dieser Unterschied kommen?

Da es sich ausschliesslich um BGA Bauteile handelt kann ich leider grad 
etwas schlecht ein Oszilloskop anhängen. Es existiert zwar ein Layout 
mit Testpins, das müsste ich allerdings erst wieder in Betrieb nehmen.

: Bearbeitet durch User
von Falk B. (falk)


Bewertung
0 lesenswert
nicht lesenswert
Vincent H. schrieb:
> Da es sich ausschliesslich um BGA Bauteile handelt kann ich leider grad
> etwas schlecht ein Oszilloskop anhängen. Es existiert zwar ein Layout
> mit Testpins, das müsste ich allerdings erst wieder in Betrieb nehmen.

Dann tu das!

von Jim M. (turboj)


Bewertung
1 lesenswert
nicht lesenswert
Vincent H. schrieb:
> 1 / 80MHz

Die QSPI Schnittstelle wird mit Sicherheit keine 80MHz Takt haben. Ein 
Takt Teiler von 4 (= 20 MHz) würde die 100µs komplett erklären.

Teiler kleiner als 2 sind für (Q)SPI eher selten anzutreffen.

von Vincent H. (vinci)


Angehängte Dateien:

Bewertung
1 lesenswert
nicht lesenswert
Jim M. schrieb:
> Vincent H. schrieb:
>> 1 / 80MHz
>
> Die QSPI Schnittstelle wird mit Sicherheit keine 80MHz Takt haben. Ein
> Takt Teiler von 4 (= 20 MHz) würde die 100µs komplett erklären.
>
> Teiler kleiner als 2 sind für (Q)SPI eher selten anzutreffen.

Die wird tatsächlich mit 80MHz betrieben (siehe Anhang).
Theoretisch wären laut Datenblatt sogar 133MHz möglich. Der Prozessor 
taktet allerdings nicht so hoch.

von Uwe Bonnes (Gast)


Bewertung
2 lesenswert
nicht lesenswert
Das Datenblatt des L431 sagt aber unter "Quad SPI characteristics" das 
maximal 60 MHz gehen...

von Vincent H. (vinci)


Bewertung
1 lesenswert
nicht lesenswert
Oha tatsächlich! Danke für den Hinweis.

von Vincent H. (vinci)


Bewertung
1 lesenswert
nicht lesenswert
So, bin jetzt mit 40MHz QSPI-Takt und DDR-Mode bei meinen theoretischen 
26µs angekommen. Interessant fand ich noch dass man für optimalen Code 
32Bit-Leseoperationen erzwingen muss... Das macht Code für memory-mapped 
Zugriffe sehr häßlich weil man um einen reinterpret_cast nicht herum 
kommt.

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]
  • [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.