Forum: Mikrocontroller und Digitale Elektronik CH348 USB zu 8 Port Serial (UART)


von Stefan A. (ripper121)


Angehängte Dateien:

Lesenswert?

Hi,
ich habe heute mal ein kleines Board erstellt mit dem CH348L.
Damit hat man 8x Uart mit jeweils "3V3 - GND - RXD - TXD - RTS - CTS - 
DTR - DSR - DCD - RI", die 10 Pins sind auf JST PH 2.0mm Stecker raus 
geführt.
USB Port ist ein USB-C mit 500mA Polifuse und ESD Schutz.
Die Uart Spannung kann man default auf 3.3V lassen oder extern mit 1.8V, 
2.5V, 3.3V betreiben.
Den DTR pin kann man auch auf TNOW umschalten für RS485 betrieb.
4 Löcher zum befestigen mit 3mm Durchmesser.

Im Anhang sind paar Bilder, Schaltplan und Eagle Projectdaten.
Das Routing ist nicht mein bestes, aber bei 8 Uart Ports mit 10 Pins war 
es auch nicht ganz einfach auf 2 Layern. Wenn jemand lust hat das zu 
verbessern, dann los gehts ^^.

Ich hatte eigentlich nur vor mir 5 Stück bestücken zu lassen.
Aber falls hier noch jemand Interesse hat, dann kann ich auch ne größere 
Bestellung machen. Stückpreis ca. 20€

: Bearbeitet durch User
von Émile (Gast)


Lesenswert?

Interessant. Wie sieht die Verfügbarkeit des CH348L aus? Welche Händler 
liefern den?
Wie sieht es mit Devicetreiberunterstützung aus?

von Stefan A. (ripper121)


Lesenswert?

Émile schrieb:
> Interessant. Wie sieht die Verfügbarkeit des CH348L aus? Welche Händler
> liefern den?
> Wie sieht es mit Devicetreiberunterstützung aus?

Ich lasse den direkt bestücken.
Distributor ist LCSC und die haben da noch einige auf lager.

http://www.wch-ic.com/products/CH348.html
"Original serial applications are totally compatible without any 
modification in Windows operating systems."

Bei Linux gibt es auch Kernel Einträge.

Hier weiter Infos:
https://www.cnx-software.com/2022/03/04/wch-ch348-8-port-usb-to-serial-chip-with-up-to-48-gpios/

von Andreas M. (amesser)


Lesenswert?

Dein Bild sieht irgendwie nach BGA/QFN aus, lt. Datenblatt sollte das 
aber LQFP sein?

von Stefan A. (ripper121)


Lesenswert?

Andreas M. schrieb:
> Dein Bild sieht irgendwie nach BGA/QFN aus, lt. Datenblatt sollte das
> aber LQFP sein?

Ja hatte keine Lust da extra ein 3D Modell anzulegen.

von Émile (Gast)


Lesenswert?

Danke für die schnelle Antwort.

> "Original serial applications are totally compatible without any
> modification in Windows operating systems."

Gut, wie man zwischen RS485- und RS232-Betrieb (TNOWx/DTRx) wählt, 
scheint im Datenblatt beschrieben zu sein (CFG Pin bzw. individuelle 
Pull-Down-Widerstände), aber wie steuert man die alternativen GPIOs an?

> In the Windows OS, after installing high-speed VCP vendor driver,
> it can emulate standard UART, so the mostly original serial
> applications are totally compatible, without any modification.
>
> CH348 can support up to 48-channel GPIO input and output function.

von Stefan A. (ripper121)


Lesenswert?

Émile schrieb:
> Danke für die schnelle Antwort.
>
>> "Original serial applications are totally compatible without any
>> modification in Windows operating systems."
>
> Gut, wie man zwischen RS485- und RS232-Betrieb (TNOWx/DTRx) wählt,
> scheint im Datenblatt beschrieben zu sein (CFG Pin bzw. individuelle
> Pull-Down-Widerstände), aber wie steuert man die alternativen GPIOs an?
>
>> In the Windows OS, after installing high-speed VCP vendor driver,
>> it can emulate standard UART, so the mostly original serial
>> applications are totally compatible, without any modification.
>>
>> CH348 can support up to 48-channel GPIO input and output function.

