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
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.
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
Es gibt doch ein half und ein full Buffer flag, oder?
Uwe B. schrieb: > Es gibt doch ein half und ein full Buffer flag, oder Ja.
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.
Gast
#6911789
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.
M. H. schrieb: > Elemente NTDR oder NDTR DMA_CNDTRx . Schrub Bauform am 19.11. Cheers Detlef
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.