Forum: Platinen Routing CP2102N zu USB-C


von Eric (eric_z)


Angehängte Dateien:

Lesenswert?

Liebes Forum,

Vor ein paar Monaten habe ich eine Platine mit einem CP2102N und einem 
USB-C-Anschluss für die USB-Kommunikation mit einem PC entworfen. Der 
USB-C-Anschluss erfordert zwei differenzielle Datenleitungspaare, der 
CP2102N verfügt jedoch nur über ein differenzielles Datenleitungspaar. 
Darüber hinaus müssen die Länge und die Impedanz jedes Differenzpaars 
abgestimmt werden. Die Pinbelegung des USB-C-Anschlusses gibt an, dass 
A6 und A7 ein Differenzialpaar und B6 und B7 das andere Differenzialpaar 
sind. Deshalb habe ich mich entschieden, das Layout wie im Bild 
„routing_from_me.png“ zu erstellen. Ich habe mir auch andere Routings 
mit diesem IC und einem USB-C-Anschluss angesehen. Sie haben es wie im 
Bild „routing2.png“ gemacht. Ich habe mich dagegen entschieden, weil A6 
und B7 die gleiche Länge hatten wie B6 und A7.

Der Schaltplan entspricht genau den Empfehlungen im Datenblatt, mit dem 
SP0503BAHTG zum Schutz.

Ich habe mit der UART-Kommunikation etwas Ungewöhnliches entworfen. Der 
CP2102N ist über UART mit einem STM32 verbunden, aber derselbe UART ist 
auch mit einem ESP8266 verbunden. Die TX-Datenleitungen sind mit RS des 
CP2102N und RX des ESP8266 verbunden. Der RX des STM32 ist mit dem TX 
des ESP und dem TX des CP2102N verbunden.

Seit ein paar Wochen habe ich die Platinen hier. Zuerst war alles in 
Ordnung, das Gerät wurde vom PC erkannt, doch dann brachen aus dem 
Nichts die USB-Datenleitungen ab.

Meine Frage ist nun, könnte es sein, dass der IC wegen des Routings 
kaputt gegangen ist, oder ist es egal, welches der Routings, weil USB 
2.0 zu langsam ist?
Oder könnte es an der nicht regulären UART-Kommunikation liegen? Am 
Anfang hat es funktioniert, ich konnte auch nichts dagegen finden. Und 
die anderen beiden Geräte kommunizieren immer noch einwandfrei über 
UART. Ich habe das design bereits geändert und einen UART-switch 
zwischen den STM und den anderen beiden Schaltkreisen eingefügt.

Viele Grüße
Eric

: Verschoben durch Moderator
von Stefan K. (stk)


Lesenswert?

Eric schrieb:
> Der RX des STM32 ist mit dem TX
> des ESP und dem TX des CP2102N verbunden.

Zwei Ausgänge gegeneinander - keine gute Idee.

von Eric (eric_z)


Lesenswert?

Ich habe das design bereits geändert und einen UART-switch
zwischen den STM und den anderen beiden Schaltkreisen eingefügt.

von Harald K. (kirnbichler)


Lesenswert?

Eric schrieb:
> doch dann brachen aus dem Nichts die USB-Datenleitungen ab.

Was willst Du mit dieser Formulierung ausdrücken? "Abbrechen" kann man 
in diesem Kontext auch mechanisch verstehen, das aber wirst Du kaum 
meinen.

Und was genau meinst Du dann?

von Michael X. (Firma: vyuxc) (der-michl)


Lesenswert?

Du solltest auf der Client-Seite vom USB-C nicht die USB2 Signale 
brücken.

von Eric (eric_z)


Lesenswert?

Was willst Du mit dieser Formulierung ausdrücken? "Abbrechen" kann man
in diesem Kontext auch mechanisch verstehen, das aber wirst Du kaum
meinen.

Und was genau meinst Du dann?

Der Widerstand zwischen den Datenleitungen hat sich stark reduziert, auf 
ein paar hundert Ohm und es findet keine Kommunikation mehr statt.

>Du solltest auf der Client-Seite vom USB-C nicht die USB2 Signale
>brücken.

Wo ist dort etwas gebrückt? Dp ist ausschließlich mit Dp verbunden und 
Dn mit Dn. Damit der USB-Stecker für A6 und A7 sowie B6 und B7 
funktioniert, sprich der USB-Stecker beidseitig steckbar ist. Muss alles 
verbunden werden.

von Harald A. (embedded)


Lesenswert?

Michael X. schrieb:
> Du solltest auf der Client-Seite vom USB-C nicht die USB2 Signale
> brücken.