Mit Terminal Software welche alle 10 Modem Pins unterstützt.
Oder eigener Software.
Oder Hersteller Software: 
http://www.wch-ic.com/search?q=CH348&t=downloads

von Émile (Gast)


Lesenswert?

>> aber wie steuert man die alternativen GPIOs an?
>>
>> CH348 can support up to 48-channel GPIO input and output function.

> Mit Terminal Software welche alle 10 Modem Pins unterstützt.

Nee. Das ist keine Lösung, denn die "Modem-Pins" sind keine I/Os, 
sondern haben eine fest vorgegebene Richtung; CTS ist ein Eingang, RTS 
ist ein Ausgang, aber die GPIOs sind bidirektional ("general GPIO0, used 
for IO input or output").

> Oder eigener Software.

Ja, das wird man wohl machen müssen, via libusb, und sich die Dinge aus 
den Linux-Treibersourcen rauspicken. Immerhin: Das scheint dort 
unterstützt zu werden.

Insofern auch Danke dafür.

Ist wohl 'ne interessante Alternative zur "Konkurrenz" von ftdi ...

von Stefan A. (ripper121)


Lesenswert?

Émile schrieb:
>>> aber wie steuert man die alternativen GPIOs an?
>>>
>>> CH348 can support up to 48-channel GPIO input and output function.
>
>> Mit Terminal Software welche alle 10 Modem Pins unterstützt.
>
> Nee. Das ist keine Lösung, denn die "Modem-Pins" sind keine I/Os,
> sondern haben eine fest vorgegebene Richtung; CTS ist ein Eingang, RTS
> ist ein Ausgang, aber die GPIOs sind bidirektional ("general GPIO0, used
> for IO input or output").
>
>> Oder eigener Software.
>
> Ja, das wird man wohl machen müssen, via libusb, und sich die Dinge aus
> den Linux-Treibersourcen rauspicken. Immerhin: Das scheint dort
> unterstützt zu werden.
>
> Insofern auch Danke dafür.
>
> Ist wohl 'ne interessante Alternative zur "Konkurrenz" von ftdi ...

Ja und für ~5$ / Stück deutlich billiger als >25€ / Stück der Konkurenz.

Also bitte melden, falls Interesse besteht an dem Board.
Dann bestelle ich gleich paar mehr und dann wird das auch billiger.
Auf AliExpress gibt es nur die CH348D Version wo nicht alle Pins raus 
geführt werden und kostet dort auch 40€ + Versand.

von Thomas Z. (usbman)


Lesenswert?

Also ich hätte schon Interesse an so einer Platine.

Ich würde die Beschriftung der Ports überarbeiten, so dass jeder Pin 
eine Beschriftung hat. Vielleicht die Beschriftung gleich noch auf der 
Unterseite.

Das Teil wird vermutlich Hersteller Treiber brauchen.

von Stefan A. (ripper121)


Lesenswert?

Thomas Z. schrieb:
> Also ich hätte schon Interesse an so einer Platine.
>
> Ich würde die Beschriftung der Ports überarbeiten, so dass jeder Pin
> eine Beschriftung hat. Vielleicht die Beschriftung gleich noch auf der
> Unterseite.
>
> Das Teil wird vermutlich Hersteller Treiber brauchen.

Es gibt Hersteller Treiber: 
http://www.wch-ic.com/search?q=CH348&t=downloads
Aber diese sind nicht nötig unter Windows & Linux. Bei beiden sind diese 
bereits Integriert.

von Egbert (Gast)


Lesenswert?

Cooles Projekt!

Beschrifte im Silkscreen doch bitte jeden Pin einzeln mit um 90° 
gedrehtem Text.
Kein Mensch will Pins zählen und sich verzählen.

Ach, und soll "RTFM" wirklich intvertiert sein? ;-)

von Stefan A. (ripper121)


Lesenswert?

Egbert schrieb:
> Cooles Projekt!
>
> Beschrifte im Silkscreen doch bitte jeden Pin einzeln mit um 90°
> gedrehtem Text.
> Kein Mensch will Pins zählen und sich verzählen.
>
> Ach, und soll "RTFM" wirklich intvertiert sein? ;-)

