STM32 DMA (gleichzeitiger Strom, FIFO, Burst-Modus, Doppelpuffer)
-
21-12-2019 - |
Frage
Die DMA für STM32F4-Serie hat einige fortgeschrittene Funktionen, könnte ich hier um Klarstellung fragen?
- .
-
Concurrentstrom: Können zwei Streams Daten gleichzeitig übertragen? Da ist ein Byte-Transfer erlaubt. Wenn die Busbreite 32bit ist, ist 4 gleichzeitige Übertragung möglich. BTW, was ist die Breite des AHB-Busses für STM32?
-
FIFO-Modus: Wenn ein gleichzeitiges Getriebe nicht möglich ist, könnte mir das FIFO hier verwendet werden. Das FIFO würde dazu beitragen, Daten zu warten, die von Niedriggeschwindigkeits-Peripheriegeräten an DMA bereit sind, ohne den AHB-Bus zu besetzen. Wenn ein bestimmter Datenmenge bereit ist, wird der Datenkörper zusammen in den Speicher gesendet. Ist mein Verständnis richtig?
Vierworttiefe 32 First-in, First-Out-Speicherpuffer (FIFOs) pro Stream
was bedeutet das? Wie viele Daten können im FIFO gespeichert werden? 4 oder 4 * 32?
- .
-
Burst-Modus: Was macht eigentlich Burst-Modus? Im Datenblatt heißt es, dass 65535 Daten übertragen werden können. Was ist die Beziehung zwischen 65535 mit dem Burst-Modus?
-
Doppelpuffermodus:
Doppelpuffertyp-Transaktionen: Doppelpufferübertragungen mit zwei Speicherzeiger für den Speicher (während der DMA leset / schreiben
Von / bis zu einem Puffer kann die Anwendung auf / von den anderen schreiben / lesen Puffer). ----- aus dem Referenzhandbuch von STM32F4
Meine Frage ist: Während der DMA-Übertragung ist der AHB-Bus nicht für Cortex M4 verfügbar, wie kann die Anwendung aus dem anderen Puffer gelesen werden?
Lösung
Nachdem ich einige Forschungen getan habe, fand ich hier, falls jemand es braucht.
- .
-
Gleichzeitiger Strom: nicht innerhalb einer DMA möglich. Es ist möglich, DMA1, DMA2 gleichzeitig zu haben. Z.B: F427 kann gleichzeitig tun:
- .
- CPU-Zugriff auf Flash (Lesecode)
- DMA1-Zugriff auf SRAM (um einen Puffer übertragen)
- DMA2 Zugang zu SDRAM (ein weiterer Puffer)
FIFO wird verwendet, um Daten vorübergehend von einem niedrigen Geschwindigkeitsgerät zu speichern. Wenn ein bestimmter Datenmenge angesammelt wurde, könnte ein Burst gesendet werden, um die Ressource von AHB zu speichern. Da, wenn AHB von DMAC verwendet wird, kann es nicht vom Prozessor verwendet werden. FIFO hat 4 * 32-Bit-Größe. Es kann als 16 * 8-Bit (16 * 0NE-Byte) konfiguriert sein.