Ein Timer, ein DMA und zwei ADCs bei STM32

OP #4515905
Hallo Zusammen,

ich sitze gerade an einem Problem, dass ich so einfach nicht gelöst 
bekomme.
Ich könnte mir jedoch vorstellen, dass die Lösung ganz einfach ist.

Ich habe einen STM32. Dieser soll in festen Zeitabständen von wenigen µs 
eine Messung auf zwei ADCs gleichzeitig starten.

Die Messergebnisse sollen dann per DMA in einen Speicher geschrieben 
werden.

Ich benutze CubeMX für die Konfiguration.
Leider habe ich die Kombination noch nicht gefunden, die
mir das Problem löst.

Ich kann den DMA auf Continuous stellen, aber dann macht der doch die 
Messungen so schnell wie er kann hintereinander. Daher müssen die 
Messungen vom Timer getriggert werden. Und wie bekomme ich de STM dazu, 
die Messwerte in einen Speicher zu legen? Und wenn eine bestimmte Anzahl 
an Messungen fertig ist, dann soll ein Interrupt vom DMA kommen. Brauche 
ich einen zwei DMAs? Das Ganze ist noch etwas konfuß.

Viele Grüße und vielen Dank schonmal,

Holger
(Firma: www.harerod.de) Persönliche Seite #4515975
Hi Holger,
Schaltplan / MCU?

In seltenen Fällen bekomme ich Setupkombinationen mit den Bibliotheken 
nicht zustande. In diesem Fall werden die Registerbits direkt nach 
Datenblatt gekippt.

Ein aktuelles Beispiel ist ein Hardwaretreiber, der aus drei Timern, 
zwei ISRs und zwei DMAs besteht. Der soll sich dann nahtlos ins 
Restsystem einfügen. ;)

Cheerio,
 marcus
OP #4516027
Hallo Marcus,

es handelt sich um einen STM32F215VET.

Die ADCs hängen an
PC1 (ADC_IN11) und
PC2 (ADC_IN12).

Tim2 soll jetzt einen weiteren Timer (TimX) triggern, welcher dann 100 
mal im 10µs Abstand die beiden ADCs synchron triggert, sodass diese ihre 
Ergebnisse per DMA in einem Speicher ablegen.

Das Triggern von Timern über Timer ist mir kompliziert genug, bekomme 
ich aber noch hin. Ich komme nur nicht weiter, wo jetzt der Timer die 
ADCs triggert und das gleichzeitig noch irgendwie mit DMA gehen soll.

Da kriege ich einfach die Konfiguration nicht hin.
Und ich muss einen TimX finden, der von Tim2 getriggert werden kann.
Ich meine mich erinnern zu können, dass Tim6 verwendet werden kann.

Vielen Dank aber schonmal bis jetzt   ;)
(Firma: www.harerod.de) Persönliche Seite #4516077
Das klingt doch recht unspektakulär. Nur so ins Unreine gedacht:

Wer triggert wen? Die typische Kette wäre:

TIM->ConversionStart-+->ADC1->ConversionComplete->DMA(n1)Stream(m1)
                     |
                     +->ADC2->ConversionComplete->DMA(n2)Stream(m2)

Sahnehäubchen -> DMA Transfer Complete triggert ISR ;)
(Firma: www.harerod.de) Persönliche Seite #4518680
Holger T. schrieb:
> Ja genau so. Die Frage ist nur wie ich das konfiguriere? Ich muss ja
> alles irgendwo einstellen. Besonders beim DMA habe ich noch keine Idee
> obwohl es nicht schwer sein kann.
>
> Gibt es für diesen Fall ein tutorial?

Fühl Dich jetzt bitte nicht auf den Arm genommen, aber wie das auf 
Registerebene funktioniert steht glasklar in:

- RM0033_STM32F2_Reference_Manual_CD00225773 (TIM/DMA/ADC)
- STM32F2_datasheet_CD00237391_1410_rev12
- STM32F2_errata_DM00027213
- PM0056_F10_F20_F21_L1_M3_Programming_Manual_CD00228163

Wie das mit dem Abstraktionswerkzeug dieser Woche geht, kann ich Dir 
nicht sagen, da ich solche Sachen direkt auf dem Blech konfiguriere.

Frage am Rande: Brauchst Du's gewerblich?
#4520111
Marcus H. schrieb:
> Fühl Dich jetzt bitte nicht auf den Arm genommen, aber wie das auf
> Registerebene funktioniert steht glasklar in:
>
> - RM0033_STM32F2_Reference_Manual_CD00225773 (TIM/DMA/ADC)
> - STM32F2_datasheet_CD00237391_1410_rev12
> - STM32F2_errata_DM00027213
> - PM0056_F10_F20_F21_L1_M3_Programming_Manual_CD00228163

Wer mit dem Cube arbeitet schaut wohl kaum ins Datasheet^^

Hab ein Projekt mit dem F7 wo genau das gemacht wird. OHNE HAL-Library, 
kann da später mal den Source geben. Ist ja bei den STM32 überall fast 
gleich.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 10 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.