Forum: Mikrocontroller und Digitale Elektronik STM32F7 UART - Parität Problem


von Fabian W. (fabian_w105)



Lesenswert?

Hallo zusammen,

ich hab ein kleines Problem mit einem STM32F746BGT µC. Genutzt wird hier 
die CubeIDE mit dem V1.17.3 Firmware Package. Ein älteres Package hat 
das Problem nicht behoben.

Die Anforderung ist eine UART Kommunikation mit 8Bit Daten, Parität 
Gerade, 1 Stop Bit und einer Baudrate von 9600.

Beim STM ist es wohl so, dass man bei einem zusätzlichen Paritätsbit 
eine Datenbereite von 9 Bit einstellen muss. ....Hat leider nichts 
gebracht

Das Signal kommt am µC ordentlich an. Ich hab den Pegel mit dem 
Oszilloskop gemessen und der Logic Analyzer hat auch kein Problem das 
Signal an der Stelle zu dekodieren.

Die Daten die am µC ankommen lese ich per Interrupt ein. Wenn er nicht 
wegen einem Framing Error im HAL_UART_ErrorCallback landet, sondern im 
HAL_UART_RxCpltCallback dann wurde trotzdem nur Müll empfangen.

Hat jemand schonmal ein ähnliches Problem gehabt und hat einen Tipp für 
mich?

Ich hab mal ein paar Bilder aus der Konfiguration angehängt.

Gruß
Fabian

: Bearbeitet durch User
von Karlsson V. (karlsson_vom_dach)


Angehängte Dateien:

Lesenswert?

Fabian W. schrieb:
> und einer Baudrate von 9600.

Passt nicht zusammen mit:
huart7.Init.BaudRate = 19200; (aus Screenshot)

mfg KvD

von Bruno V. (bruno_v)


Lesenswert?

Wenn Du ein oszi hast, dann immer probeweise senden (0xaa bzw 0x55).

Und ohne oszi auch, nur dann 0xe0 und am PC ohne parity mitlesen

: Bearbeitet durch User
von Fabian W. (fabian_w105)


Lesenswert?

Moin,

>Passt nicht zusammen mit:
>huart7.Init.BaudRate = 19200; (aus Screenshot)


ja, da muss ich dir vollkommen recht geben.
Ist leider im Screenshot falsch.

Ich hatte kurz vorher im Initialisierungs Ablauf ein bisschen mit den 
UART Registern noch rum gespielt. Damit das aber wieder ordentlich ist, 
habe ich den Code Generator nochmal laufen lassen und da war mir wohl 
nicht aufgefallen, dass dort noch die Falsche Baudrate eingestellt war. 
Die hatte ich zuvor händisch angepasst.
Das Empfangen habe ich trotzdem mal mit 19.2k und 9600 probiert. Bei 
beiden Baudraten das selbe problem.

Gruß Fabian

: Bearbeitet durch User
von Harald K. (kirnbichler)


Lesenswert?

Warum nur wird Quelltext als Screenshot gepostet? Was soll das?

von Peter D. (peda)


Lesenswert?

Harald K. schrieb:
> Warum nur wird Quelltext als Screenshot gepostet?

Damit die Hilfsbereitschaft maximal gebremst wird, weil ihn niemand 
schnell mal eben selber in seiner IDE überprüfen kann.

Am besten solche Anhänge gleich in /dev/null ablegen.

von Georg S. (randy)


Lesenswert?

Datenbreite auf 9 bit setzen und Parität selber berechnen?

von Harald K. (kirnbichler)


Lesenswert?

Georg S. schrieb:
> Datenbreite auf 9 bit setzen und Parität selber berechnen?

Eine UART, die das braucht, ist Müll. Das konnten UARTs schon vor 50 
Jahren, siehe z.B. Motorola 6850 oder NSC 8250.

von Peter D. (peda)


Angehängte Dateien:

Lesenswert?

Georg S. schrieb:
> Datenbreite auf 9 bit setzen und Parität selber berechnen?

Erzähl mal noch einen vom Pferd.

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.