Es sind 10 Pin JST-PH 2.0mm Ports, ich glaube in echt wird man dann 
nicht mehr viel vom Silkscreen erkenne. Aber ja kann ich gern noch 
anpassen.

Naja bei eagle, wenn man vor ein Wort ein ! macht, dann wird es 
invertiert ^^

von Egbert (Gast)


Lesenswert?

OKey, ich hatte bei JLCPCB die Bestell-Nr. immer in 1,5 mm Höhe 
eingetragen und es ging eingentlich noch zu lesen.

von Εrnst B. (ernst)


Lesenswert?

Seh ich das richtig, dass du am USB-C-Port die beiden CC-Pins 
parallelgeschaltet hast, um einen 5.1k Widerstand einzusparen?

In die Falle ist der RasPi auch getappt, würde ich so nicht machen.

von Stefan A. (ripper121)


Lesenswert?

Εrnst B. schrieb:
> Seh ich das richtig, dass du am USB-C-Port die beiden CC-Pins
> parallelgeschaltet hast, um einen 5.1k Widerstand einzusparen?
>
> In die Falle ist der RasPi auch getappt, würde ich so nicht machen.

Es wird immer nur ein CC Pin verbunden, je nachdem wie man den Stecker 
dreht.
Ich habe das bis jetzt in vielen Designs so benutzt und noch keine 
Probleme gehabt. Vielleicht hat der RasPi einen Stecker der intern 
anders verbunden ist.

von Stefan A. (ripper121)


Angehängte Dateien:

Lesenswert?

Hier noch das Update im Silkscreen.

von Εrnst B. (ernst)


Lesenswert?

Stefan A. schrieb:
> Ich habe das bis jetzt in vielen Designs so benutzt und noch keine
> Probleme gehabt.

Bis du halt mal auf einen pingeligen Hub oder ein hochwertiges 
("electronically marked") Kabel triffst...


Spart der eine Widerstand+Bestückung bei JLCPCB so krass gigantisch 
enorme Mengen Geld, dass es sich lohnt, es absichtlich falsch zu machen?

von Stefan A. (ripper121)


Lesenswert?

Εrnst B. schrieb:
> Stefan A. schrieb:
>> Ich habe das bis jetzt in vielen Designs so benutzt und noch keine
>> Probleme gehabt.
>
> Bis du halt mal auf einen pingeligen Hub oder ein hochwertiges
> ("electronically marked") Kabel triffst...
>
>
> Spart der eine Widerstand+Bestückung bei JLCPCB so krass gigantisch
> enorme Mengen Geld, dass es sich lohnt, es absichtlich falsch zu machen?

Habs gefixt, danke für den Hinweis.
Habe zwar gelesen das macht nur was bei Ladegeräten aber ja sicher ist 
sicher.

von asd (Gast)


Lesenswert?

Stefan A. schrieb:
> Ich habe das bis jetzt in vielen Designs so benutzt und noch keine
> Probleme gehabt.

Ich verstehe Kapitel 3.2 bzw. Figure 6 so dass CC1 und CC2 jeweils ihren 
eigenen Pull-Down brauchen. Also nicht CC1 und CC2 zusammenschalten.
https://ww1.microchip.com/downloads/en/appnotes/00001953a.pdf



Stefan A. schrieb:

> Es sind 10 Pin JST-PH 2.0mm Ports, ich glaube in echt wird man dann
> nicht mehr viel vom Silkscreen erkenne. Aber ja kann ich gern noch
> anpassen.

Gibt es einen Grund für die 2mm Stecker? Mir persönlich sind 2.54mm 
Stecker lieber. Gerne 2-reihig, da passen dann 
Flachkabel-Quetschbuchsen.

von Stefan A. (ripper121)


Lesenswert?

