Hilfe bei Strategie erstellen STM32 ADC

Gast #5783141
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
Gast #5783181
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?
Gast #5783183
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.
Gast #5783192
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?
Gast #5783194
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.
Gast #5783201
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
Gast #5783210
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.
Angehängte Dateien:
Gast #5783232
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
Gast #5783770
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
Gast #5783779
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.
Gast #5783897
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.

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