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
- 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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.