Forum: Mikrocontroller und Digitale Elektronik STM32L452 Nucleo UART Problem


von Sim (Gast)


Lesenswert?

Hallo,

gerade verzweifle ich an einem Problem mit dem UART ich auf meinem L452 
Nucleo Board. Es werden Daten übertragen, jedoch ist irgendwo ein 
Bitfehler.
Das heißt ich zähle eine Variable hoch und sende diese über UART. Dabei 
habe ich ab dem Wert 0x08 einen Offset zu um 0x10 drin. Sprich ich zähle 
hoch (hex) 0x06, 0x07, 0x18, 0x19,...
Die Hardwareconfig habe ich mir von Cube-MX ausspucken lassen. 
Interessanterweise funktioniert das ganze z.B. auf einen L476 problemlos 
mit den selben UART-Einstellungen. Daher schließe ich einen groben 
Programmierfehler meinerseits aus. Meine Vermutung wäre nun irgendwo ein 
Fehler in den Treibern.

Daher die Frage, ob jemand von euch schonmal ein ähnliches Problem mit 
einem solchen Bitoffset hatte? Und falls ja, wo genau das Problem lag 
und wie ihr es lösen konntet.

von Uwe B. (Firma: TU Darmstadt) (uwebonnes)


Lesenswert?

VCP Uart auf dem NucleoL452 ist LPUART1 als Standard...

von Sim (Gast)


Lesenswert?

Hm gut zu wissen, ist teste es gleich mal aus. Meine im Datenblatt UART2 
gelesen zu haben...

von Sim (Gast)


Lesenswert?

Ok, habe es getestet, leider ohne Erfolg. Sowohl im Projekttemplate als 
auch im Datenblatt des Nucleo L452RE steht der UART2. auf dem LPUART1 
kann cih ncihts über VCP empfangen.

von Sebastian E. (Gast)


Lesenswert?

Laufen beide MCUs mit HSE?
Mit welcher Bitrate bist du unterwegs? Rechne ggf. nach ob deine 
Wunschbitrate genau einstellbar ist.

von Klaus S. (skibby)


Lesenswert?

Der Cube stellt gerne standardmässig 7bit ein. Könnte eventuell das 
Problem sein ...

von Uwe B. (Firma: TU Darmstadt) (uwebonnes)


Lesenswert?

Nucleo-L452P : Com port ist LPUart1
Mucleo-L452: Comport ist USART2

von Sim (Gast)


Lesenswert?

Über die 7bit bin ich auch schon häufiger gestolpert, aber da liegt 
nicht  as Problem. Ich grenze den Fehler derzeit auf die 
HAL_UART_Transmit(_IT) Funktion ein. Denke mal, dass dort irgendwo 
zwischen der Übergabe des *data Pointers und de Schreibens des data 
values in das transmit Register liegt. Nur wie ich hier wieter vorgehe 
weiß ich leider nicht :D

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.