> Stefan A. schrieb:
>
>> Es sind 10 Pin JST-PH 2.0mm Ports, ich glaube in echt wird man dann
>> nicht mehr viel vom Silkscreen erkenne. Aber ja kann ich gern noch
>> anpassen.
>
> Gibt es einen Grund für die 2mm Stecker? Mir persönlich sind 2.54mm
> Stecker lieber. Gerne 2-reihig, da passen dann
> Flachkabel-Quetschbuchsen.

Ja, wenn ich ein 2.54 verwende, dann komme ich über das Standard Maß von 
meinem Bestücker und es wird um einiges Teurer.

von Émile (Gast)


Lesenswert?

Zum Bestückungsdruck der Platine:

Dort sind die Pins RxD0, RxD2, RxD4 und RxD7 als 5V-tolerant bezeichnet, 
das sind aber laut Datenblatt auch noch die Pins DTR0, DTR2 bis DTR7, 
CTS2 bis CTS5 und alle RI, DCD und DSR.
(In der Tabelle 4 'Pin Definitions' ab S.3 mit (FT) gekennzeichnet)

Was mögen die Chipentwickler für ein komisches Zeug geraucht haben?

von Stefan A. (ripper121)


Lesenswert?

Émile schrieb:
> Zum Bestückungsdruck der Platine:
>
> Dort sind die Pins RxD0, RxD2, RxD4 und RxD7 als 5V-tolerant bezeichnet,
> das sind aber laut Datenblatt auch noch die Pins DTR0, DTR2 bis DTR7,
> CTS2 bis CTS5 und alle RI, DCD und DSR.
> (In der Tabelle 4 'Pin Definitions' ab S.3 mit (FT) gekennzeichnet)
>
> Was mögen die Chipentwickler für ein komisches Zeug geraucht haben?

Ja deswegen habe ich hin geschrieben RTFM für mehr Infos.
Das war nur für die schnelle Info an welchen Ports ich ein Gerät mit 5V 
Uart Pins anschließen kann. Damit ich nicht immer ins Datenblatt schauen 
muss :)

Beitrag #7347215 wurde vom Autor gelöscht.
von Harald A. (embedded)


Lesenswert?

Du betreibst den 1117 mit rein keramischen Kondensatoren am Ausgang. 
Damit arbeitet der nicht in der stabilen Region. Absolutes Minimum sind 
10uF im Falle von Tantal. Im Falle von keramisch müsstest Du einen 
0.5Ohm Serienwiderstand einfügen und vlt. so 47uF keramisch vorsehen.

: Bearbeitet durch User
von Stefan A. (ripper121)


Angehängte Dateien:

Lesenswert?

Aktueller Stand auf Github:
https://github.com/ripper121/CH348_DevBoard

Habe mir jetzt 5 Stück bestellt.
Melde mich nochmal wenn ich die real testen konnte.

von Falk B. (falk)


Lesenswert?

Naja, eine nette Fingerübung ohne realen Anwendungswert. Die Zeiten der 
massenhaften echten Modems sind mehr als 25 Jahre vorbei. Daß es 
UART-USB Wandler gibt, welche die gesamten klassischen RS232 Signale zur 
Verfügung stellen hat mehr mit Nostalgie und Tradition als mit echter 
Nachfrage zu tun.
Ein FT324XD mit minimalen UART-Signalen RX/TX und RTS#/CTS# reicht für 
99% der UART-Anwendungen aus. Den großen Bruder FT232RL nutzt man nur, 
weil der deutlich eher verfügbar war und läßt die meisten Pins 
ungenutzt.

von Stefan A. (ripper121)


Lesenswert?

Falk B. schrieb:
> Naja, eine nette Fingerübung ohne realen Anwendungswert. Die Zeiten der
> massenhaften echten Modems sind mehr als 25 Jahre vorbei. Daß es
> UART-USB Wandler gibt, welche die gesamten klassischen RS232 Signale zur
> Verfügung stellen hat mehr mit Nostalgie und Tradition als mit echter
> Nachfrage zu tun.
> Ein FT324XD mit minimalen UART-Signalen RX/TX und RTS#/CTS# reicht für
> 99% der UART-Anwendungen aus. Den großen Bruder FT232RL nutzt man nur,
> weil der deutlich eher verfügbar war und läßt die meisten Pins
> ungenutzt.

