DMA funktioniert nur einmal

Gast #5073161
Lesenswert?

Hallo

Ich habe eine Frage zur DMA und zwar habe ich den Chip STM32L431RCI6.
Ich habe den Fall, dass ich über einen Timer den ADC triggere (1027 
Pulse) und mit der DMA die Daten wegschaufele.
Der ganze Prozess so funktioniert auch und die Daten werden konvertiert. 
Diese werden auch durch die DMA einmal in den Speicher gelegt.
Wenn ich den Prozess aber nochmals durchführe, sprich den ADC ein 2. Mal 
triggere (1027) Pulse, ändern sich die Daten im Speicher nicht mehr..
Ich würde meinen, dass ich den ADC und die DMA aber richtig konfiguriert 
hätte.
Was habe ich übersehen?

Ich danke für eure Hilfe
Angehängte Dateien:
Gast #5074741
Lesenswert?

Nils Z. schrieb:
> Versuchs mal mithadc1.Init.DMAContinuousRequests = ENABLE;
> hadc1.Init.Overrun = ADC_OVR_DATA_OVERWRITTEN;

Ich habe die Einstellungen nun vorgenommen, die Werte im Memory 1 im 
Debugger ändern sich trotzdem nicht..
Liegt es vielleicht doch an den DMA Einstellungen?
#5075351
Lesenswert?

Irgendwie sehe ich in deinem Code nicht, wie du den ADC wieder startest.

Ich konfiguriere bei mir den DMA, dann den ADC. DMA mit transfer 
complete interrupt. Wenn der auslöst, dann lösche ich das DMA und 
CONT-bit beim ADC.

Bei einem Neustart muss ich dann DMA, CONT und SWSTART-bit setzen. Wie 
das mit der HAL geht kann ich aber nicht sagen.
Gast #5075864
Lesenswert?

Nico W. schrieb:
> Irgendwie sehe ich in deinem Code nicht, wie du den ADC wieder
> startest.
>
> Ich konfiguriere bei mir den DMA, dann den ADC. DMA mit transfer
> complete interrupt. Wenn der auslöst, dann lösche ich das DMA und
> CONT-bit beim ADC.
>
> Bei einem Neustart muss ich dann DMA, CONT und SWSTART-bit setzen. Wie
> das mit der HAL geht kann ich aber nicht sagen.

Hallo

Ich habe das im Main im nach dem Init drin. Zeile 259.
Ich starte den ADC nur einmal vorerst.
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren