Forum: Mikrocontroller und Digitale Elektronik Hilfe bei Strategie erstellen STM32 ADC


von PowerSSO (Gast)


Lesenswert?

VNQ7003SY

Strategie

Schönen Sonntag,
Ich versuche verzweifelt eine Strategie zu entwickeln effizient den ADC 
meines STM32 zu nutzen.
Ich habe 4 VNQ7003SY. Jeder dieser VNQ7003SY hat 4 Ausgänge und mittels 
Spi kann von Jedem Ausgang der gemessene Strom mit einem Multiplexer auf 
an einen Pin ausgegeben werden.
Diesen Strom möchte ich mit dem Adc meines Stm32 messen.
Ich habe dazu für jeden dieser VNQ7003SY einen Adc Pin vorgesehen.
Nun stelle ich mir die Frage wie ich die Software baue und diese 16 
Werte vernünftig messe.
ich muss ja zum einem über Spi den Multiplexer der VNQ7003SY bedienen zu 
anderem den Adc Multiplexer des Stm32.
Wie würdet ihr das lösen?
Lg

von Stefan F. (Gast)


Lesenswert?

Bitte benenne immer wenigstens die Serie des STM32, weil sie mit sehr 
unterschiedlichen ADC bestückt sind.

> Wie würdet ihr das lösen?

Genau so, wie du beschrieben hast. Erst den Multiplexer einstellen, dann 
eine einzelne Messung mit dem ADC durchführen.

Um welchen STM32 geht es denn?

von PowerSSO (Gast)


Lesenswert?

Stefanus F. schrieb:
> Bitte benenne immer wenigstens die Serie des STM32, weil sie mit
> sehr
> unterschiedlichen ADC bestückt sind.
>
>> Wie würdet ihr das lösen?
>
> Genau so, wie du beschrieben hast. Erst den Multiplexer einstellen, dann
> eine einzelne Messung mit dem ADC durchführen.
>
> Um welchen STM32 geht es denn?

Es handeltsich um einen STM32F103
Schaltet man den ADC multiplexer im ADC complete Interrupt um?

von Stefan F. (Gast)


Lesenswert?

PowerSSO schrieb:
> Schaltet man den ADC multiplexer im ADC complete Interrupt um?

Kannst du machen, falls du überhaupt mit Interrupt arbeitest. Es könnte 
ja auch sein, dass du eine Messung startest und dann auf das Complete 
Flag wartest. Jedenfalls kannst du den Multiplexer nach der Messung 
umstellen.

Du kannst den ADC aber auch so konfigurieren, dass er mehrere Kanäle 
nacheinander in einem Rutsch misst. Dabei schaltet er seinen Multiplexer 
automatisch entsprechend der Liste der Kanäle um.

Siehe ADC_SQR1 bis SQR3 im Reference Manual.

von PowerSSO (Gast)


Lesenswert?

Stefanus F. schrieb:
> PowerSSO schrieb:
>> Schaltet man den ADC multiplexer im ADC complete Interrupt um?
>
> Kannst du machen, falls du überhaupt mit Interrupt arbeitest. Es könnte
> ja auch sein, dass du eine Messung startest und dann auf das Complete
> Flag wartest. Jedenfalls kannst du den Multiplexer nach der Messung
> umstellen.
>
> Du kannst den ADC aber auch so konfigurieren, dass er mehrere Kanäle
> nacheinander in einem Rutsch misst. Dabei schaltet er seinen Multiplexer
> automatisch entsprechend der Liste der Kanäle um.
>
> Siehe ADC_SQR1 bis SQR3 im Reference Manual.

Ok bekommt man irgend ein Flag wann einmal alle Kanäle durch sind?
Habe ich das richtig verstanden das ich jeden der 3 ADC gewisse Kanäle 
zuweisen kann und diese dann unabhängig von einander arbeiten?

von Stefan F. (Gast)


Lesenswert?

PowerSSO schrieb:
> bekommt man irgend ein Flag wann einmal alle Kanäle durch sind

Ja, dafür gibt es einen Interrupt und ein Flag. Siehe im Reference 
Manual Register ADC_SR, bit EOC.

> Habe ich das richtig verstanden das ich jeden der 3 ADC gewisse
> Kanäle zuweisen kann und diese dann unabhängig von einander arbeiten?

Korrekt. Du musst aber aufpassen, wie die ADC zu den I/O Pins zugeordnet 
sind.

von PowerSSO (Gast)


Lesenswert?

Stefanus F. schrieb:
> Ja, dafür gibt es einen Interrupt und ein Flag. Siehe im Reference
> Manual Register ADC_SR, bit EOC.

Danke für den Tipp.
Noch zur sicherheit ich weiße also zB dem ADC2 die vier Kanäle meiner 
VNQ7003SY zu und ich bekomme den Interrupt wenn alle 4 Kanäle ermittelt 
wurden?

Im Referenz Manual steht
This bit is set by hardware at the end of a group channel conversion

Ist der richtige Begriff also group channel conversion?

Danke

von PowerSSO (Gast)


Lesenswert?

Stefanus F. schrieb:
> Korrekt. Du musst aber aufpassen, wie die ADC zu den I/O Pins zugeordnet
> sind.

Wie meinst du das?

von Stefan F. (Gast)


Angehängte Dateien:

Lesenswert?

PowerSSO schrieb:
> Noch zur sicherheit ich weiße also zB dem ADC2 die vier Kanäle meiner
> VNQ7003SY zu und ich bekomme den Interrupt wenn alle 4 Kanäle ermittelt
> wurden?
> Ist der richtige Begriff also group channel conversion?

Ja

>> Du musst aber aufpassen, wie die ADC zu den I/O Pins zugeordnet sind.
> Wie meinst du das?

Die Kanäle der drei ADC sind (je nach Modell) nicht komplett den 
gleichen I/O Pins zugeordnet. Schau zum Beispiel im Anhang auf die blau 
markierten Zeilen, die sind nur mit ADC3 verbunden, aber nicht mit ADC1 
und 2.

von PowerSSO (Gast)


Lesenswert?

Stefanus F. schrieb:
> PowerSSO schrieb:
>> Noch zur sicherheit ich weiße also zB dem ADC2 die vier Kanäle meiner
>> VNQ7003SY zu und ich bekomme den Interrupt wenn alle 4 Kanäle ermittelt
>> wurden?
>> Ist der richtige Begriff also group channel conversion?
>
> Ja
>
>>> Du musst aber aufpassen, wie die ADC zu den I/O Pins zugeordnet sind.
>> Wie meinst du das?
>
> Die Kanäle der drei ADC sind (je nach Modell) nicht komplett den
> gleichen I/O Pins zugeordnet. Schau zum Beispiel im Anhang auf die blau
> markierten Zeilen, die sind nur mit ADC3 verbunden, aber nicht mit ADC1
> und 2.

Achso ja danke für den Tipp

von Mehmet K. (mkmk)


Lesenswert?

PowerSSO schrieb:
> Es handeltsich um einen STM32F103

Errata beachten:
2.1. Voltage glitch on ADC input 0
Workaround: None

von Stefan F. (Gast)


Lesenswert?

Den injection Trigger benutzt er zum Glück nicht.

von PowerSSO (Gast)


Lesenswert?

Mehmet K. schrieb:
> Errata beachten:
> 2.1. Voltage glitch on ADC input 0
> Workaround: None

Was bedeutet das?

Stefanus F. schrieb:
> Den injection Trigger benutzt er zum Glück nicht.

Kannst mich bitte aufklären?

von Stefan F. (Gast)


Lesenswert?

Ich habe Injection Trigger noch nie benutzt. Lies das Referenzhandbuch, 
falls es Dich interessiert.

von PowerSSO (Gast)


Lesenswert?

PowerSSO schrieb:
> Stefanus F. schrieb:
>> Ja, dafür gibt es einen Interrupt und ein Flag. Siehe im Reference
>> Manual Register ADC_SR, bit EOC.

Was ich noch nicht verstehe wie ich die 4 einzelnen Adc Ergebnisse raus 
bekomme?
Ich meine das EOC flag bekomme ich ja erst wenn alle 4 Kanäle fertig 
gewandelt sind. Wie kann ich also die Daten raus hohlen?
Danke für die Hilfe

von Stefan F. (Gast)


Lesenswert?

PowerSSO schrieb:
> Was ich noch nicht verstehe wie ich die 4 einzelnen Adc Ergebnisse raus
> bekomme?
> Ich meine das EOC flag bekomme ich ja erst wenn alle 4 Kanäle fertig
> gewandelt sind. Wie kann ich also die Daten raus hohlen?
> Danke für die Hilfe

Es gibt einen anderen Interrupt, der nach jeder Messung aufgerufen wird. 
Alternativ kann die Messergebnisse vermutlich auch per DMA in ein Array 
übertragen.

von Harry L. (mysth)


Lesenswert?


von Nop (Gast)


Lesenswert?

Je nachdem, wie genau Du das haben willst, solltest Du evtl. den 
Flash-Prefetch ausstellen. Es gibt eine AN von ST in der Richtung, 
allerdings für F2 und F4:

https://www.st.com/resource/en/application_note/dm00050879.pdf

Kannst ja mal bei festem analogen Eingangswert messen, ob der Prefetch 
einen Unterschied ausmacht.

Ansonsten kann man für langsame physikalische Vorgänge auch auf den 
ADC-Interrupt ganz verzichten und das aus dem Systick heraus steuern.

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.