Forum: Mikrocontroller und Digitale Elektronik [STM32] Discovery board USART1 Problem Zeichen doppelt und corrupted


von Espen A. (espen)


Lesenswert?

Werte Leser,
ich versuche eine Verbindung zu einem PC aufzubauen.
Wenn ich Daten sende, erscheinen sie aber falsch im Terminal.
Falsch heißt
- die Anzahl der empfangenen Zeichen ist doppelt so hoch wie die 
gesendeten
- die empfangenen Zeichen sind anders als die gesendeten

Die Schnittstellenparameter ( baud,Parität , etc ) stimmen aber.

Was kann das sein? Sind das evt. meine selbstgemachten Kabel?

Gruß
Espen
PS.: Im Forum habe ich gelesen, es gäbe Beispiele von ST. Die habe ich 
leider nicht und wäre auch hier für einen Hinweis dankbar.

von Ruediger A. (Firma: keine) (rac)


Lesenswert?

Hallo,

Welches discovery board ist das genau?

Kann es sein, dass Du die Clock nicht richtig initiailisierst? Die 
U(S)ARTs leiten sich von der CPU clock ab; wenn die nicht synchron mit 
der Empfängerclock läuft, gibt es per Definition Datenmüll.

Welches Protokoll fährst Du? TTL,RS232,RS485? Ist eine FTDI Brücke/USB 
am PC, oder eine native serielle Schnittstelle?

Welchen Code nutzt Du zum Senden?

von Espen A. (espen)


Lesenswert?

Hallo Ruediger,
Ruediger A. schrieb:
> Hallo,
>
> Welches discovery board ist das genau?
ich habe ein Board mit einem STM32F407 VGT Controller.
>
> Kann es sein, dass Du die Clock nicht richtig initiailisierst? Die
> U(S)ARTs leiten sich von der CPU clock ab; wenn die nicht synchron mit
> der Empfängerclock läuft, gibt es per Definition Datenmüll.
Die Clock stammt aus dem Startcode und ich habe sie nicht verändert.
Außerdem toggle ich eine LED im Sekundentakt, die ist in Ordnung ( per 
Hand mitgezählt ).


>
> Welches Protokoll fährst Du? TTL,RS232,RS485? Ist eine FTDI Brücke/USB
Ein höheres Protokoll verwende ich nicht. Ich stelle baud,parität, 
stoppbit und Datenbits ein.


> am PC, oder eine native serielle Schnittstelle?
Am PC ist ein USB/seriell Konverter.

>
> Welchen Code nutzt Du zum Senden?
Direkt nach der Initialisierung ohne dass ich einen Interrupt angemeldet 
habe, polle ich über das SR Register und dann sende ich über DR raus.

Nachdem ich die ISR eingeschaltet habe, habe ich dieselben Effekte.

Gruß
Espen

von Espen A. (espen)


Lesenswert?

Das liegt daran, dass ich die Pins PA9 und PA10 verwendet hab und die 
sind auf dem Discovery für USB vorgesehen.

von hint hint (Gast)


Lesenswert?

Espen A. schrieb:
> Im Forum habe ich gelesen, es gäbe Beispiele von ST. Die habe ich
> leider nicht und wäre auch hier für einen Hinweis dankbar.

Lade dir das CumbeMX Paket herunter. Darin sind für jedes
Board Beispiele leicht "zusammenklickbar". Allerdings will
das Klicken auch gelernt sein, denn man muss genau sagen
ääähhhh klicken was man will.

Wer es lieber ohne CubeMX mag der wird hier fündig:

https://stm32f4-discovery.net/
https://mikrocontroller.bplaced.net/wordpress/

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.