Sicher? Ich habe mir jetzt nochmal eine AN von Microchip angesehen, da 
geht es um die Implementierung eines UFP (also eines Peripheriegerätes) 
und dort wird USB2 gebrückt, bestenfalls per Mux, notfalls aber auch per 
Brücke unter Inkaufnahme von Stubs.

https://ww1.microchip.com/downloads/en/Appnotes/00001914B.pdf

von Eric (eric_z)


Lesenswert?

Ganz sicher! Ich habe von diesem Adapter-PCB sehr viele und benutze die 
täglich (arbeitsbezogen):

https://www.waveshare.com/cp2102-usb-uart-board-type-c.htm

Im Prinzip habe ich lediglich den Stromlaufplan auf die Leiterplatte 
übertragen. Ganz unten ist ein Link zum Stromlaufplan und Datenblatt zu 
finden.
Das Layout von waveshare ist wie in Bild routing2.png realisiert. Ich 
war jedoch der Meinung, dass der Leiterbahnlängenabgleich von 5 mil 
nicht gegeben ist und habe mich für ein andere Layout entschieden. Kein 
Adapter ist bisher kaputt gegangen.
Wahrscheinlich gelten die 5 mil eher nur für USB 3.0 und höher, sodass 
beide routings funktionieren?

von Harald A. (embedded)


Lesenswert?

Eric schrieb:
> Ganz sicher!
Meinst Du mich? Ich habe doch für die Brücke auf Clientseite plädiert, 
es ging um den Beitrag von Michael, der der Meinung war, dass die Brücke 
nicht dahin gehört.

Die 5mil sind für den CP2102 definitiv unwichtig. Das ist ja ein 
Full-Speed Device, da ist es fast sch…egal.

: Bearbeitet durch User
von Harald K. (kirnbichler)


Lesenswert?

Eric schrieb:
> Ich war jedoch der Meinung, dass der Leiterbahnlängenabgleich
> von 5 mil nicht gegeben ist

Der CP2102 ist ein Full-Speed-Device, da ist dieser Längenabgleich fast 
vollkommen irrelevant. Full-Speed sind 12 MBit/sec.

Bei High-Speed (480 MBit/sec) fängt es an, etwas kritischer zu werden, 
und bei Super-Speed (5 GBit/sec oder mehr) ist ein sauberes Design 
unabdingbar.

Aber Full-Speed kann man auch mit Fädeldraht auf einer Lochrasterplatine 
veranstalten, da ist "length-matching" wegen der niedrigen Frequenzen 
sehr nachrangig.

von Eric (eric_z)


Lesenswert?

>Meinst Du mich? Ich habe doch für die Brücke auf Clientseite plädiert,
>es ging um den Beitrag von Michael, der der Meinung war, dass die Brücke
>nicht dahin gehört.

Entschuldigung, ich habe es falsch gelesen. Dann ist das Routing wohl 
egal, aber der Längenabgleich schadet auch nicht.
Jedoch war das mit der UART-Verknüpfung wohl schmarn.

von Stefan F. (Gast)


Lesenswert?

Full Speed USB habe ich zur Probe schon mal mit 30 cm losen Drähten 
verkabelt. Geht auch.

Da du Probleme in Kombination mit einem ESP8266 hattest, tippe ich mal 
auf die Stromversorgung. Vielleicht haben deine Leitungen bzw. Kontakte 
zu viel Innenwiderstand, zu viel Induktivität, oder dein Spannungsregler 
ist zu schwach oder zu träge. Das wären die Klassiker.

Berichte man ganz detailliert, wie die Stromversorgung realisiert wurde, 
mit Layout und Fotos, und zwar bis zur Quelle.

von Eric (eric_z)


Lesenswert?

Der CP2102N wird direkt über USB-C mit 5V versorgt. Die 5V gehen 
weiterhin zu einem Wandler von Analog Devices, welcher bis zu 600 mA 
liefern kann. Genau spezifizieren kann ich frühestens am Montag. Der 
Wandler versorgt dann den ESP8266 ud den STM32. Bei der Hälfte der 
Leiterplatten habe ich ein LC-Glied in der 5V Versorgung eingefügt. Bei 
den anderen ist ein 0-Ohm-Widerstand und der Kondensator. Bei beiden 
Varianten ist jedoch der Fehler in der USB-Verbindung aufgetreten (Ich 
überprüfe das am Montag noch einmal). Weiterhin ist der interne Wandler 
vom CP2102N noch funktionsfähig und gibt die 3,3 V aus. Ausschließlich 
die USB-Datenleitung scheint defekt zu sein, da der PC kein USB-Gerät 
mehr zu erkennen scheint.

