Forum: Mikrocontroller und Digitale Elektronik Problem mit HAL_ADC_Start_DMA


von Alex (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,
ich arbeite gerade an einem Projekt mit einem stm32f446.
unter anderem möchte ich einen ADC im DMA mode laufen lassen, welcher 
von einem Timer getriggert wird. Das Problem dabei ist, sobald ich 
HAL_ADC_Start_DMA starte, hängt sich mein Programm auf. Ich nutze den 
selben Timer um ein PWM signal zu erzeugen. Das sollte allerdings nicht 
das Problem sein.
Hier der Teil des codes wo das Problem auftritt:
1
if(newpwmperiod == 1 && adc_dma_status == 0){
2
      HAL_UART_Transmit(&huart2, test, 4, HAL_MAX_DELAY);
3
      HAL_ADC_Start_DMA(&hadc1, (uint32_t*)adc_signal, cos_pointsperperiod);  // Timer 2 Trigger out event
4
      adc_dma_status = 1;
5
      HAL_UART_Transmit(&huart2, test, 4, HAL_MAX_DELAY);
6
7
    }

Die erste Testausgabe wird ausgeführt. die Ausgabe nach dem Start des 
ADCs nicht mehr.

Die Konfiguration vom ADC sowie vom Timer, die ich mit mxcube generiert 
habe sind im Anhang.

Ich hoffe jemand findet den Fehler udn kann mir helfen, da ich einfach 
nicht weiter weiß.

Gruß,
Alex

von Harry L. (mysth)


Lesenswert?

Ist dein Puffer groß genug? (adc_signal)
Was passiert denn, wenn der DMA-Zyklus fertig ist?
Wo ist dein DMA-Complete-Callback?

von pegel (Gast)


Lesenswert?

Vielleicht liegt es auch an der schnellen Folge von HAL_UART_Transmit.
Hast Du versucht etwas anderes zwischen den beiden auszuführen?

von Stefan W. (warrie87)


Lesenswert?

Zeig mal bitte noch dein cos_pointsperperiod sowie dein adc_signal.

Außerdem hat HAL_ADC_Start_DMA() nen return-Code, frag den mal ab.

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.