Forum: Mikrocontroller und Digitale Elektronik STM32F446: USART DMA-Transfer


von Walter T. (nicolas)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich bin gerade dabei, die letzten Stunden vor der Bescherung dafür zu 
nutzen, an einem STM32F446RE einen UART auf andere Pins zu wechseln (von 
USART2 auf USART3).

Auf USART2 kann ich sowohl direkt (usart_putc()) Daten ausgeben, als 
auch per DMA (usart_put()). Letzteres funktioniert auf USART3 nicht.

Ich gehe gerade davon aus, daß ich einfach einen Flüchtigkeitsfehler 
gemacht habe.

Der Fehler äußert sich darin, daß per DMA kein einziges Zeichen 
ausgegeben wird. Der DMA Transfer Complete Interrupt wird aufgerufen, 
das Register DMA1_Stream3->NDTR zeigt aber nicht Null an.

Wer hat auch Langeweile und einen scharfen Blick?

Nachtrag: Ich habe es gefunden. Das Flag DMA_IT_TCIF6 bezieht sich auf 
den Stream 6 (wer hätte es ahnen können?).

Jetzt funktioniert alles und ich kann das Zeug in den nächsten Tagen in 
Ruhe aufräumen.

Schöne Weihnachten allen Rätselfreunden!

: Bearbeitet durch User
von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

Das liegt eben daran, dass der STM32 HAL kein wirklicher HAL ist.
Die DMA Streams sind ja garnicht wegabstrahiert und du darfst dir 
raussuchen was der neue USART nutzt.
Da kommts dann eben leider zu sowas.

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.