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!

von Wastl (hartundweichware)


Lesenswert?

Tobias schrieb:
> Im Bild sieht man was ich alles verwenden soll.

Es sollte doch möglich sein beim Aufgabensteller nachzufragen,
ob das alles so seine Richtigkeit hat und ggf. sich auf eine
Änderung verständigen.

von Tobias (saibot007)


Lesenswert?

Nein ist es leider nicht. Der Lehrer ist sehr alt und sehr stur. Und 
auch wenn er einmal einen Fehler gemacht beharrt er darauf dass das so 
passt.

von Wastl (hartundweichware)


Lesenswert?

Tobias schrieb:
> Nein ist es leider nicht. Der Lehrer ist sehr alt und sehr stur. Und
> auch wenn er einmal einen Fehler gemacht beharrt er darauf dass das so
> passt.

Dann mal mit seinem Vorgesetzten "sprechen" .... Es wird ja wohl
einen Rektor geben.

von Alexander (alecxs)


Lesenswert?

Harry L. schrieb:
> Wer keine Ahnung hat, sollte einfach mal die Frss halten!

Und warum hältst Du Dich nicht daran? Der HAL Initcode wird mit der Maus 
zusammengeklickert, die generierten Dateien sind ein Roman.

von Tobias (saibot007)


Lesenswert?

Naja gibt’s zwar schon aber sind ne etwas größere Schule mit fast 1300 
Schülern. Den Direktor sieht man nur einmal am Anfang des Jahres und 
dann wieder am Ende. Und die Lehrer halten sich natürlich auch den 
Rücken frei. Die letzten zwei drei Jahre schon viel versucht aber hilft 
leider nichts.

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Tobias schrieb:
> Naja gibt’s zwar schon aber sind ne etwas größere Schule mit fast 1300
> Schülern. Den Direktor sieht man nur einmal am Anfang des Jahres und
> dann wieder am Ende. Und die Lehrer halten sich natürlich auch den
> Rücken frei. Die letzten zwei drei Jahre schon viel versucht aber hilft
> leider nichts.

Um so etwas zu klären benötigt man das Parteibuch der Eltern. Falls 
nicht vorhanden, einen Anwalt mit der Klärung der Angelegenheit 
beauftragen.

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Tobias schrieb:
> Nein ist es leider nicht. Der Lehrer ist sehr alt und sehr stur.
> Und
> auch wenn er einmal einen Fehler gemacht beharrt er darauf dass das so
> passt.

Ah die Sorte, kennt man zu genüge. Erfahrungsgemäß achten die dann nicht 
extrem pingelig auf die Details der Abgabe, weil ihnen die eigenen 
Details auch nicht so wichtig sind.

Die Strategie ist "deal with it", die Aufgabe so lösen dass es 
funktioniert und dazu  ggf. Anforderungen anpassen (z.B. ADC1 statt 
ADC2). Wichtig ist dass es am Ende im Großen und Ganzen gut aussieht - 
soll also grundsätzlich die gewünschte Funktion haben. Falls ein Bericht 
dazu gefordert ist, muss der auch hübsch und im traditionellen Stil sein 
(z.B. LaTeX).

Wastl schrieb:
> Dann mal mit seinem Vorgesetzten "sprechen"

Kann man da eher vergessen.

Aber nochmal... Ist das wirklich die gesamte Aufgabenstellung? Es wird 
nirgendwo ADC1 noch für was anderes verwendet? Es steht nirgendwo 
welcher Pin genutzt werden soll und was genau mit dem Ergebnis passieren 
soll? Ich würde ja einfach ADC1 nehmen und fertig, aber falls irgendwo 
ADC1 doch noch für was anderes belegt ist...

: Bearbeitet durch User
von Dr. T. (dr_tom)


Lesenswert?

An jeder Schule gibt es Vertrauenslehrer, genauso wie es 
Schülervertreter gibt...

von Tobias (saibot007)


Lesenswert?

