STM32F4 ADC mehrere Kanäle stromsparend

Gast #3539847
Lesenswert?
• ▲
▼
Ich habe ein STM32 Discovery vor mir liegen und möchte mal testen, ob 
und wie man den STM32 als leistungsfähigen Ersatz für AVRs verwenden 
kann.
Eine häufige Anwendung ist bei mir, mehrere Kanäle (z.b. 8) mit 
unterschiedlicher Geschwindigkeit abzutasten. Also z.B. zwei Signale mit 
10KSPS, jede Sekunde zwei Temperaturwerte und 1x pro Minute die 
Batteriespannung.
Was ist der sinnvollste Weg für sowas beim STM32? Da es 
batteriebetrieben sein soll, ist ein Stromsparmodus zwischen den 
Messungen notwendig.

Ein anderer Anwendungsfall wäre die Aufnahme eines Signals über z.b. 10s 
und dann eine Verarbeitung (Mittelwertbildung, Extrema suchen etc.). In 
der Zwischenzeit soll das Signal aber weiterhin in einen anderen 
Speicher gesampelt werden.
Das müsste man mit DMA und ADC hinbekommen, aber ich habe nicht 
herausgefunden, wie man damit eine "langsame" (z.B. 1ksps) Messung 
hinbekommt und wie man dann eine Funktion aufrufen lässt, sobald der 
Speicher voll ist. Oder ist DMA in diesem Fall nicht sinnvoll? Auch hier 
soll es möglichst stromsparend sein.
Hat jemand einen Tipp für einen Ansatz für mich?
Gast #3540114
Lesenswert?
• ▲
▼
Ist eigentlich ganz einfach.

Einen Timer verwenden um den ADC zu starten. Diesen kann man so 
einstellen, dass der ADC die gewünschten Kanäle sequentiell abarbeitet.
Die Daten jedes Samplevorgangs werden per DMA in den Speicher kopiert. 
Wenn der DMA fertig ist gibts einen Interrupt.

Schwierig ist eher, dass du völlig verschiedene Abtastraten haben 
willst. Das kannst du entweder dadurch lösen, dass du dafür verschiedene 
ADCs nimmst, den ADC jedes mal neu konfigurierst oder einfach trotzdem 
die anderne Kanäle sampelst und die Daten wegschmeißt.

Im Datenblatt steht relativ gut beschrieben, was wie viel Energie 
benötigt. Trotzdem sind das nur vage Werte und im Zweifellsfall gilt 
nachmessen.

Der STM ist eigentlich ganz nett. Man kann relativ viel machen, ohne 
dass die CPU gebraucht wird.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.