Hey Leute,
ich besitze diesen USB zu RS232 Adapter:
http://www.delock.de/produkte/gruppen/USB+Adapter/Delock_USB_20_zu_Seriell_Adapter_61460.html
Ein µC sendet Daten per UART an den PC. An der eingebauten Schnittstelle
funktioniert das prima, nur über den Adapter nicht. Er liest etwa 10
Zeichen ein und empfängt dann nichts mehr. Ich habe schon verschiedene
Terminalprogramme (Hyperterminal, BASCOM Terminalsimulator,...) und
Systeme (Win 7 64bit, Win XP SP2 32bit) ausprobiert. Die Baudrate habe
ich auch verändert, jedoch alles ohne Erfolg. Treiber sind korrekt
installiert. Hat jemand eine Idee an was das liegen könnte??
Viele Grüße
Bär
hallo,
also ich halte von diesen ganzen USB-RS232-Adaptern nicht so viel.
Da wird (in Deinem Beispiel) der Datenstrom aus der USB-Schnittstelle,
der ja als ca. 5Volt-Logic vorliegt (ca.TTL), im Adapter von einem
"232-Chip" mühsam auf ca. +/-12Volt geprügelt um diese +/- 12Volt dann
am Pollinboard ebenfalls mit so einem 232-Chip wierder runter auf TTL zu
verwursten.
Einfacher ist es allemal aus dem FTDI-Chip vom Adapter mit TXD und RXD
direkt in den µC vom Pollinboard zu gehen.
Wenn Du Dich mit Elektronik befasst, sollte diese Umfrickelei kein
Problem sein.
Ich habe mir schon vor Jahren einen USB-Adapter mit einem FDTI Chip
gebaut und arbeite nur noch damit. Dieses ganze V.24-Geraffel
(+/-12Volt) braucht man doch eh erst bei Leitungslängen jenseits der
Wohnzimmergrenzen ;-)
Old-Papa
Danke, ich weiß was du meinst. Aber in meinem Fall empfange ich mit dem
PC ausschließlich, also ich sende nichts zum µC. FTDI habe ich leider
keinen da, müsste ich halt bestellen :/
Wenn man auf der delock Seite unter FAQ nachschaut, dann wird dort unter
"Chipsatz" zu FTDI verlinkt. Ich denke in dem Wandler schlummert bereits
ein FT232.
Sollte dies der Fall sein, dann prügelt da niemand TTL Pegel auf 12V!
/edit
Was heißt "mit der eingebauten Schnittstelle"?
Am COM vom PC funktioniert die ganze Gschicht?
Wie sieht es mit den Signalen CTS, RTS & DTR aus? Verwendest du die?
Habe ähnliche Wander im Einsatz und keine Probleme. Wenn du HyperTerm
nimmst, stell' ein Screenshot ein, nachdem die Übertragung stoppt.
Old -papa schrieb:> hallo,> also ich halte von diesen ganzen USB-RS232-Adaptern nicht so viel.> Da wird (in Deinem Beispiel) der Datenstrom aus der USB-Schnittstelle,> der ja als ca. 5Volt-Logic vorliegt (ca.TTL), im Adapter von einem> "232-Chip" mühsam auf ca. +/-12Volt geprügelt um diese +/- 12Volt dann> am Pollinboard ebenfalls mit so einem 232-Chip wierder runter auf TTL zu> verwursten.
Einspruch! Im Delock steckt ein FT232, also genau der gleiche IC. Damit
habe ich schon verschiedenste Anwendungen erfolgreich laufen gelassen
incl. Rückumwandlung mit MAX232 zum AVR.
Bezüglich Spannungspegel liegt ein zufällig rausgegriffener FT232
USB-Seriell-Wandler bei +- 6,5 V, die interne Schnittstelle des Rechners
bringt es auch nur auf magere 10,5V. Vielleicht sind genau diese 4 Volt
bei Bär aber das Problem?
Ansonsten: µC ist meistens ohne Handshake. Ist das im Hyperterminal
eingestellt, also Handshake "kein"?
Schon mal mit dem Oszi kontrolliert, ob nach den 10 Zeichen noch was
kommt auf der Schnittstelle?
Servus
Michael
Klar hab ich mit dem Oszi nachgemessen, das passt alles soweit. MAX232
ist auch da, Pegel sind bei um die 10V. Screenshot hab ich angehängt,
sind mal mehr und mal weniger Zeichen. Baud 9600, Datenbits 8, Parität
keine, Stoppbits 1, Flusssteuerung keine. Das ist meine Konfiguration in
HyperTerminal. µC hängt ledigilich an RXD und GND vom Computer.
Bär schrieb:> Klar hab ich mit dem Oszi nachgemessen, das passt alles soweit. MAX232> ist auch da, Pegel sind bei um die 10V. Screenshot hab ich angehängt,> sind mal mehr und mal weniger Zeichen. Baud 9600, Datenbits 8, Parität> keine, Stoppbits 1, Flusssteuerung keine. Das ist meine Konfiguration in> HyperTerminal. µC hängt ledigilich an RXD und GND vom Computer.
Das sieht im Screenshot aber ganz anders aus. Da steht in der
Statuszeile 300 Baud, 8N1! Weil die Baudrate nicht stimmt, kommt auch
kein Hallo sondern nur Sonderzeichen. Außerdem ist die Verbindung
getrennt, da würde Hyperterminal selbst bei richtigen Einstellungen
nichts empfangen. Ob die Terminaleinstellung ANSIW - also
2-Byte-Zeichensatz für µC so ideal ist, lasse ich mal außen vor.
Servus
Michael
Ja, der µC hatte aber auch 300 Baud, und mit 9600 ist es das Gleiche,
nur dass andere Sonderzeichen ankommen. Ich hab verschiedene Baudraten
ausprobiert.
Hallo Wincent und Michael,
klar stecken da sehr häufig FDTI-Chips drin (oder Profilic oder....) und
dahinter dann immer dieser blöde RS232-Wandler (häufig von Maxim). Der
Gleiche dann wieder auf dem Pollinboard um das vom ersten ein paar
Zentimeter später wieder rückgängig zu machen. Völliger Blödsinn,
solange da keine wirklichen Kabellängen dazwischen sind.
IMMER (ja, IMMER) wenn dieser 9pol. Sub-D-Stecker (bzw., -buchse) dran
sind spielt auch so ein Wandler mit. Also bei der Kombination vom
Threadstarter gleich 2 Stück. Beide kann man einsparen und den FTDI
direkt an den µC verdrahten. Damit sind gleich mehrere Fehlerquellen
weniger im Spiel, ganz abgesehen von den meist nur unzureichend
produzierten Pegeln dieser Wandler.
Old-papa
Papa, da hast du natürlich Recht, aber das wäre ja noch mehr Gebastel
und auch wieder fehlerträchtig. Beim Bär ist mit ziemlicher Sicherheit
die Baudrate falsch. Dann kommt sowas raus.
Mach mal nach jedem Byte, das Du sendest, eine Pause von mehr als zwei
Bitzeiten und probiere dann nocheinmal. Ich hatte es schon mal, dass ein
UART sein Startbit nicht gefunden hat bzw daneben gegriffen hat. Und bei
USB ist das Timing ja ganz anders.
fchk
Old -papa schrieb:> ganz abgesehen von den meist nur unzureichend> produzierten Pegeln dieser Wandler.
Die Pegel sind nicht unzureichend. Sieh Dir einfach mal die Norm an.
Zwar hast Du Recht damit, daß in diesem Anwendungsfall so ein
Pegelwandler überflüssig ist, aber es gibt keine standardisierte
Steckverbindung für serielle Schnittstellen mit TTL-Pegel, und andere
Schnittstellen als die in USB-RS232-Wandlern verwenden ebenfalls
Pegelwandler (da aber oft direkt mit symmetrischen +/- 12V gespeisten
SN75188/189 oder SN75232).
Desweiteren werden serielle Schnittstellen nicht nur für sehr kurze
Verbindungen genutzt, sondern schon mal dafür, mehrere Meter
Kabelstrecke zu überbrücken. Und genau dafür sind die RS232-Pegel
gedacht.
Frank, Danke für den Vorschlag, aber was mach ich dann wenn ich z.B.
mein OBD-Diagnosetool fürs Auto an meinem Laptop über den Adapter
anschließen will? Ich kann der ECU leider nicht vorschreiben wie lange
sie warten soll :D
Bär schrieb:> Es tut ja schließlich mit der RS232-Schnittstelle auf dem> Mainboard des PCs.
Achso, hab ich das oben überlesen, oder hattest du das erst nicht
bekannt gegeben? Naja, dann scheint der USB Adapter irgendwie defekt zu
sein...
Zwischen deinem USB-RS232 und dem Motorsteuergerät hängt ja noch der OBD
Adapter, der hat ja einen µC drin, der wird schon die RS232 richtig
bedienen. Ein direktes ansprechen der Diagnose-Leitungen wie das früher
mit den einfachen Optokoppler-Interfaces an der RS232 ging, klappt mit
USB-Wandler jedenfalls nicht.
Bär schrieb:> Also der Adapter war tatsächlich defekt.
Das ist halt chinesische Qualitätssicherung: der Kunde wird schon
feststellen, ob das Gerät funktioniert, also warum denn selber testen.
Gruss Reinhard