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


von Vincent H. (vinci)


Angehängte Dateien:

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)


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)


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:

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)


Lesenswert?

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

von Vincent H. (vinci)


Lesenswert?

Oha tatsächlich! Danke für den Hinweis.

von Vincent H. (vinci)


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.

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.