bin aktuell an einem kleinen Projekt, wo ich einen USB-C Anschluss an einen ESP32-WROOM-32 verbauen will. Nun habe ich, wie im Anhang, die erste Schaltung gezeichnet, wobei ich als USB-UART einen CP2102N verwenden will (bessere Driver, etc). Da ich einen vertikal eingebauten USB-C Anschluss verbauen will, finde ich leider nur Anschlüsse, welche 24Pins besitzen. Laut dem Datenblatt des CP2102N, muss nur der VBUS, D+, D-, GND verbunden werden. Spannungsversorgung erfolgt über den BUS.
Nun folgende Fragen:
Gibt es irgendwelche Probleme, die beim Verbau eines USB-C mit 24 Pins auftreten können?
Soweit ich das verstanden habe, reicht es, nur die Pins auf der A oder B-Seite des USB-C Anschluss zu verbinden. Stimmt das?
Gibt es sonst irgendwelche Dinge zu beachten bezüglich Schirmung, etc? Bin leider mehr in der Softwareentwicklung unterwegs und habe daher keine allzu hohe Erfahrung in der Entwicklung dieser Schaltungen.
Sieht die Schaltung wie aktuell gezeichnet, brauchbar aus um im nächsten Step. auf den ESP weiterzugehen?
Gibt es beim Package einen Unterschied zwischen der GQFN20R bzw. 24 oder 28 Pins? Bei den kommerziellen Boards findet man meist den GQFN24R. Unterscheidet sich dieser neben weiteren Pins, die für meinen Fall nicht unbedingt benötigt werden? Ich hätte den mit 20Pins verwendet.
Dann kannst du das USB-C Kabel nicht "verkehrt" anschließen. Was meiner Meinung nach eines der Hauptargumente für USB-C ist. Also beide Seiten anschließen
Die Datenleitungen sind differentiell auszulegen.
Sieht soweit gut aus. Verbinde das Shield noch mit Masse,
Es fehlen noch die beiden Widerstände an den CC Leitungen, ohne die wird das nix. Jeweils 5,1k von CC1 und CC2 nach Masse. Die 2.0 Datenleitungen der beiden Richtungen solltest du direkt am Stecker auf deiner Platine verbinden.
Gibt es irgendwelche Probleme, die beim Verbau eines USB-C mit 24
Pins auftreten können?
Man muss den halt löten können, ist je nach Ausführung schon recht fummelig.
Gibt es sonst irgendwelche Dinge zu beachten bezüglich Schirmung,
etc? Bin leider mehr in der Softwareentwicklung unterwegs und habe daher
keine allzu hohe Erfahrung in der Entwicklung dieser Schaltungen.
Der Shield sollte auf Masse angeschlossen werden.
Sieht die Schaltung wie aktuell gezeichnet, brauchbar aus um im
nächsten Step. auf den ESP weiterzugehen?
Step by Step, uuuuhhh Babeeee . . .
Früher hieß das Schritt.
Und du brauchst keine E96 Präzisionswiderstände. 22k und 47k reichen locker.
Als ESD-Schutz empfehle ich den USBLC6, klein, fein, preiswert.
Und du brauchst keine E96 Präzisionswiderstände. 22k und 47k reichen
locker.
Ich nehme da immer das, von dem meine Datenbank sagt, dass es bereits vorrätig ist. ;-) Das kann auch mal E96 sein …
Aaaber: der Spannungsteiler ist sowieso Kokolorus.
"Note 1 : For self-powered systems where VDD or REGIN may be unpowered when VBUS is connected to 5 V, a resistor divider (or functionally-equivalent circuit) on VBUS is required to meet the absolute maximum voltage on VBUS specification in the Electrical Characteristics section."
Das Gerät hier ist nicht self-powered, sondern bus-powered. Da schreibt das Datenblatt überall eine direkte Verbindung zu Vbus vor.
Außerdem fehlen sämtliche Abblock-Kondensatoren sowie die beiden empfohlenen Pullwiderstände; siehe Bild 5 im Datenblatt.
Naja, das ist ein simples Fullspeed-Design. Bei 12 Mbit/s muss man sich darüber keine große Platte machen. Solange D+ und D- einigermaßen beieinander geroutet sind, reicht das. Fullspeed-USB habe ich schon auf Flachbandkabel durchs Fenster gequetscht …
Du könntest ein ESP32-S3-WROOM-1 benutzen. Das hat eine integrierte USB-Peripherie. Mithilfe der beim ESP-IDF integrierten TinyUSB-Library ist es ziemlich einfach damit einen virtuellen COM-Port oder ein eigenes USB-Protokoll zu implementieren. Das würde den CP2102N ganz einsparen, und du hast bei Bedarf die volle Flexibilität des USB-Protokolls.
Funktioniert natürlich auch mit USB-C mit den erwähnten 5.1kOhm-Widerständen.
Zum Flashen & Debuggen kann man ja immer noch einen externen USB-Serial-Adapter nehmen, z.B. in Form des ESP-PROG, und den UART vom ESP auf Testpunkte o.ä. legen.
Ich werde mal den Schaltplan soweit fertig zeichnen und dieses Schemata von Adafruit übernehmen. Der 3,45V Pfad (grün eingezeichnet) sollte hier nicht unbedingt nötig sein oder? Ist dieser für eine externe Stromversorgung?
Wisst ihr eventuell, wofür der rot eingezeichnete Kondensator gut ist?
Aja und das USB-UART kommt vielleicht später irgendwann weg, zurzeit will ich ihn aber flashen können, ohne das Gehäuse jedes Mal auseinander nehmen zu müssen 😃
Ich werde mal den Schaltplan soweit fertig zeichnen und dieses Schemata
von Adafruit übernehmen.
JAIN! Gewöhn dir nicht dem Hipster-Müll mit den Labels an! Zeichne direkt verbundene Signale!
Der 3,45V Pfad (grün eingezeichnet) sollte hier
nicht unbedingt nötig sein oder?
Oder.
Ist dieser für eine externe
Stromversorgung?
Nö, er vesorgt den IC und dessen IO.
Wisst ihr eventuell, wofür der rot eingezeichnete Kondensator gut ist?
Für den internen Spannungsregler. Den kann man NICHT weglassen.
Aja und das USB-UART kommt vielleicht später irgendwann weg, zurzeit
will ich ihn aber flashen können, ohne das Gehäuse jedes Mal auseinander
nehmen zu müssen 😃
Dann leg einfach RX, TX und GND auf einen Stecker und schließ dort ein fertiges USB-UART Kabel an.
Aja und das USB-UART kommt vielleicht später irgendwann weg, zurzeit
will ich ihn aber flashen können, ohne das Gehäuse jedes Mal auseinander
nehmen zu müssen 😃
Der ESP32-S3 enthält einen Hardware-USB-Serial-Adapter der mittels eFuse auf den USB-Port gemappt werden kann. Darüber kann man dann sowohl flashen als auch per JTAG debuggen, und eigene Dinge über den Serial Port senden.
In dieser Konfiguration kann man aber kein eigenes USB-Protokoll nutzen sondern ist auf CDC-ACM festgenagelt. Man kann aber (ggf. später) per eFuse und/oder Strapping Pin die USB_SERIAL_JTAG-Hardware abschalten und kann dann beliebige eigene USB-Klassen umsetzen.
Es ist sogar relativ einfach (ca 200 LoC) eine eigene USB-Flashing-Logik zu schreiben, mit welcher man per USB die Firmware überschreiben kann. Das kann sogar parallel zur Applikation laufen (also kein echter Bootloader), man muss dann nur noch neu starten um die neue Anwendung zu starten. Dazu konfiguriert man 2-3 Anwendungs-Partitionen, man überschreibt die die gerade nicht läuft. ESP-IDF macht's möglich :)
Danke für den Hinweis, hört sich relativ interessant 😃 Aber ich glaube ich bleib vorab beim WRoom. Der H2, der bald kommen soll, würd mich sehr interessieren um paar Anwendungen mit Zigbee zu basteln 😁
Danke für das konstruktive und nette Feedback.
Ich werde mal den Schaltplan soweit fertig zeichnen und dieses Schemata
von Adafruit übernehmen.
JAIN! Gewöhn dir nicht dem Hipster-Müll mit den Labels an! Zeichne
direkt verbundene Signale!
Der 3,45V Pfad (grün eingezeichnet) sollte hier
nicht unbedingt nötig sein oder?
Oder.
Ist dieser für eine externe
Stromversorgung?
Nö, er vesorgt den IC und dessen IO.
Wisst ihr eventuell, wofür der rot eingezeichnete Kondensator gut ist?
Für den internen Spannungsregler. Den kann man NICHT weglassen.
Aja und das USB-UART kommt vielleicht später irgendwann weg, zurzeit
will ich ihn aber flashen können, ohne das Gehäuse jedes Mal auseinander
nehmen zu müssen 😃
Dann leg einfach RX, TX und GND auf einen Stecker und schließ dort ein
fertiges USB-UART Kabel an.
Ist dies unbedingt nötig? Spannungsversorgung geht ja auch über VBus, nicht wahr? Sprich wenn ich den Chip nur zum kompilieren meines ESP32 verwenden will.
Ja, hatte Falk doch klar und deutlich geschrieben.
Tu dir doch einen Gefallen und schau nicht nur irgendwelche anderen Schaltpläne an, sondern lies das Datenblatt des CP2102. Sei froh, dass es (anders als einige Appnotes) nicht nur auf chinesisch sondern auf englisch verfügbar ist. ;-)
Spannungsversorgung geht ja auch über VBus,
nicht wahr?
Nein. Der Chip braucht 3,0 bis 3,6 V – auch das steht im Datenblatt.
Man kann ihn von Vbus versorgen, aber eben genau so, wie da geschrieben: indem man den internen 3,3-V-Regler benutzt. Kapitel 10 im Datenblatt.
Ich habe mir das Datenblatt ja gelesen, jedoch ist mir der Unterschied zwischen self-powered und Bus-powered nicht 100% klar, da eben die Bus powered Version im Datenblatt den Vregin Pin verwendet, jedoch auch den vbus über den Spannungsteiler. Der self-powered verwendet hier nur den vbus eingang..
Sobald ich den Unterschied von Vregin und Vbus verstanden habe, würde ich die Schaltung wsl verstehen 😅
Den Spannungsteiler gibt's übrigens nur bei self-powered Konfigurationen. Er soll lediglich sicherstellen, dass der Vbus-Eingang dann keinen Strom aus der angelegten Busspannung vom USB ziehen kann, wenn die Eigenversorgung (self-powered!) gerade nicht anliegt.
VRegin: Dieser Anschluss dient als externe Stromversorgung für den CP2102N. Wenn VRegin an eine externe Stromquelle angeschlossen ist, kann der CP2102N auch bei fehlender Stromversorgung über den USB-Bus funktionieren.
Vbus: Dieser Anschluss bezieht Strom aus dem USB-Bus. Wenn VRegin nicht an eine externe Stromquelle angeschlossen ist, muss der CP2102N über Vbus mit Strom versorgt werden.
Laut dieser Erklärung würde der Chip ja auch funktionieren, solange Vbus also mein USB dem Chip den benötigten Strom gibt.. also wäre der Vregin ja obligatorisch..
self-powered: Das Gerät versorgt sich selbst. Die Busspannung vom USB muss man nur erkennen um festzustellen, wann es angesteckt worden ist (damit es die USB-Konfiguration am Host auszuhandeln bereit ist).
Den Spannungsteiler gibt's übrigens nur bei self-powered
Konfigurationen. Er soll lediglich sicherstellen, dass der Vbus-Eingang
dann keinen Strom aus der angelegten Busspannung vom USB ziehen kann,
wenn die Eigenversorgung (self-powered!) gerade nicht anliegt.
Laut dem angehängten Bild, sollte auch ein Spannungsteiler bei der Bus-powered Version verwendet werden? Ist der also überfällig?
Soo, habe jetzt den Schaltplan wieder ein Stück weiter gezeichnet. Was sagt ihr hierzu?
Bezüglich des Datenblatts.. ich habe das 2102N genommen, du glaube ich das vom älteren 2102, was jedoch gerade bezüglich des Voltage Regulator viel besser beschrieben zu sein scheint.
https://www.mouser.com/datasheet/2/368/cp2102n_datasheet-1634912.pdf Dieses hab ich genommen.
Habt ihr zu meiner Schaltung noch irgendwelche Verbesserungsvorschläge? Habe die Abblockkondensatoren nun so geschalten, wie sie im Datenblatt des CP2102n als auch des ESP32-Wroom-32 gezeigt werden. Wie siehts hier mit dem Pullup aus? Ist dieser so richtig verschalten?
Ich glaube die zwei Taster für den Reset und Boot fehlen mir auch noch..
Nö. Dein Spannungsregler ist am Eingang falsch angeschlossen. Der soll sicher NICHT an eine Datenleitung, Eher an VBUS! VIO muss auch angeschlossen sein!
Und wenn man das Ganze etwas entzerrt kann man auch die Leitungen und Widerstände ohne Krampf und Dutzend Knicke zeichnen.
RST vom CP2102 soll per Pull-up nach VIO gezogen werden. Was ist überhaupt mit VIO? Bleibt der offen? Habe das Datenblatt nur grob überflogen, ggf. nochmal einen Referenzschaltplan gegenprüfen.
Wenn du schon einen eigenen 3,3-V-Regler hast, kannst du auch gleich den CP2102 daraus mit versorgen. Dann musst du dessen internen Regler nicht nehmen.
Darüber habe ich heute schon nachgedacht.. bzw eher ob der VDD vom CP2102, der ja 3V bereitstellt, verwendet werden kann um den ESP zu versorgen. Hat aber bisschen zu wenig Spannung, weswegen ich dann den externen Regler verbaut habe. Spricht da irgendetwas dagegen, den internen Regler zu verwenden, wenn dieser schon bereitgestellt ist?
Darüber habe ich heute schon nachgedacht.. bzw eher ob der VDD vom
CP2102, der ja 3V bereitstellt, verwendet werden kann um den ESP zu
versorgen. Hat aber bisschen zu wenig Spannung,
Und zu wenig Strom.
weswegen ich dann den
externen Regler verbaut habe. Spricht da irgendetwas dagegen, den
internen Regler zu verwenden, wenn dieser schon bereitgestellt ist?
Mein aktueller finaler Schaltplan sieht nun so aus. Hat vielleicht noch jemand Verbesserungsvorschläge oder Tipps zur Verbesserung bzw. ob die Schaltung irgendwo unnötige Abblockkondensatoren etc. enthält?
Wäre über paar Empfehlungen oder Tipps nochmal sehr dankbar! :)