Forum: Compiler & IDEs Stm DMA pointer


von Detlef _. (detlef_a)


Lesenswert?

Hallo,

ich habe bei einem stm Cortex F4 einen ADC mit DMA aufgesetzt und der 
Callback für 'Bufferhalbvoll' und 'Buffervoll' funktioniert auch super. 
Jetzt muß ich allerdings wissen wohin der DMA GERADE JETZT schreibt. Wie 
geht denn das, ich habe kein Register gefunden das den aktuellen DMA 
Pointer angibt?

THX
Cheers
Detlef

von Bauform B. (bauformb)


Lesenswert?

DMA_CNDTRx
Streng genommen steht da drin, wie viele Worte noch zu kopieren sind. 
Man merkt sich den Anfangswert (oft = Puffergröße) und bekommt mit 
(Anfangswert - DMA_CNDTRx) den Index in den Puffer.

Na gut, das ist nicht die Adresse, aber will man wirklich die 
physikalische Adresse wissen oder programmiert man in C?

Dies gilt natürlich nur für den STM32L412. Dein unbekannter F4 mag 
völlig anders funktionieren.

von Detlef _. (detlef_a)


Lesenswert?

Ah, vielen Dank.

Hatte ich übersehen, exakt das was ich suche.
Ich nehme nen STM32F303, aber das ist laut RM0316 Rference manual bei 
dem auch vorhanden.

Too blind to see. THX.

Cheers
Detlef

: Bearbeitet durch User
von Uwe B. (Firma: TU Darmstadt) (uwebonnes)


Lesenswert?

Es gibt doch ein half und ein  full Buffer flag, oder?

von 900ss (900ss)


Lesenswert?

Uwe B. schrieb:
> Es gibt doch ein half und ein  full Buffer flag, oder

Ja.

von Detlef _. (detlef_a)


Lesenswert?

Uwe B. schrieb:
> Es gibt doch ein half und ein  full Buffer flag, oder?

>>>>>>>>>>>
und der Callback für 'Bufferhalbvoll' und 'Buffervoll' funktioniert auch 
super.
<<<<<<<<<<<<

schrub ich.

von M. Н. (Gast)


Lesenswert?

Hi,
der DMA im STM32 hat ein Register für die Anzahl der zu übertragenden 
Elemente NTDR oder NDTR oder so... Das zählt während des Tranfers 
runter. Wenn du die initiale Anzahl kennst, kannst du das Fill-Level 
daraus ableiten und dann weißt du, wo er gerade schreibt.

von Detlef _. (detlef_a)


Lesenswert?

M. H. schrieb:
> Elemente NTDR oder NDTR

DMA_CNDTRx . Schrub Bauform am 19.11.

Cheers
Detlef

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
Noch kein Account? Hier anmelden.