Mich nervt es immer 3 oder 4 von solchen USB zu Seriel Wandlern an USB 
zu stecken. Da ist es Praktischer 8 Ports an ein USB zu bekommen.

Gerade wenn man in Kleinserie z.B. ESP32 flashen will ist es praktisch 
gleich 8 Davon auf einmal flashen zu können.

von xxx (Gast)


Lesenswert?

Stefan A. schrieb:
>> Stefan A. schrieb:
>>
>>> Es sind 10 Pin JST-PH 2.0mm Ports, ich glaube in echt wird man dann
>>> nicht mehr viel vom Silkscreen erkenne. Aber ja kann ich gern noch
>>> anpassen.
>>
>> Gibt es einen Grund für die 2mm Stecker? Mir persönlich sind 2.54mm
>> Stecker lieber. Gerne 2-reihig, da passen dann
>> Flachkabel-Quetschbuchsen.
>
> Ja, wenn ich ein 2.54 verwende, dann komme ich über das Standard Maß von
> meinem Bestücker und es wird um einiges Teurer.

Du könntest die Steckerleisten versetzt anbringen

xxxxxxxxxx      xxxxxxxxxx      xxxxxxxxxx
        xxxxxxxxxx      xxxxxxxxxx      xxxxxxxxxx

von Stefan A. (ripper121)


Lesenswert?

xxx schrieb:
>> Ja, wenn ich ein 2.54 verwende, dann komme ich über das Standard Maß von
>> meinem Bestücker und es wird um einiges Teurer.
>
> Du könntest die Steckerleisten versetzt anbringen
>
> xxxxxxxxxx      xxxxxxxxxx      xxxxxxxxxx
>         xxxxxxxxxx      xxxxxxxxxx      xxxxxxxxxx

Ich plane noch ein Adapter von JST PH 2.0mm mit Isolator auf 2.54mm 10P.

von Émile (Gast)


Lesenswert?

Stefan A. schrieb:
>> Gibt es einen Grund für die 2mm Stecker? Mir persönlich sind 2.54mm
>> Stecker lieber. Gerne 2-reihig, da passen dann
>> Flachkabel-Quetschbuchsen.
>
> Ja, wenn ich ein 2.54 verwende, dann komme ich über das Standard Maß von
> meinem Bestücker und es wird um einiges Teurer.

Vorschlag: Sieh beides vor. Einreihige PH-Steckverbinder im 2mm-Raster 
und zweireihige Pfostenleisten im 2.54mm-Raster.

Dafür ist genug Platz auf der Platine, und was man drauflötet, bleibt 
dem Nutzer überlassen.

von Émile (Gast)


Lesenswert?

Wenn Du die PH-Stecker vom Bestücker verarbeiten lässt, bleiben die 
Bohrungen für die zweireihigen 2.54mm-Stiftleisten einfach leer ...

von H. (Gast)


Lesenswert?

Stefan A. schrieb:
> Falk B. schrieb:
>> Naja, eine nette Fingerübung ohne realen Anwendungswert. Die Zeiten der
>> massenhaften echten Modems sind mehr als 25 Jahre vorbei.

> Mich nervt es immer 3 oder 4 von solchen USB zu Seriel Wandlern an USB
> zu stecken. Da ist es Praktischer 8 Ports an ein USB zu bekommen.

Falk meinte wohl vorrangig die Signale DCD, DSR, RTS, CTS und RI - die 
braucht man meist nicht.

von Stefan A. (ripper121)


Lesenswert?

H. schrieb:
> Stefan A. schrieb:
>> Falk B. schrieb:
>>> Naja, eine nette Fingerübung ohne realen Anwendungswert. Die Zeiten der
>>> massenhaften echten Modems sind mehr als 25 Jahre vorbei.
>
>> Mich nervt es immer 3 oder 4 von solchen USB zu Seriel Wandlern an USB
>> zu stecken. Da ist es Praktischer 8 Ports an ein USB zu bekommen.
>
> Falk meinte wohl vorrangig die Signale DCD, DSR, RTS, CTS und RI - die
> braucht man meist nicht.

