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
Versuchs mal mit
1 | hadc1.Init.DMAContinuousRequests = ENABLE; |
2 | hadc1.Init.Overrun = ADC_OVR_DATA_OVERWRITTEN; |
Nils Z. schrieb: > Versuchs mal mithadc1.Init.DMAContinuousRequests = ENABLE; > hadc1.Init.Overrun = ADC_OVR_DATA_OVERWRITTEN; Danke vielmals, das werde ich heute gleich mal versuchen :) Ich hoffe es klappt. buell
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?
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.
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.
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.