Forum: Mikrocontroller und Digitale Elektronik STM32F4 - USART3 Rx und DMA will nicht


von mr. mo (Gast)


Angehängte Dateien:

Lesenswert?

Hey Leute,
hat schonmal jemand die Daten die vom USART empfangen werden per DMA 
weiter verarbeitet, also in eine Variable/Array gespeichert?

Also das Senden von Zeichen per DMA funktioniert wunderbar, nur das 
Empfangen will einfach nicht klappen.

Ich lasse mir jede Sekunde von HTerm die Zahl 123 an den STM32 schicken 
und der "Receive Data register not empty interrupt" lässt eine LED 
blinken. Das funktioniert auch.

Anschließend lasse ich die Zahl 123 über den USART auch wieder ans HTERM 
zurückschicken, es kommt aber nichts an.
Zum signalisieren ob der DMA überhaupt irgendwas verarbeitet soll sobald 
der "Streamx transfer complete interrupt" ausgelöst wird ebenfalls eine 
LED blinken, diese tut es aber nicht. Daher denke ich, dass ich 
irgendwas falsch eingestellt haben muss.

Im Anhang gibt es den Code.
Ja der sieht noch nicht so toll aus, ist noch in arbeit. Sollte aber zum 
Verständnis reichen.

von Philipp (Gast)


Lesenswert?

Hi,

Versuche mal die Stream/Channel Konfiguration wie angegeben im Reference 
Manual. Also konkret fuer Dich beim USART3: Fuer RX: Stream1 Ch4 und TX: 
Stream 3 Ch4. Auch wenn im Manual steht, dass das nur als Beispiel sei, 
hats bei mir erst mit dieser Auswahl geklappt. Intuitive Sache.

Cheers,
Philipp

von mr. mo (Gast)


Lesenswert?

Philipp schrieb:
> Versuche mal die Stream/Channel Konfiguration wie angegeben im Reference
> Manual. Also konkret fuer Dich beim USART3: Fuer RX: Stream1 Ch4 und TX:
> Stream 3 Ch4. Auch wenn im Manual steht, dass das nur als Beispiel sei,
> hats bei mir erst mit dieser Auswahl geklappt. Intuitive Sache.

Zufall das ich hier nochmal reinschaue :D
Das Problem habe ich inzwischen gelöst gehabt. Die von dir 
vorgeschlagene Einstellung habe ich auch drin ... Geändert habe ich den 
Betrieb auf Circular und Buffer als Array. Funktioniert gut mit dem 
Empfangen :)

Nochmal in meinen Code geschaut:
Keine Ahnung warum ich da noch die falsche Einstellung drin habe, macht 
gar keinen Sinn. Gar nicht gesehen gehabt ... Muss sich beim 
zusammenkopieren der Fehlerteufel eingeschlichen haben. Kein Wunder, 
dass es keine Antwort gab ^^

von leon (Gast)


Lesenswert?

Hallo,

könntest du den funktionierende Code hier posten ? Ich habe das gleiche 
Problem mit der USART3 und DMA.

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.