Forum: Mikrocontroller und Digitale Elektronik UM232H - Fehlerhafte Datenübertragung


von Takeshi (Gast)


Lesenswert?

Hallo erst mal! Bin langsam am Verzweifeln, ich hoffe hier hat jemand 
eine Idee.

Ein µC soll Daten über UART an das UM232H (das Sorgenkind, ein Modul von 
FTDI mit dem FT232HQ drauf) senden, das die Daten dann per USB an den 
Rechner weiterreicht. Das hat sogar mal mit allen möglichen BAUD-Raten 
funktioniert, nur gab es dann mal einen Fehler in meiner Schaltung, 
wodurch der µC Spannungen von ± 15 V gesehen hat und das Modul scheint 
auch etwas abbekommen zu haben. Die Datenübertragung war seit dem 
Fehlerhaft. Das sieht so aus, dass nicht mehr alle BAUD-Raten gehen 
(9600 geht) und wenn es geht, dann werden völlig falsche Bytes 
übertragen. Beispiel:
0110 0001 (a) -> 0100 1111
0110 0010 (b) -> 0010 0111
0110 0011 (c) -> 0100 1110

Für mich ist da echt kein Zusammenhang zu erkennen. Interessanterweise 
sind die Fehler immer gleich.
Daraufhin wurde der µC ausgetauscht und das UM232H ebenfalls. Am Fehler 
hat sich aber nichts geändert.
Der µC fällt als Fehler raus, denn wenn ich direkt an den COM-Port des 
Rechners gehe, klappt die Übertragung. Verbinde ich den Rechner über COM 
und USB mit dem Modul, dann hab ich in beide Richtungen exakt das 
gleiche Verhalten. Daher gehe ich mal stark davon aus, dass es das Modul 
ist.

So ... hat jemand eine Idee, was ich da noch ausprobieren könnte? Vielen 
Dank schon mal!

Wenn noch Infos gebraucht werden:
USB-Kabel wurde bereits getauscht, die Verbindung zum UM232H mehrfach 
erneuert. Zwei Rechner wurden getestet, beide mit XP, der Treiber ist 
"CDM 2.08.28 WHQL Certified", die 2.08.30 hab ich aber auch schon 
probiert.
Als Terminal nutze ich PuTTY. Mit FT_Prog kann ich auf das alte Modul 
nicht mehr zugreifen, da werden Fehler im EEPROM gemeldet. Mit dem neuen 
geht alles. Hab da allerdings nichts umgestellt, weil wüsste nicht was.

von Martin S. (docmartin)


Lesenswert?

Takeshi schrieb:
> 0110 0001 (a) -> 0100 1111
> 0110 0010 (b) -> 0010 0111
> 0110 0011 (c) -> 0100 1110

Das könnte durch eine (falsche) Negierung der Bit entstehen, das 
Start-Bit wird dann auch falsch erkannt...

Ahoi, Martin

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Takeshi schrieb:
> Ein µC soll Daten über UART an das UM232H (das Sorgenkind, ein Modul von
> FTDI mit dem FT232HQ drauf) senden, das die Daten dann per USB an den
> Rechner weiterreicht. Das hat sogar mal mit allen möglichen BAUD-Raten
> funktioniert, nur gab es dann mal einen Fehler in meiner Schaltung,
> wodurch der µC Spannungen von ± 15 V gesehen hat und das Modul scheint
> auch etwas abbekommen zu haben.

Wie genau sieht der Aufbau aus?

von Takeshi (Gast)


Lesenswert?

Martin Schneider schrieb:
> Das könnte durch eine (falsche) Negierung der Bit entstehen, das
> Start-Bit wird dann auch falsch erkannt...
Stimmt, das wäre eine Erklärung. Ich hab mich nur auf die reinen 
Datenbits konzentriert. Bleibt nur die Frage, wie sich das ändern lässt.
Bei FT_Prog gibt es die Option "Schmitt Input", ändert aber nichts, wenn 
ich das setze.

Rufus Τ. Firefly schrieb:
> Wie genau sieht der Aufbau aus?

Das Signal kommt aus dem Controller mit 3,3 V Pegel raus, geht auf einen 
Optokoppler (ISO7221), dann auf einen MAX3221. Dort kommt es mit einem 
Pegel von ±6 V heraus (gerade noch mit nem Oszi gemessen). Das alles 
sitzt auf einem Entwicklerboard von TI. Über eine Stiftleiste über ein 
paar Drähtchen geht es zum UM232H. An dem Controller hängen noch ein 
paar OPs, daher die ±15 V.
Aber wie gesagt, das Signal so aus Entwicklerboard scheint in Ordnung zu 
sein, denn der PC empfängt die Daten über seinen eigenen COM-Port 
richtig. Und wenn ich über diesen COM-Port Daten sende, kommt über USB 
der gleiche Käse raus und wenn ich über USB sende, empfange ich über den 
COM-Port das Gleiche. Also schließe ich den Aufbau als Fehlerquelle aus.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Takeshi schrieb:
> Über eine Stiftleiste über ein
> paar Drähtchen geht es zum UM232H.

Der UM232H aber will keine RS232-Pegel.

Ihn mit den Ausgängen eines MAX3221 zu verbinden ist definitiv falsch.

von Takeshi (Gast)


Lesenswert?

Tja, das war echt der Fehler. Genau den Gedanken hatte ich auch kurz, 
aber da ich so sicher war, dass es auf diesem Wege mal funktioniert hat, 
hab ich das ausgeschlossen. Bin jetzt direkt an die GPIOs gegangen und 
es geht. Nicht zu fassen, womit man manchmal mehrere Tage verbringt.
Danke für den entscheidenden Hinweis! :)

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.