SMT32 - Uart Receive will nicht

Gast #5559337
Hallo,

ich habe ein kleines Problem mit dem Empfang von Daten auf der UART 
zwischen einem STM32F4 Controller und einem Sensor-Modul.

Das Modul sendet ohne Hardware-Flow-Control.

Mit dem STM32F4 kann ich nach Initialisierung mittels HAL-Routinen nur 
senden, aber auf der RX-Leitung kann ich keinerlei Daten entgegen 
nehmen.

Die Initialisierung ist mittels Cube-MX durchgeführt. Keien einzige von 
den verschiedenen UART-Receive-Funktionen scheint zu funktionieren...
Senden kann ich Mittels Uart_Transmit_IT, aber im Empfang bleibt einfach 
alles tot...

Hat jemand damit Erfahrungen?
Gast
STM schrieb im Beitrag #5559451:
> ...und gibt es vielleicht einen Tip, wie man die UART dazu bekommt, auch
> auf empfangene Zeichen zu reagieren?

Ja.
STM schrieb im Beitrag #5559337:
> Mit dem STM32F4 kann ich nach Initialisierung mittels HAL-Routinen nur
> senden, aber auf der RX-Leitung kann ich keinerlei Daten entgegen
> nehmen.

Gibt es dazu auch Code?

STM schrieb im Beitrag #5559337:
> Die Initialisierung ist mittels Cube-MX durchgeführt. Keien einzige von
> den verschiedenen UART-Receive-Funktionen scheint zu funktionieren...
> Senden kann ich Mittels Uart_Transmit_IT, aber im Empfang bleibt einfach
> alles tot...

Meine Glaskugel sagt mir, dass du die Interrupt-API benutzt und sofort 
nach der Funktion HAL_UART_Transmit_IT den Receive-Buffer ausliest. Das 
funktioniert so nicht, weil Interrupt- und DMA-API asynchron arbeiten. 
Außerdem sagt mir meine Glaskugel, dass du das HAL-User-Manual für 
deinen Controller nicht gelesen hast.

Als Lösungsvorschlag empfehle ich UM1725, insbesondere 67.2.1 "UART 
Firmware driver API description - How to use this driver"
Gast
Ist es denn überhaupt möglich, den IT-Betrieb zu nutzen, wenn man 
asynchron Senden und Empfangen will, oder muss man so etwas zwingend 
über DMA angehen?

Ich frage das, weil das USART_DR Register ja anscheinend sowohl für 
Senden und Empfangen genutzt wird.
Gast
STM schrieb im Beitrag #5559734:
> Ist es denn überhaupt möglich, den IT-Betrieb zu nutzen, wenn man
> asynchron Senden und Empfangen will, oder muss man so etwas zwingend
> über DMA angehen?
>
> Ich frage das, weil das USART_DR Register ja anscheinend sowohl für
> Senden und Empfangen genutzt wird.

Vielleicht werden beim Lesen und Schreiben des Registers 
unterschiedliche Adressen angesprochen?
Read the manual!
STM schrieb im Beitrag #5559734:
> Ist es denn überhaupt möglich, den IT-Betrieb zu nutzen, wenn man
> asynchron Senden und Empfangen will

Natürlich ist es das und es ist auch nur asynchron möglich bzw. so 
gedacht. Sonst kann man auch gleich die blocking-API nehmen.

STM schrieb im Beitrag #5559734:
> Ich frage das, weil das USART_DR Register ja anscheinend sowohl für
> Senden und Empfangen genutzt wird.

So wie du diese Frage stellst, scheinst du dich noch nie mit der 
Hardware von irgendeinem uC auf Registerebene auseinandergesetzt zu 
haben. Das würde ich unbedingt mal empfehlen bevor du dir mit CubeMX 
irgendwas zusammenklickst. Wenn dir das zu kompliziert ist, nimm lieber 
Arduino oder mbed.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 8 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.