USB zu Seriell Wandler

Aus TippvomTibb
Zur Navigation springen Zur Suche springen

Allgemeines

Gelegentlich benötigt man eine Möglichkeit der seriellen Datenkommunikation von und zu einem PC-System. Heutige PCs besitzen in der Regel keine serielle Schnittstelle mehr, daher wird der 'Umweg' über eine virtuelle Schnittstelle aus einer Treibersoftware und einem USB-Seriell-Wandler gegangen. Aber selbst wenn der PC über eine serielle Schnittstelle verfügt kann man z.B. zum Programmieren von Mikrocontrollern nicht einfach mal die PINS miteinander verbinden. Denn dann sind wir auch schon beim ersten Problem. Es gilt bei der Wahl des passenden Adapters mindestens zwei Merkmalen Aufmerksamkeit zu widmen. Die vollständige Abbildung aller am RS232-Port vorhanden Datenleitungen und der Spannungspegel (laut Definition bis zu +/-15V, i.d.R. 12V 5V und 3.3V) an ihnen. Für die Nutzung als Programmier-Adapter werden in der Regel nur die Datenleitungen RX/TX (Receive Data/Transmit Data) benötigt. Der sogenannte Handshake ist dann, wenn nötig, auf "Software" einzustellen. Nutzt man den Adapter als RS232-Ersatz, dann wird die Sache schon etwas schwieriger. Die Schwierigkeit zeigt sich dann in Aussagen wie: "Ich habe ein altes Gerät mit einer seriellen Schnittstelle. Es will aber partout keine Verbindung über einen Adapter aufnehmen." Sollten Sie so ein Problem haben, dann kann ich Ihnen sicherlich helfen. Beschreiben Sie dazu einfach ihr System im Kommentar. Die Anzahl der Adapter, die zum Kauf angeboten werden ist unüberschaubar. Eine Google-Suche nach einem "USB Seriell Wandler" liefert, sozusagen alleine 85000 auf deutsch angebotene Ergebnisse.

USBSeriellWandlerOverview.png

Der Anlass zum Schreiben dieses Wiki-Beitrages war durch die Suche nach einem ESP8266-Programmer ausgelöst worden. In der Grabbelkiste habe ich noch einen Adapter mit einem CP2102 gefunden. Daher beginne ich mit diesem. Die weiteren Adapter beschreibe ich dann, je nach Anforderung, nach und nach.

CP2102

In der System-Übersicht des Datenblattes heißt es kurz gesagt:

  1. Highly-integrated USB-to-UART Bridge Controller
  2. Simple solution for updating RS-232 designs to USB using a minimum of components and PCB space
  3. USB 2.0 full-speed function controller
  4. No other external USB components are required.
  5. Royalty-free Virtual COM Port (VCP) device drivers provided by Silicon Laboratories allow a CP2102/9-based product to appear as a COM port to PC applications.
  6. The CP2102/9 UART interface implements all RS-232 signals, including control and handshaking signals, so existing system firmware does not need to be modified.

Weiterhin heißt es.

The on-chip programmable ROM may be used to customize the USB Vendor ID, Product ID, Product Description
String, Power Descriptor, Device Release Number, and Device Serial Number as desired for OEM applications.
The programmable ROM is programmed on-board via the USB, allowing the programming step to be easily
integrated into the product manufacturing and testing process.

Was schon mal wichtig ist, der CP2102 arbeitet mit 3,3V. Das heißt die Pegel an der Signalleitungen liegen bei HIGH-Pegel auf ca. 3.2V-2,5 V (!) und bei LOW-Pegel zwischen 0.1V und 1.0V in OUTPUT-Richtung. Bei der 'Eingabe' von Pegeln liegen die Grenzen für HIGH >2.0V und für LOW <0.8V Siehe dazu das Datenblatt Seite 8. Dies entspicht bis auf die Ausnahme Output Low Voltage den Vorgaben des Low-Voltage-TTL. Die Input Voltage (Eingangsspannung PIN 7) kann zwischen 4V und 5.25V liegen. In der Regel hält ein USB-Port eines PC/Notebooks/Tablets dies ein. Nachmessen macht schlau. Die Ausgangspannung liegt laut Datenblatt zwischen 3.0V und 3.6V und ich wollte es fast nicht glauben ist die Strombelastbarkeit (Maximum Total Current through VDD) stolze 500mA. Bei den Baudraten wird alles übliche bis zu 921600 unterstützt.

