Forum: Mikrocontroller und Digitale Elektronik STM32F2xx DMA und Byte-Inserts


von Herbert W. (Gast)


Lesenswert?

Hallo zusammen,
ich beginne mich langsam für die DMAs auf den STM32 Controllern zu 
begeistern :-), nur leider stellt sich mir noch ein Problem von dem ich 
nicht weiß ob es überhaupt mit DMAs zu lösen ist.
Es geht um die Kommunikation mit zwei Bausteinen, einer ist per SPI 
angeschlossen, der andre per FSMC. DMA funktioniert soweit sogut.
Jetzt muss ich nur leider bei der SPI Kommunikation immer nach zwei 
Datenbytes wieder ein Addresskommando senden, und genauso beim FSMC 
(welcher auf einen Displaycontroller geht) wegen alignments Bytes für 
Transparenzfarben einfügen.
Ist so eine Art "Byte-Insert" mit DMAs irgendwie möglich? Das ich quasi 
nach irgendeinem Schema nach x Bytes die Übertragung kurz unterbreche 
und selbst Daten einfüge oder der DMA das irgendwie von sich aus kann?
Hat da jemand ne zündende Idee zu?
Schon mal vielen Dank fürs Gedanken machen ;).

Mfg,
Herbert

von Herbert W. (Gast)


Lesenswert?

Keiner ne Idee?

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

- Vorher schon die Bytes in den Buffer schreiben
- An der Buffer-Position Dummy-Bytes reservieren, die dann noch von der 
CPU überschrieben werden
- nur kurze DMA Telegramme verschicken und jedes mal den DMA neu starten 
nachdem die extra Bytes gesendet wurden.

von Herbert W. (Gast)


Lesenswert?

Mh, ja meine Überlegungen gingen in ähnliche Richtungen.
Aber zum Beispiel wenn ich beim Display ein großes Rechteck mit Farbe 
fülle, dann sende ich ja immer das gleiche Byte, sprich hätte den DMA 
auf Increment Disable. Müsste hier aber auch in jeder Zeile vorne und 
hinten Ausgleichs-Transparenzbytes einfügen. Da käme dann nur dein 
dritter Vorschlag in Frage. Hier ist dann wiederum die Frage ab welcher 
Zeilenbreite ist es performanter ständig den DMA ein und auszuschalten 
oder doch gleich reinzuschreiben (wenn ich z.B. nur ein Rechteck mit 
Breite 3px oder so habe).
Muss ich in so einem Fall den DMA denn eigentlich jedes mal neu 
konfiguriereno der reicht ein ENABLE/DISABLE auf den Stream?
Danke auf jeden Fall mal für die Antwort.

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.