Forum: Mikrocontroller und Digitale Elektronik STM32: mehrere ADC-Werte ohne DMA oder Interrupt auslesen


von brechbunkt (Gast)


Lesenswert?

Hallo,

ich verwende den Mikrocontroller STM32F105. Er hat zwei ADC's.

ADC_1:
Nur ADC_1 kann laut Spec per DMA verwendet werden. Diesen brauche ich 
bereits für eine größere Folge von schnellen Messungen.

ADC_2:
Hier ist DMA nicht möglich. Trotzdem ist es möglich mehrere Kanäle zu 
einer festen Reihenfolge zu definierten und diese dann automatisch die 
Analogwerte umwandeln zu lassen.
Was ich hier nicht verstehe ist, ob die gewandelten Ergebnisse 
tatsächlich wieder einzeln vom ADC-Register abgeholt werden müssen. An 
dieser Stelle würde dann schließlich wieder zusätzliche Rechenzeit 
benötigt werden, um zu selektieren zu welchem Kanal das Ergebnis gehört 
hat.

Gibt es beim STM wirklich nur Register (pro ADC) für die Ergebnisse, 
oder übersehe ich die anderen ständig? Komme ich also nicht um einen 
IRQ-Aufruf herum (was dann noch Rechenintensiver wäre)?

von Uwe B. (derexponent)


Lesenswert?

Hi brechbunkt,

beim STM32F4 kann mann bis zu vier Kanäle noch zu einer "Injected Group"
zusammenfassen.

die 4 ADC-Werte werden dann alle in getrennten Registern gespeichert
und können von der CPU mit dem Zugriff

ADC_GetInjectedConversionValue(ADC1,ADC_InjectedChannel_1);

bis

ADC_GetInjectedConversionValue(ADC1,ADC_InjectedChannel_4);

ausgelesen werden

ob es das beim STM32F1 auch gibt musst du mal nachlesen

Gruss Uwe

von Nils P. (ert)


Lesenswert?

Müsste gehen mit dem Injectedchannel

Werte kannst du auch so holen:
temp1=ADC2->JDR1;
temp2=ADC2->JDR2;

Der Stm32f4 hat auch beim ADC2 einen DMA

und was ist an einem Interrupt rechnenintensiv?, Werte holen, speichern, 
fertig

G Ert

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.