Es ist imr auch möglich mit dem oben verlinkten CP2102 USB UART Board 
und seinen internen Wandler, der nur 100mA liefert, den ESP zu speisen 
und zu programmieren. Dabei teste ich auch die WLAN-Konnektivität.
Beim Programmieren des ESPs ist der CP2102N jedoch so ungünstig 
angeschlossen, was zu dem beschriebenen Fehler führen kann.

Layout und alles weitere ist frühestens am Montag möglich.

von Stefan F. (Gast)


Lesenswert?

Eric schrieb:
> Ausschließlich die USB-Datenleitung scheint defekt
> zu sein, da der PC kein USB-Gerät mehr zu erkennen scheint.

Wirklich dauerhaft defekt, oder reden wir von einer funktionellen 
Störung die sich durch aus/ein Schalten beheben lässt?

Falls es nur eine vorübergehende Störung ist: Der ESP32 braucht 430 mA 
(Peak). Zusammen mit der Stromaufnahme des nicht genau bekannten ESP32 
und dem Rest der Schaltung bist du schnell über 500 mA.

Hast du die 3,3 Volt Versorgungsspannung mal mit einem Oszilloskop 
kontrolliert? Am besten stellst du den Trigger auf fallende Flanke bei 3 
Volt ein. Dann wird dir das Oszilloskop auf den Moment des 
Spannungseinbruches triggern, falls vorhanden.

von Harald K. (kirnbichler)


Lesenswert?

Stefan F. schrieb:
> Der ESP32 braucht schon 430 mA (Peak). Zusammen mit der Stromaufnahme
> des nicht genau bekannten ESP32

Es geht um einen ESP8266, nicht um irgendeine Variante des ESP32:

Eric schrieb:
> Der CP2102N ist über UART mit einem STM32 verbunden, aber
> derselbe UART ist auch mit einem ESP8266 verbunden.

von Stefan F. (Gast)


Lesenswert?

Harald K. schrieb:
> Es geht um einen ESP8266, nicht um irgendeine Variante des ESP32

Sorry, Tippfehler. Ich meinte auch den ESP8266. Der ESP32 braucht noch 
mehr Strom.

von Eric (eric_z)


Lesenswert?

Stefan F. schrieb:
> Wirklich dauerhaft defekt, oder reden wir von einer funktionellen
> Störung die sich durch aus/ein Schalten beheben lässt?

Wirklich dauerhaft defekt. Wenn ich einen neuen auflöte funktioniert 
wieder alles.

> Falls es nur eine vorübergehende Störung ist: Der ESP32 braucht 430 mA
> (Peak). Zusammen mit der Stromaufnahme des nicht genau bekannten ESP32
> und dem Rest der Schaltung bist du schnell über 500 mA.
>
> Hast du die 3,3 Volt Versorgungsspannung mal mit einem Oszilloskop
> kontrolliert? Am besten stellst du den Trigger auf fallende Flanke bei 3
> Volt ein. Dann wird dir das Oszilloskop auf den Moment des
> Spannungseinbruches triggern, falls vorhanden.

Ich gucke es mir dennoch am Montag genauer an.

von Stefan F. (Gast)


Angehängte Dateien:

Lesenswert?

Eric schrieb:
> Wirklich dauerhaft defekt.

Vielleicht passiert das, wenn der Mikrocontroller mit Spannung versorgt 
wird, während der CP2102 keine Versorgungsspannung hat.

Denn dann verträgt dessen UART Schnittstelle maximal 2,5 V, dein 
Mikrocontroller hat aber 3,3 V.

Eine instabile (zu schwache) Versorgungsspannung am Mikrocontroller wird 
wohl kaum den CP2102 zerstören. Das wäre nur bei einer vorübergehenden 
Störung von Interesse gewesen.

von Eric (eric_z)


Lesenswert?

Stefan F. schrieb:
> Vielleicht passiert das, wenn der Mikrocontroller mit Spannung versorgt
> wird, während der CP2102 keine Versorgungsspannung hat.
>
> Denn dann verträgt dessen UART Schnittstelle maximal 2,5 V, dein
> Mikrocontroller hat aber 3,3 V.
Das wäre dann mit dem UART-Switch gelöst.

Vielen Dank für eure Hilfe!

von Stefan F. (Gast)


Lesenswert?

Eric schrieb:
> Das wäre dann mit dem UART-Switch gelöst.

Arduino Module nutzen an der Stelle oft 1kΩ Widerstände in den Rx und Tx 
Leitungen. Das scheint auch zu genügen.

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.