Nein gibt leider keine weitere Aufgabenstellung. Wir haben so ein schul 
internes System aus mehreren Platinen die von Lehrern früher designed 
wurde. Auf dem Bild von gestern sieht man was man verwenden soll mehr 
gibt’s nicht. Der meist gehörte Satz egal von wem in dieser Schule war 
,,Das Leben ist nunmal unfair stellt euch nicht so an“. Mehr kann ich da 
auch nicht mehr sagen

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Dr. T. schrieb:
> An jeder Schule gibt es Vertrauenslehrer, genauso wie es
> Schülervertreter gibt...

Weiß nicht wie das in den Alpenländern ist, aber in Deutschland sind 
Lehrer und Professoren größtenteils Beamte und haben damit 
Narrenfreiheit. Da kann man selbst "von oben" kaum was erwirken. Die 
müssten sich schon fast eine Straftat leisten bevor da was möglich ist. 
Man könnte Schüler der vorherigen Jahre fragen, wie sie die Aufgabe 
gelöst haben - diese Sorte Lehrer hat typischerweise keine Lust, sich 
jedes Jahr neue Aufgaben auszudenken.

Wesentlich nervenschonender ist der Modus "Ergebnisse liefern", auch 
wenn man dafür die Aufgabe umbauen muss. Erfahrungsgemäß sind diese 
Lehrer der "alten Schule" zufrieden wenn sie sehen, dass man brav den 
Anweisungen gefolgt ist und Arbeit reingesteckt hat ohne aufmüpfig zu 
sein, auch wenn es sinnlose Arbeit ist. Das sehen sie aber nur, wenn das 
Ergebnis schön aussieht - Details prüfen ist anstrengend.

Könnte man auch als Soldatenmodus sehen - nicht fragen sondern machen...

Tobias schrieb:
> ,,Das Leben ist nunmal unfair stellt euch nicht so an“. Mehr kann ich da
> auch nicht mehr sagen

Alles klar, das bestätigt meine Einschätzung!

Nimm ADC1_IN2 (Pin PA2) und den ADC1-DMA, fertig. Wenn er tatsächlich 
nachbohrt sag dass du davon ausgegangen bist dass ADC2 ein Tippfehler 
war und IN2 gemeint war.

: Bearbeitet durch User
von Tobias (saibot007)


Lesenswert?

Schüler der vorherigen Jahre haben wir probiert zu fragen. Diese hatten 
aber die Art von Aufgaben nie. Hab jetzt das ganze einfach mit dem ADC1 
gemacht da geht’s ja ohne Probleme. Falls ihm das auffällt bzw. nicht 
genügt sein Problem. Kann mit reinem Gewissen sagen das ich’s wirklich 
probiert habe.

von Alexander (alecxs)


Lesenswert?

Ich denke der Dual‑Mode ist Bestandteil der Aufgabenstellung.

von Tobias (saibot007)


Lesenswert?

Nö wurde noch nie besprochen was das genau ist bzw. wie der zu verwenden 
ist. Der Lehrer hat ja immer so schöne Beispiel Programme (funktionieren 
die halbe Zeit nicht). Die 2 beim ADC wird jetzt einfach ignoriert.

von Alexander (alecxs)


Lesenswert?

Selbständig weiterdenken und unrealistische Vorgaben umsetzen die nie 
besprochen wurden ist auch eine Fähigkeit die erlernt werden will.

: Bearbeitet durch User
von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Tobias schrieb:
> Die 2 beim ADC wird jetzt einfach ignoriert.

Gute Entscheidung.

Alexander schrieb:
> Ich denke der Dual‑Mode ist Bestandteil der Aufgabenstellung.

Glaube ich nicht, da müsste man ADC1 ja sinnlos einen Dummy-Kanal 
konvertieren lassen nur damit ADC2 auch läuft. Ich denke nicht dass der 
Lehrer so ein Konstrukt gut bewerten würde.

von Alexander (alecxs)


Lesenswert?

Was sinnlos ist entscheidet der Anwendungsfall. Es gibt durchaus 
sinnvolle Anwendungsmöglichkeiten. Die Sache so zu konfigurieren 
erscheint mir eine sinnvolle Übung und Lernaufgabe.

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.