STM32L072KZT6: ADC mit DMA: geht nicht mehr zu main.c zurück

OP #6350498
Lesenswert?

Hallo,

ich benutze den ADC mit 2 Kanälen im DMA-Modus (Circular).

Das zyklische Wandeln geht zwar problemlos, aber das Programm kommt 
nicht mehr zur Main-Loop zurück. Irgend wie bleibt es immer im 
HAL_DMA_IRQHandler drin.

Für die Konfiguration benutze ich STM32CubeMX. Bild anbei.

Ich starte den ADC vor der Main-Loop mit:
1
HAL_ADC_Start_DMA(&hadc, (uint32_t*)_ADC.uiAdcResults, ADC_ANZAHL_KANAELE);

ADC und DMA haben keinen ErrorCode (ist jeweils 0). Warum kommt das 
Programm nicht mehr aus dem IRQ-Handler raus?

Gruß
Martin
Angehängte Dateien:
(Firma: fritzler-avr.de) #6350520
Lesenswert?

Warum ist der ADC IRQ überhaupt aktiv wenne per DMA abholst?
Da brauchts nur den "DMA hat fertig" IRQ wenn beide Kanäle durch sind.
Den brauchts aber auch nur wenn man daraif hin was auslösen will.

Ansonsten kann auch der DMA überrannt werden, wenn der Bustakt im 
Verhältnis zur ADC Samplezeit zu gering ist (ADC PSC = 2 weist darauf 
hin).
Also dreh mal den Bustakt hoch und lass den nicht bei den 16MHz des 
startups.

Zudem lieber die Sampling CLKs erhöhen anstatt den Prescaler.
Umso länger die Sampletime des ADC umso höher ist die Eingangsimpedanz 
des ADC Kanals, je nach Impedanz der Quelle handelt man sich sonst 
Fehler ein.
Gast #6350532
Lesenswert?

Mw E. schrieb:
> Warum ist der ADC IRQ überhaupt aktiv wenne per DMA abholst?
Stimmt, habe ich nun entfernt

> Da brauchts nur den "DMA hat fertig" IRQ wenn beide Kanäle durch sind.
> Den brauchts aber auch nur wenn man daraif hin was auslösen will.
Den kann man im Cube aber nicht deaktivieren.


> Also dreh mal den Bustakt hoch und lass den nicht bei den 16MHz des
> startups.
Bustakt hatte ich bereits bei 32 MHz.


> Zudem lieber die Sampling CLKs erhöhen anstatt den Prescaler.
> Umso länger die Sampletime des ADC umso höher ist die Eingangsimpedanz
> des ADC Kanals, je nach Impedanz der Quelle handelt man sich sonst
> Fehler ein.
Werde ich machen.

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