Forum: Compiler & IDEs STM32 CubeMX ADC Konfiguration


von Tobias (saibot007)


Lesenswert?

Hey,
Bin jetzt im letzten Schuljahr angelangt und habe noch ein letztes 
Projekt. Muss dafür nen STM32F103RB programmieren. Dafür soll ich unter 
anderem STM32CubeMX mit der HAL Library verwenden. Mein Problem ist das 
ich von einem Poti den Wert über einen ADC auslesen soll und damit dann 
einen Piezo steuern soll. Der STM32F103RB hat zwei davon. Ich muss den 
ADC2 mit DMA im Scan Mode verwenden. Da sich die beiden irgendwie den 
DMA teilen muss ich den ADC1 auch aktivieren. Mein Konkretes Problem ist 
ich weiß nicht genau wie ich die beiden konfigurieren muss das auch die 
Daten von ADC2 ankommen. Bis jetzt schaffe ich es nur das ein konstanter 
Ton am Piezo ankommt aber nicht das sich entweder die Tonlage oder die 
Lautstärke ändert. Mit dem ADC1 und Polling habe ich es schon geschafft 
aber das ist leider zu weit weg von der Anforderung.  Hat da vielleicht 
jemand noch ne Datei rumliegen wo das konfiguriert ist bzw irgendwelche 
guten Videos? Finde leider selber nichts was mir weiterhilft.
LG saibot007

von Harry L. (mysth)


Lesenswert?

Zu viel Prosa - zu wenig Code.

Um ein paar Potis einzulesen, braucht man ganz sicher auch keinen DMA.

von Wastl (hartundweichware)


Lesenswert?

Tobias schrieb:
> Mein Problem ist das
> ich von einem Poti den Wert über einen ADC auslesen soll und damit dann
> einen Piezo steuern soll. Der STM32F103RB hat zwei davon. Ich muss den
> ADC2 mit DMA im Scan Mode verwenden. Da sich die beiden irgendwie den
> DMA teilen muss ich den ADC1 auch aktivieren.

Wenn ich CUbeMX richtig interpretiere dann kann nur ADC1 mit DMA
betrieben werden, ADC2 eben nicht.

Ansonsten stimme ich Harry L. zu dass viel Prosa daherkommt
aber die Situation nicht ausreichend erklärt wird.

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Tobias schrieb:
> Da sich die beiden irgendwie den DMA teilen muss ich den ADC1 auch
> aktivieren

Ähh nein musst du nicht. Man kann beide ADCs kombinieren um die 
Geschwindigkeit zu erhöhen aber das ist hier wohl nicht nötig. Du musst 
nur einen ADC mit einem DMA verwenden.

Wastl schrieb:
> Wenn ich CUbeMX richtig interpretiere dann kann nur ADC1 mit DMA
> betrieben werden, ADC2 eben nicht.

Nein, DMA geht mit beiden ADCs. Aber jeder ADC bräuchte einen eigenen 
DMA-Channel, wenn man beide ADCs nutzen würde, was hier nicht der Fall 
ist.

Allerdings würde es auch ohne DMA wunderbar funktionieren, besonders 
weil du ja nur einen ADC-Kanal nutzt und dessen Wert ja direkt 
verwendest - da hat DMA keinerlei Vorteil.

: Bearbeitet durch User
von Tobias (saibot007)


Lesenswert?

Nur der ADC1 hat hat nen DMA Channel. Muss aber explizit ADC2 verwenden. 
Der hat aber keinen DMA Channel bzw. wird auch in CubeMX keine DMA 
Settings angezeigt beim ADC2.

von Wastl (hartundweichware)


Lesenswert?

Niklas G. schrieb:
> Nein, DMA geht mit beiden ADCs.

Kannst du auch bitte in CubeMX demonstrieren wie man das konfiguriert?

von Harry L. (mysth)


Lesenswert?

Tobias schrieb:
> Muss aber explizit ADC2 verwenden.

Nochmal:
Harry L. schrieb:
> Um ein paar Potis einzulesen, braucht man ganz sicher auch keinen DMA.

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Ups, du hast tatsächlich Recht, der ADC2 kann keinen DMA verwenden. Das 
ist anscheinend nur bei den uralten STM32F103 so, bei allen anderen 
STM32's ist mir das noch nicht begegnet... Im RefMan steht's im Kapitel 
11.8: "Only ADC1 and ADC3 have this DMA capability. ADC2-converted data 
can be transferred in dual ADC mode using DMA thanks to master ADC1."

Dual-Mode macht hier gar keinen Sinn. DMA macht für den einzelnen 
Poti-Kanal auch keinen Sinn.

Tobias schrieb:
> Ich muss den
> ADC2 mit DMA im Scan Mode verwenden.

Warum musst du ADC2 verwenden? Warum musst du DMA nutzen? ADC1 kann die 
selben Pins nutzen.

Beitrag #8003825 wurde vom Autor gelöscht.
von Wastl (hartundweichware)


Lesenswert?

Harry L. schrieb:
> Nochmal:
> Harry L. schrieb:
>> Um ein paar Potis einzulesen, braucht man ganz sicher auch keinen DMA.

Bei Tobias klingt das wie ein Teil seiner Pflichten in der Aufgabe:

Tobias schrieb:
> Ich muss den ADC2 mit DMA im Scan Mode verwenden.

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Tobias schrieb im Beitrag #8003825:
> Das is so vorgegeben daran kann ich leider Nix verändern.

Dann ist die Vorgabe nicht umsetzbar. Man kann zwar ADC1+ADC2 koppeln 
und dann DMA nutzen aber dann muss ADC1 auch einen Kanal konvertieren.

Sicher dass du nicht Kanal 2 statt ADC 2 konvertieren sollst? 
ADC1_IN2 ließe sich wunderbar per DMA auslesen (auch wenn's unnötig 
ist).

: Bearbeitet durch User
von Tobias (saibot007)


Lesenswert?

Das ist die Vorgabe von Lehrer. Wollte wahrscheinlich alle möglichen 
Fälle für die Matura abdecken. Wird sich aber schätze ich nicht 
angeschaut haben ob wirklich alles so umsetzbar ist.

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Tobias schrieb:
> Das ist die Vorgabe von Lehre

Zeig doch mal die genaue Formulierung (Foto).

von Alexander (alecxs)


Lesenswert?

Harry L. schrieb:
> Zu viel Prosa - zu wenig Code.

passt doch wunderbar zu CubeMX

von Tobias (saibot007)


Angehängte Dateien:

Lesenswert?

Im Bild sieht man was ich alles verwenden soll. Hab meinen Account vor 
kurzem erstellt. Kann deswegen nur 2 Nachrichten pro halbe Stunde 
schreiben und es dauert immer so lange bis ich antworte.

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Na der hat ja keinen Buchstaben zu viel verwendet... Nimm halt ADC1 
statt ADC2, funktioniert genau so gut, kann aber DMA.

von Tobias (saibot007)


Lesenswert?

Ja kann’s mal riskieren und schaun was er nach den Ferien sagt. Is halt 
sehr interessant das er sowas als Aufgabenstellung gibt obwohls nicht 
wirklich einfach machbar ist. Auf jeden Fall danke für die Hilfe.

von Harry L. (mysth)


Lesenswert?

Alexander schrieb:
> Harry L. schrieb:
>> Zu viel Prosa - zu wenig Code.
>
> passt doch wunderbar zu CubeMX

Schwätzer!

Wer keine Ahnung hat, sollte einfach mal die Fr*ss* halten!

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.