Hallo alle miteinander, ich versuche de UART eines STN32G474RE zum laufen zu bekommen. Da bei meiner Anwendung die Receive-Size im Allgemeinen nicht bekannt ist wollte ich von der HAL_RECEIVE Funktion weg kommen und versuche darum, das UART komplett ohne HAL zu implementieren. Leider funktioniert dies nicht. Mit HAL habe ich die Hardware bereits getestet. Senden und empfangen ist ohne Probleme möglich. Die UART Konfiguration habe ich mir aus der Anleitung im Reference Manual und den Registereinträgen der MX_UART4_Init Funktion zusammengesucht. Ich weiß, ich übersehe etwas. Allerdings weiß ich nicht was. Könnt Ihr mir da helfen? Source Code und Reference Manual findet Ihr im Anhang. Ich verwende ein NUCLEOG474RE. Vielen Dank. Grüße Marcel
Marcel Vogel schrieb: > Da bei > meiner Anwendung die Receive-Size im Allgemeinen nicht bekannt ist > wollte ich von der HAL_RECEIVE Funktion weg kommen Das ist unnötig, wenn du HAL_UART_Receive so aufrufst, daß immer nur ein einzelnes Zeichen empfangen wird. Darauf kann mann dann geeignet reagieren.
Brilliante Idee das Referenzmanual anzuhaengen. Bei Problemen mit Windows 10 wird der naechste bestimmt die Windows 10-ISO anhaengen. Probleme mit den asynchronen Schnittstellen der STM32 hatte ich bisher nur im IRDA-Modus. Da hatte ich die Registerbeschreibung aber eben nicht bis zum Ende gelesen.
In der Sendeschleife ist keine Verzögerung drin. So sendet er IIRC überhaupt nix. Auch bei dem DMA Krempel müsste man vorher wissen wieviele Bytes empfangen werden sollen. Bei einzelnen Bytes nimmt man den UART Interrupt, das ist einfacher.
Kurz: DMA im CIRCULAR Modus betreiben und den Speicherblock als Ringpuffer betrachten. DMA schreibt am Ende und eine Lesefunktion nimmt Daten von vorne ab. Dank des IDLE Interrupts bekommt man das Ende einer Nachricht mit. Ausführlich: https://stm32f4-discovery.net/2017/07/stm32-tutorial-efficiently-receive-uart-data-using-dma/ https://community.st.com/s/feed/0D50X00009XkW2nSAF (Link zu .html Datei ganz oben).
Cool, vielen Dank für die Antworten! Hat wirklich geholfen! Und sorry wegen dem Reference Manual...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.