STM32F Daten in DMA schreiben und auslesen

Gast #5779139
Lesenswert?

Hallo zusammen

Ich bin ganz neu auf dem Gebiet und habe mich begonnen einzuarbeiten. 
Verzeiht mir also bitte "dumme Fragen" :).

Endziel meiner Aufgabe ist es, Sensordaten kontinuierlich mittels STM32F 
einzulesen (dabei mittels DMA abspeichern, damit der Cpntroller in den 
SLEEP-Modus gehen kann), sobald der Buffer voll ist, soll er kurz 
aufwachen um die Daten zu verarbeiten und danach wieder schlafen.

Nun habe ich mittels der HAL "Library" diverse Funktionen gefunden, habe 
aber nicht wirklich den Durchblick... Kann mir evtl jemand grob 
erklären, wie ich Daten (zum starten müssen das noch nicht wechselnde 
Sensorwerte sein) mittels DMA schreiben, danach schlafen und bei DMA 
Interrupt wieder aufwachen kann um das ganze zu wiederholen?

Vielen Dank!
Gast #5779230
Lesenswert?

DMA habe ich bisher nur in Zusammenhang mit PC Soundkarten programmiert, 
deswegen kann ich Dir da nicht helfen.

Ich denke, dass du dich mit dem Referenzhandbuch deines Mikrocontrollers 
auseinander setzen musst. Dort sind alle Funktionen auf Register-Ebene 
erklärt. Danach kannst du die Register benutzen, oder die Doku zur HAL 
lesen, um herauszufinden, wie du die Register indirekt durch die HAL 
korrekt ansprichst. Mein Eindruck zur HAL Doku ist: Zu knapp, man muss 
den Quelltext lesen. Der ist übrigens umfangreich kommentiert.

Für weitere Details solltest du den Mikrocontroller benennen. STM32F ist 
ein sehr weites Feld von hunderten Modellen die mit unterschiedlichen 
DMA Controllern bestückt sind.

Dein Wunsch, den Controller möglichst lange Schlafen zu lassen, lässt 
mich vermuten, dass du Strom sparen willst oder musst. Falls dem so ist, 
würde ich Dir empfehlen, einen Blick auf die STM32L0 Serie zu werfen, 
denn die sind dafür optimiert.
Gast #5779293
Lesenswert?

Es handelt sich im Moment um das Nucleo-Board F446RE, später dann 
STM32F746ZG (vorgegeben). Der Controller wird die meiste Zeit tief 
schlafen (auch keine Sensordaten) auslesen. Da sehr stark Batterie 
geschont werden muss, sollte er im Betrieb allerdings die CPU nur 
anwerfen um die Daten, welche mittels DMA eingelesen wurden, rasch 
auszuwerten.

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