Spannungsproblem 3.3V

Es gibt wohl ein paar Boards am Markt, die durch eine fehlerhafte Beschaltung über 4V auf dem 3.3V Pin liefern. Liest man eine Beschreibung des Problems fällt auf, dass zwischen Fragestellung im Forum und hilfreicher Antwort Monate vergangen sind. Auf den Punkt gebracht liegt der Grund in einer fehlerhaften Beschaltung (VREGIN/VBUS anstatt VDD) des Reset-Pins (#9).

Quote: The problem with the 3.3V line at 4.2 is due to the RST input being tied not to 3.3 V out but to the Vbus in (5V) this back feeds into the 3.3V line pulling it up above spec, cut the trace you see coming from pin 9 before it reaches the capacitor, then optionally pull it to 3.3 via a 4k7 resistor to pin 6. This also seems to solve the variability with Win10. Posted 2017-02-22 09:12:56 by instoned @t aol dot com

Interessanterweise wird auch die maximale Spannung am /RST mit 5.8V angegeben (Seite 22) und auf Seite 23 der minimale High-Level mit 0,7xVDD. Daraus kann man tatsächlich nicht schließen, dass /RST nicht an 5V angeschlossen werden darf. Daher vielleicht auch der Designfehler. Weiterhin ist wichtig zu wissen, das die I/O-Pins 5V-tolerant sind.

Voltage on any I/O Pin, VBUS, or RST min –0.3 max 5.8V with respect to GND


Internal Programmable ROM

Das interne EEPROM des CP2102 lässt sich anpassen. Das ist aber eigentlich nur von Bedeutung wenn man mehrere Adapter gleichzeitig angeschlossen hat und die einfach unterscheiden will. Im Auslieferungszustand hat der Chip folgende Konfigurationsdaten:

Name Value
Vendor ID 10C4h
Product ID EA60h
Power Descriptor (Attributes) 80h
Power Descriptor (Max. Power) 32h
Release Number 0100h
CP2102 Serial Number 0001 (63 characters maximum)
CP2109 Serial Number Unique 8 character ASCII string (63 characters maximum)
CP2102 Product Description String “CP2102 USB to UART Bridge Controller” (126 characters maximum)
CP2109 Product Description String “CP2109 USB to UART Bridge Controller” (126 characters maximum)
No other circuitry should be connected to VPP during a programming operation, and VDD must remain at 3.3 V or higher to successfully write to the configuration ROM.
VPP Programming Supply Voltage (PIN18 CP2102-NC, CP2109-VPP)
This pin should be left unconnected or tied to VDD. This pin is unused on the CP2102 and may be connected to the Vpp programming capacitor to maintain board compatibility with the CP2109.


Ein Programm das die Eintragungen ändern kann finden man auf GitHub.

In den Annotation Notes ist der Vorgang beschrieben.

Kaufwunsch

SiliconLabsCP2102EK.png

Nochmal vor die Wahl gestellt würde ich gleich einen Wandler mit voller Belegung und Level-Shifting (5V und +/-15V bzw. +/-12V) kaufen. Damit sollten dann alle RS232-Geräte im Haus ansprechbar sein. Das hier scheint sowas zu sein. Mit Aliboards (CP2102FULL + evtl TXB0104 oder SP3243) sollte sich aber der Aufwand in Grenzen halten, sonst lohnt es sich gegenüber dem Kauf(30€) eigentlich nicht.

ESP01 Unterseite Pinaufdruck.jpg

CH340G

https://joy-it.net/de/products/SBC-ESP8266-PROG

USB CH340 ESP01 Adapter.png

Nach dem Studium des Schaltplanes sieht man welche Funktionen im Adapter realisiert sind, aber auch welches Potential verschenkt wurde. Aber der Reihe nach. Der AMS1117-3.3 dient zur Erzeugung der 3,3 Volt Betriebsspannung für den CH340G und den zu programmierenden ESP. Die maximale Strombelastbarkeit des AMS1117 ist 1 A. Dies sollte in der Regel ausreichen, da der USB-Port ja auch "nur" maximal 500 mA zur Verfuegung stellt. Die Anschluesse RTS, DTR, DCD, RI, DSR, CTS sind gaenzlich unbeschaltet. Die Schalterstellung ist im "PROG"-Mode auf GND verbunden und im "UART"-Mode offen.


Pin Adapter ESP-01
1 CH340G TX RXD
2 3,3V out VCC
3 PROG Schalter GPIO0
4 NC RST
5 NC GPIO2
6 NC CH_PD
7 GND GND
8 CH340G RX TXD

Einen Reset-Taster haette man wenigstens noch spendieren koennen. Bei der PIN-Nummerierung geht vieles im Internet durcheinander. Ich bin ein Freund von Konventionen. Normalerweise ist der Pin1 auf dem Board durch ein eckiges Loetpad gekennzeichnet, oder es befindet sich ein Punkt/Pfeil/Dreieck/...-Aufdruck auf dem Board. Manchmal ist auch der Pin1 durch einen Aufdruck eingerahmt. Dummerweise ist bei den ESPs oft der RXD-Pin und der GND-Pin mit einem eckigen Pad ausgefuehrt. Da es keinen anderen Anhaltspunkt zu geben scheint und man der inneren Logik folgt kommt nur der GND-Pin oder RXD-Pin als Pin 1 in Frage. in der o.g. Tabelle habe ich dem RXD-Pin den Vorzug gegeben. Hier nochmal die unterschiedlichen Varianten.

Zur Orientierung befinden sich der Stecker des ESP01 als auch die Buchse des Adapters rechts. Die Belegung ist jeweils von der Oberseite der Boards zu betrachten.

ESP-01 Adapter PinA PinB PinB PinA Adapter ESP-01
<= Boardrichtung
(Oberseite)
RXD CH340G TX 1 7 8 2 3,3V out VCC
GPIO0 PROG Schalter 3 5 6 4 NC RST
GPIO2 NC 5 3 4 6 NC CH_PD
GND GND 7 1 2 8 CH340G RX TXD

Zu allem Ueberfluss nutzt microchip in seinem Dokument wieder eine andere Variante der Nummerierung. Grrrrrr! Und ausgerechnet fehlt der PinHeader im Schaltplan.>:(

FTDI

TODO

PL2303

Der abgebildete Konverter meldet sich unter Linux mit folgender ID:

ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port

Diesen Adapter benutze ich zum Anschluss einer LogiCad 3D Magellan/SpaceMouse. Er funktioniert einwandfrei. Derzeit habe ich die Spacemouse allerdings nur unter Linux betrieben. Eine Integration in an der CAD-Workstation (Win10 + AutoDesk Inventor) steht noch aus.

Prolific USB RS232 Konverter.png

Da sowohl der USB-, als auch der RS232-Anschluss per Kabel vom Gehäuse abgesetzt sind, ist die mechanische Beanspruchung am USB-Anschluss der PCs oder Hubs deutlich niedriger, was einen Vorteil darstellt, aber sich leider in einem etwas höheren Preis niederschlägt.

Request for Comments


Kommentar hinzufügen
TippvomTibb freut sich über alle Kommentare. Sofern du nicht anonym bleiben möchtest, registriere dich bitte oder melde dich an.