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
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?
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?
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.
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?
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.
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
Stefanus F. schrieb: > Korrekt. Du musst aber aufpassen, wie die ADC zu den I/O Pins zugeordnet > sind. Wie meinst du das?
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.
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
PowerSSO schrieb: > Es handeltsich um einen STM32F103 Errata beachten: 2.1. Voltage glitch on ADC input 0 Workaround: None
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?
Ich habe Injection Trigger noch nie benutzt. Lies das Referenzhandbuch, falls es Dich interessiert.
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
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.
Schau mal hier! STM32™’s ADC modes and their applications https://www.st.com/content/ccc/resource/technical/document/application_note/c4/63/a9/f4/ae/f2/48/5d/CD00258017.pdf/files/CD00258017.pdf/jcr:content/translations/en.CD00258017.pdf
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.
