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
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
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 ;)
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 ;)
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?
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?
Hallo, ich werde mir das ab Dienstag mal anschauen. Erst einmal vielen Dank und schönes Osterwochenende!
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.
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.