Schon, wenn z.B. beim ESP der Bootloader zum Upload eingestellt wird.
Dann kann man die Signale benutzen um den ESP zu resetten und die 
passenden Pins zu setzen um in den Bootloader modus zu kommen.

von Falk B. (falk)


Lesenswert?

Stefan A. schrieb:
>> Falk meinte wohl vorrangig die Signale DCD, DSR, RTS, CTS und RI - die
>> braucht man meist nicht.
>
> Schon, wenn z.B. beim ESP der Bootloader zum Upload eingestellt wird.
> Dann kann man die Signale benutzen um den ESP zu resetten und die
> passenden Pins zu setzen um in den Bootloader modus zu kommen.

Und das machts du dauernd? Auf 8 Kanälen gleichzeitig? C'mon!
So ein IC ist für den Fall sinnvoll, wo man WIRKLICH ansatzweise 8 
serielle Schnittstellen gleichzeitig, dauerhaft betreiben will/muss. 
Diese Fälle sind heutzutage selten. Erst recht mit allen Modemsignalen. 
Oder betreibst du eine Retro BBS mit 8 Modems?

von Stefan A. (ripper121)


Lesenswert?

Falk B. schrieb:
> Und das machts du dauernd? Auf 8 Kanälen gleichzeitig? C'mon!
> So ein IC ist für den Fall sinnvoll, wo man WIRKLICH ansatzweise 8
> serielle Schnittstellen gleichzeitig, dauerhaft betreiben will/muss.
> Diese Fälle sind heutzutage selten. Erst recht mit allen Modemsignalen.
> Oder betreibst du eine Retro BBS mit 8 Modems?

Wie gesagt für die Produktion ist es gut neben RX und TX auch weiter 
Pins zu haben welche man einfach ansteuern kann um bestimmt Events zu 
initialisieren.
Wie z.B. Bootloader starte oder eine Testprozedur usw...

von Christa (Gast)


Lesenswert?

Stefan A. schrieb:
> Falk B. schrieb:
>> Und das machts du dauernd? Auf 8 Kanälen gleichzeitig? C'mon!
>> So ein IC ist für den Fall sinnvoll, wo man WIRKLICH ansatzweise 8
>> serielle Schnittstellen gleichzeitig, dauerhaft betreiben will/muss.
>> Diese Fälle sind heutzutage selten. Erst recht mit allen Modemsignalen.
>> Oder betreibst du eine Retro BBS mit 8 Modems?
>
> Wie gesagt für die Produktion ist es gut neben RX und TX auch weiter
> Pins zu haben welche man einfach ansteuern kann um bestimmt Events zu
> initialisieren.
> Wie z.B. Bootloader starte oder eine Testprozedur usw...

RTS und CTS sind häufig genutzte Handshake-Leitungen, manchmal auch DSR 
und DTR, es gibt z.B. Maschinensteuerungen, die neben TX und RX weitere 
2 oder sogar weitere 4 Leitungen wollen.

von Harald A. (embedded)


Lesenswert?

Nun, ist ja auch müßig, darüber zu diskutieren, ob Stefan die Signale 
braucht oder nicht. Wie ist denn das mit der Reihenfolge bei der 
Anmeldung der Ports? Hatte mal einen Silabs 4-Port, da war es in Windows 
leider Zufall, in welcher Reihenfolge die Ports hochkamen (auf 
verschiedenen Systemen, nicht nach Neustart). War leider etwas nervig. 
Ist der CH da besser? Die kleineren CH340 haben doch auch noch dieses 
Problem mit der nicht vorhandenen Seriennummer, die ebenfalls zum 
Port-Verwirrspiel beitragen können.
Das mit der evtl. unstabilen 3.3V-Versorgung ist völlig egal? Da gab es 
kein Feedback.

von Stefan A. (ripper121)


Lesenswert?

Das Problem mit den Anmeldungen unter Windows hat man auf mit FTDI 
Chips.
Deswegen hatten wir in unsere Produktion damals einfach Linux genommen.

Das mit den 3.3V teste ich mal, die pcb is schon bestellt und wenn es 
Störung gibt mache ich bei der nächsten Rev noch Elkos drauf.

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.