Forum: Mikrocontroller und Digitale Elektronik STM32: DMA Transfer wird sporadisch nicht ausgelöst


von Bronco (Gast)


Lesenswert?

Ich nutze DMA Transfer im circular mode um Werte vom AD-Wandler ins 
interne RAM zu schaffen.
Nun wird sporadisch scheinbar ein DMA-Transfer nicht ausgelöst, so dass 
sich die gewandelten Kanäle im RAM um eine Position nach vorne 
verschieben.
Ein Busfault Interrupt wird nicht ausgelöst, ebensowenig ist das 
Transfer Error Flag des DMA-Kanals gesetzt.

Es treten in der Software auch Interrupts von Timer3 und USART2 auf. 
Deaktiviere ich diese, so scheint das Problem nicht mehr vorhanden zu 
sein.

Hat irgendjemand eine Ahnung wo das Problem liegen könnte?

von Martin (Gast)


Lesenswert?

Nein, ich weiß nichts, habe aber dasselbe Problem. Bei mir habe ich aber 
den Eindruck, dass das bei dem Aufsetzen der DMA passiert. Im 
Programmlauf verschiebt sich an der falschen Zuordnung der Kanäle nichts 
mehr.

Ist das bei Dir auch so?

-Martin

von Ingo (Gast)


Lesenswert?

Welchen DMA verwendest du? DMA2 hat glaub ich noch n Fehler, guck mal in 
die Errata.


Ingo

von DMA2 hat glaub (Gast)


Lesenswert?

http://blog.frankvh.com/category/stm32/

Schau' mal, ob da was Verwertbares steht.

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Um welchen STM32 geht es?

von Marcus O. (marcus6100)


Lesenswert?

Die Glaskugel sagt, beim Löschen der Interrupt Flags von Timer3 und 
USART2 machst du was falsch. Vermutlich read-modify-write statt 
Schreiben von 1er bits.

von Bronco (Gast)


Lesenswert?

Oho, da hat jemand meinen Thread von vor 2 Jahren ausgegaben.

Bei mir lag es damals daran, dass ich den ADC übertaktet hatte aus 
versehen. Das hab ich erst nach lamgem Suchen gefunden. Kannst ja mal 
gucken, ob das bei dir auch der Fall sein kann.

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.