Forum: Mikrocontroller und Digitale Elektronik STM32 HAL DMA circular Start an beliebiger stelle im Buffer


von strange question (Gast)


Lesenswert?

Hallo ihr wissenden,

Ich habe folgenden Idee, nur bei der Umsetzung hapert es noch ein wenig.

Der Plan ist einen ws2812B Stripe mittels DMA und PWM von einem STM32 
(z.B. STM32F041) zu befeuern, was ja soweit auch kein Problem ist, und 
gut funktioniert.

Da nur fertige Muster ausgegeben werden sollen, diese dann aber 
"durchgeschoben" werden sollen, ist meine Überlegung diese Muster im 
Flash statt im Ram ab zu legen. Nun wäre es schön dem DMA, die 
Bufferadresse und den Startpunkt mit zu geben, beim Ende des Buffers 
soll dieser wieder von vorne beginne (circular mode?).

Nach der Übertragung der Bufferlänge, sollte der DMA dann abgeschaltet 
werden. Die Längenüberprüfung, wird so mit dem DMA nicht funktionieren, 
dieses wäre aber einfach über den Timerinterupt möglich.

Ich verspreche mir davon eine noch geringere CPU Last, als wenn ich das 
mit der 2 x 24Byte Halfcomplete / complete Methode realisiere.

Hat jemand einen Ansatz wie ich den Startpointer vorgeben kann?

LG

von pegel (Gast)


Lesenswert?

Klingt so, als brauchst Du einen Ring-Puffer im Flash, der dann vom DMA 
benutzt wird.

Ist es nicht einfacher diesen im RAM anzulegen und mit Speicherbereich 
kopieren von der gewünschte Flash Adresse (mit DMA und Überlauf 
Erkennung + 2. DMA Bereich) dorthin zu kopieren?

von user3922 (Gast)


Lesenswert?

strange question schrieb:
> Hat jemand einen Ansatz wie ich den Startpointer vorgeben kann?

Kann man dem DMA nicht einfach die Memory Adresse von dem Array aus dem 
Flash geben? Sollte doch gehen.

von pegel (Gast)


Lesenswert?

Wenn ich noch mal nachdenke, müsste es genauso auch im Flash gehen.

Zwei DMA im Wechsel nacheinander ausgeben.

1. DMA mit der Flash Startadresse füttern, als Länge den Rest bis zum 
Ende des Flash Bereichs angeben.

2. DMA Anfang des Flash Bereichs angeben, die Länge ergibt sich bis zur 
gewünschten Startadresse-1

Das ganze Endlos.

von pegel (Gast)


Lesenswert?

pegel schrieb:
> Flash Bereichs

Nennen wir es lieber die Flash Array.

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.