STM32F7 UART - Parität Problem

#7876373
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

#7876441
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

#7877144
Lesenswert?

Cyblord -. schrieb:

Leider können die STM32 tatsächlich kein 9 Bit + Parity. AVRs können das.

Das ist ja doof, aber brauch er ja hier nicht: 8Bit + Paritiy mit 9K6 sind gefordert. Würde ich dann auch auf 8E1 einstellen, nicht auf 9N. Wie, hat Peda ja angehangen. Wenn CubeIDE da Mist baut (kann ja sein), kann man ja die UART-Register zur Not auch mal selbst beschrieben? Danach dann vergleichen.

Fabian W. schrieb:

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

#7877149
Lesenswert?

Cyblord -. schrieb:

Leider können die STM32 tatsächlich kein 9 Bit + Parity. AVRs können das.

Nervt mich auch, weil ich (hobbymäßig) JETI Sensoren für den Modellbau entwickle und das JETI Protokoll zwingend 9 Bit + Parity braucht. Somit kann ich partout nicht auf STM32 gehen.

Na und? Nimmste halt ATSAM bzw PIC32C. PIC32C ist ARM, quasi die Weiterentwicklung der ATSAM, PIC32M sind die MIPS-basierten Typen.

fchk

#7877154
Lesenswert?

Frank K. schrieb:

Na und? Nimmste halt ATSAM bzw PIC32C. PIC32C ist ARM, quasi die Weiterentwicklung der ATSAM, PIC32M sind die MIPS-basierten Typen.

Ja danke ich weiß was ich nehmen kann, weil ich bereits passende Bausteine nehme. Ich würde aber gerne eine einheitliche Sensor Plattform auf STM32 machen was nicht geht. Aber daher weiß ich dass kein STM32 in der von benötigten Klasse 9 Bit + Parity bietet.

#7878379
Lesenswert?

Ich hab am Wochenende mal ein paar Sachen durchprobiert und ich denke ich habe für mich eine passende Lösung gefunden.

Axel schrieb ja schon

Wenn CubeIDE da Mist baut (kann ja sein), kann man ja die UART-Register zur Not auch mal selbst beschrieben? Danach dann vergleichen.

Ich habe die UART Schnittstelle nun ohne die CubeIDE initialisiert und die Kommunikation auch ohne das Framework sondern dann direkt über die Register.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren