Nov 03, 2023
Alles über USB
In den sechs Monaten, die seit der Veröffentlichung des letzten USB-C-Artikels vergangen sind, habe ich mir eine Reihe von Möglichkeiten ausgedacht, wie diese Artikel hätten verbessert werden können. Es ist natürlich normal, so etwas zu haben
In den sechs Monaten, die seit der Veröffentlichung des letzten USB-C-Artikels vergangen sind, habe ich mir eine Reihe von Möglichkeiten ausgedacht, wie diese Artikel hätten verbessert werden können. Es ist natürlich normal, ein solches Gefühl zu haben – es wird sogar erwartet. Ich glaube jetzt, dass es ein paar Lücken gibt, die ich schließen könnte. Ich habe beispielsweise nicht genügend Beispielschaltungen bereitgestellt, und manchmal kann ein Schaltplan die Dinge besser vermitteln als tausend Worte.
Lasst uns das beheben! Ich gebe Ihnen Schaltpläne für die Arten von USB-C-Geräten, die Sie wahrscheinlich tatsächlich bauen möchten. Ich werde in diesem Artikel auch eine Reihe von IC-Teilenummern nennen, aber ich habe natürlich keine vollständige Sammlung – wenn Sie weitere coole ICs finden, die für USB-C-Zwecke funktionieren und hier nicht erwähnt werden, tun Sie es bitte Lass es uns alle in den Kommentaren wissen!
Die erste Beispielschaltung haben wir im ersten Artikel gesehen – einen geräteseitigen („Upstream-zugewandten“) USB-C-Anschluss, der USB 2.0 und 5 V Strom unterstützt. Sie benötigen die 5,1-K-Widerstände, einen Widerstand pro Pin, und denken Sie daran, beide Datenpins zu verbinden – verwenden Sie bei Bedarf Durchkontaktierungen. Wenn Sie die Ihnen zur Verfügung stehende Strommenge ermitteln möchten, können Sie auch ADCs oder Komparatoren an beide CC-Pins anschließen. In den meisten Fällen ist Ihr Gerät jedoch so stromsparend, dass kein Grund besteht, sich die Mühe zu machen.
Wenn Sie nun ein Gerät mit USB-C-Stecker herstellen möchten, ist die Verkabelung dieselbe. Der einzige Unterschied besteht darin, dass Sie nur einen der CC-Pulldowns bestücken und ein Paar D+/D--Pins anstelle beider Paare verdrahten müssen. Wenn Sie das zweite Paar USB 2.0-Pins verkabeln, wird in der Praxis wahrscheinlich nichts Schlimmes passieren, es ist einfach unhöflich; Früher kam es zu Konflikten mit einer bestimmten Art von Ports und Kabeln (den VirtualLink-Ports), die nicht mehr verkauft werden.
Wenn Sie jedoch 5,1-K-Pulldowns an beide CC-Pins anschließen, stellen Sie versehentlich ein Hacker-Zubehör her: einen Debug-Modus-Adapter, mit dem Sie zusätzliche Signale aus einigen USB-C-Anschlüssen herausholen können. Auf dem Framework-Laptop schaltet beispielsweise eine mit einem USB-C-Stecker ausgestattete Platine mit beiden Pulldowns einen USB-C-Port in einen Debug-Modus und legt die EC-UART-Verbindung an den SBU-Pins frei. Sofern Sie kein solches Debug-Zubehör herstellen, sollten Sie nur eines der Pulldowns bestücken und die USB 2.0-Datenpins entsprechend verkabeln.
Was wäre, wenn Sie einen Host-Port erstellen möchten? Einerseits ist es einfacher, weil man nicht unbedingt ADC-Messungen durchführen muss. Stattdessen fügen Sie Pull-Ups mit unterschiedlichen Werten für unterschiedliche Mengen an verfügbarem Strom hinzu. Nicht alle Geräte überprüfen die Pull-up-Präsenz, aber Telefone schon. Wenn Sie also ein provisorisches USB-C-Ladegerät herstellen, erkennt ein Telefon oder Laptop es möglicherweise nicht als gültige Methode zum Aufladen, wenn Sie nicht über die Pull-up-Funktion verfügen -UPS. Es kostet auch nicht viel, sie hinzuzufügen!
Noch wichtiger ist, dass Sie VBUS möglicherweise steuern und ihn erst einschalten möchten, wenn Sie einen Pulldown an einem der CC-Pins erkannt haben. Wenn Sie dies nicht tun, werden Sie nicht unbedingt ein Problem haben, aber es deckt einige wichtige Grenzfälle ab, wie zum Beispiel, dass jemand ein USB-A-zu-USB-C-Kabel an Ihren Anschluss anschließt!
Ich habe diese Schaltung noch nie gemacht, aber meiner Meinung nach sollte es ausreichen, zwei FETs zu verwenden, einen pro CC-Pin, beide parallel geschaltet. Diese Schaltung könnte Randfälle haben – Verbesserungen willkommen! Andererseits habe ich ein paar Mal USB-C-Port-Breakouts mit Pull-Down-Funktion als Host-Ports verwendet, es ist also definitiv keine zwingende Anforderung und Sie müssen Ihre FET-Sammlung nicht immer herausbrechen.
Insgesamt gibt es zwei Dinge, die Sie tun möchten, wenn Sie einen Host-Port erstellen, und keines der beiden ist unbedingt erforderlich. Wenn Sie die Schaltung komplexer gestalten oder vielleicht sogar einen Port mit doppelter Funktion nutzen möchten, gibt es ICs, die Ihnen bei diesem Teil von USB-C helfen!
Nehmen Sie zum Beispiel den WUSB3801. Es kümmert sich sowohl um die Quellen- als auch um die Senkenerkennung, verfügt über alle erforderlichen Pulld-Owns und Pull-Ups und kann sogar Dual-Role-Ports ausführen, sodass Sie jede Art von 5-V-Stromanschluss erstellen können. Es kann den Portstatus mit ein paar GPIOs ausgeben oder Sie können es über I2C an Ihren Mikrocontroller anschließen und es verfügt sogar über einen ID-Pin, sodass Sie damit einen MicroUSB-Port vollständig durch einen USB-C-Port ersetzen können! Der WUSB3801 ist klein genug, lötbar genug und auch vielseitig genug. Beispielsweise hat jemand auf dem Hackaday-Discord-Server eine WUSB3801-Schaltung gebaut, die den Strom eines Li-Ion-Ladegeräts begrenzt, je nachdem, ob der angeschlossene USB-C-Anschluss 3 Ampere liefern kann oder nicht.
Egal, ob Sie einen Quell-Port, einen Senken-Port oder sogar einen Port bauen möchten, der beides kann, der WUSB301 (oder einer der vielen ähnlichen ICs wie TUSB320) wird Ihre Lösung des Tages sein. Eine Beschwerde, die ich gegenüber dem WUSB3801 habe, ist, dass er keinen GPIO zur Bestimmung der aktuell eingesteckten Portpolarität bietet – dafür muss man die I2C-Schnittstelle verwenden. Warum sollten Sie nun die Polarität des Anschlusses kennen? Der Grund dafür sind Hochgeschwindigkeitsschnittstellen, und die USB-3.0-Schnittstelle ist definitiv ein USB-C-Standbein, allein schon wegen der einfachen Implementierung.
Der Bau eines USB 3.0-Geräts mit USB-C-Stecker ist genauso einfach wie der Bau eines USB 2.0-Geräts mit USB-C-Stecker. USB 3.0 verfügt über zwei zusätzliche Hochgeschwindigkeits-Diffpairs und ein USB-C-Anschluss bietet Platz für vier Diffpairs. Mit dem Stecker verkabeln Sie Ihren USB 3.0 SSRX mit USB-C RX1, USB 3.0 SSTX mit USB-C TX1, stecken einen Pulldown auf den CC1 und fertig. Abgesehen von den Serienkondensatoren, die Ihr USB 3.0-Link möglicherweise benötigt, sind keine zusätzlichen Komponenten erforderlich, und diese unterscheiden sich nicht von einer regulären Implementierung.
Aus diesem Grund werden Sie feststellen, dass viele USB-Sticks über einen USB-C-Stecker verfügen – es ist so einfach, einen hinzuzufügen, Sie müssen die CC-Pins nicht herausfinden, keine zusätzlichen Komponenten hinzufügen oder ähnliches. Wenn Sie jedoch eine USB-C-Buchse mit USB 3.0-Unterstützung hinzufügen möchten, müssen Sie zusätzliche Komponenten hinzufügen. Stellen Sie sich vor, Sie stecken Ihr USB 3.0 USB-C-Flashlaufwerk in eine USB-C-Buchse. Je nachdem, in welche Richtung Sie es drehen, landen die Stifte in einer der beiden Positionen. Sie möchten die TX/RX-Pins der Buchse nicht miteinander verbinden, da dies ein großes Problem mit der Signalintegrität darstellen würde. Wenn Sie also eine USB-C-Buchse mit USB 3.0-Unterstützung hinzufügen, benötigen Sie einen Multiplexer für Hochgeschwindigkeit Signaldrehung.
Dabei handelt es sich mittlerweile um eine bewährte Art von USB-C-Chips – Sie finden sie von mindestens einem Dutzend verschiedener Hersteller; Wenn Sie ein paar ICs finden, die die gleiche Pinbelegung haben, wird es für Sie schwierig sein, einen Chipmangel zu bekommen. Einige Multiplexer verfügen über einen POL-Eingang, mit dem Sie Ihr USB 3.0-Signal manuell in zwei mögliche Positionen umschalten können – diese sind für die Verwendung zusammen mit Ihrem eigenen PD-Controller gedacht, also einem Chip, der CC-Pins verarbeitet. Sie werden feststellen, dass viele Multiplexer auch CC-Logik enthalten und Ihnen im Grunde eine Komplettlösung für 5 V und USB 3.0-fähiges USB-C bieten. Wenn Sie einen Host erstellen, müssen Sie möglicherweise nur die VBUS-Verarbeitung hinzufügen, und wenn Sie ein Gerät mit einem USB-C-Anschluss erstellen, benötigen Sie nichts anderes!
Ein solcher Multiplexer ist die Art und Weise, wie viele billige USB-C-Anschlüsse an Laptops funktionieren – sie bieten nur USB 2.0, sonst nichts, und wenn man bedenkt, wie einfach die Implementierung ist, macht es Sinn, dass viele Hersteller billiger Laptops daran festgehalten haben. Darüber hinaus können Sie bei Bedarf sogar auf den Mux verzichten, wenn Sie einen freien USB-3.0-Anschluss haben. Wir haben dies schon auf Desktop-Motherboards gesehen, und lustigerweise sind beide USB-C-Anschlüsse auch beim MNT Pocket Reform so verkabelt! Es macht Sinn, dass der integrierte USB-3.0-Hub des Pocket Reform-Boards über vier freie Ports verfügt, aber es gibt nur zwei USB-C-Ports, an denen Sie USB 3.0 freigeben können. Es funktioniert ganz gut, und wenn jemand an diese beiden zusätzlichen USB 3.0-Anschlüsse gelangen möchte, muss er nur einen passiven Adapter entwerfen!
Einer dieser beiden USB-C-Anschlüsse am Pocket Reform ist etwas Besonderes, da er nicht nur die 5-V-Schiene mit VBUS verbindet, wie es beim ersten Anschluss der Fall ist. Stattdessen verfügt es über einen Netzschalter-IC, der mit VBUS verbunden ist, und einen FUSB302B, der mit den CC-Pins verbunden ist. Das ist der Ladeanschluss des Pocket Reform, und tatsächlich ist dies eine der Möglichkeiten, wie Sie die Stromversorgung in Gang bringen können.
Alle besprochenen Optionen unterstützen bereits eine Leistung von bis zu 15 W, genauer gesagt 5 V bei 3 A. Höhere Spannungen werden natürlich auch unterstützt. Sie müssen nur PD sprechen oder vielleicht einen freundlichen Chip für Sie sprechen lassen.
Bei diesen benutzerfreundlichen Chips handelt es sich, wie Sie sich vielleicht vorstellen können, um PD-Trigger-ICs. Sie verdrahten sie mit den CC-Pins und sie handeln in Ihrem Namen ein Stromprofil aus. Sie verfügen über einige Eingänge, mit denen Sie die gewünschte Spannung einstellen können, und optional über einen FET-Treiberausgang, um VBUS zu trennen, wenn das Netzteil nicht die benötigte Spannung liefern kann, um sicherzustellen, dass Sie nicht die Standardspannung von 5 V auf einer Stromschiene erhalten wo Sie 20 V benötigen.
Wir könnten viel über die Trigger-Chips reden, viele andere Leute tun das, und ich habe es sicherlich auch getan. Tatsächlich ist es die Option, die die meisten Menschen wählen, wenn sie eine hohe Spannung über einen USB-C-Anschluss benötigen. Sie eignen sich perfekt für die meisten Anwendungsfälle, und die Chancen stehen gut, dass Sie danach greifen möchten. Beachten Sie jedoch, dass ihr Verhalten unflexibel ist: Sie erlauben Ihnen nicht, einen Doppelrollen-Port einzurichten, und sie erlauben Ihnen nicht, zwischen einem 30-W-USB-C-Netzteil und einem 100-W-Netzteil zu unterscheiden, was hilfreich ist, wenn Sie eine ohmsche Last antreiben. Sie können sie auch nicht mit USB 3.0 oder DisplayPort kombinieren, da sie keinen Polaritätsausgang haben und Sie keine benutzerdefinierten Nachrichten senden können.
Mit einem PD-Controller können Sie viel mehr tun! Unabhängig davon, ob Sie einen externen PD-Controller wie den FUSB302B oder einen in Ihre MCU integrierten PD-Controller verwenden, können Sie damit Ihre eigenen PD-Kommunikationsentscheidungen treffen. Es enthält alle Widerstände, die Sie benötigen, und Sie werden wahrscheinlich Beispielcode für jede Aufgabe finden, die Sie ausführen müssen. Wir haben bereits die Erstellung benutzerdefinierter PD-Nachrichten durchgeführt, sowohl für den Strom- als auch für den DisplayPort-Senkenbetrieb. Irgendwann werden wir sogar unser eigenes USB-C-Netzteil mit einem FUSB302B bauen, also bleiben Sie dran! Wenn es um MCUs geht, gibt es einige bekannte STM32- und Cypress-Mikrocontroller mit PD-Peripherie, und kürzlich ist der CH32X035 auf den Markt gekommen.
Mit Ihrem eigenen PD-Controller können Sie auch DisplayPort-Nachrichten senden – indem Sie einen DisplayPort-Ausgang von allen kompatiblen Ports extrahieren oder DisplayPort möglicherweise selbst anbieten. Verwenden Sie einen USB-C-Stecker und Sie benötigen keinen Mux, oder verwenden Sie eine Steckdose und fügen Sie einen DisplayPort-kompatiblen Mux hinzu – damit können Sie zweispurigen DisplayPort und USB 3.0 gleichzeitig oder vierspurigen DisplayPort extrahieren, je nachdem, was Sie möchten . Oder Sie können einen DisplayPort-Sockel verwenden, den Mux weglassen und Ihren Port nur in einer Ausrichtung arbeiten lassen – dieser chinesische eDP-Breakout-Verkäufer kann das bestätigen!
Das nächste Mal werden wir uns mit dem Innenleben eines USB-C-Netzteils befassen und anschließend ein 20-V-Netzteil in eine USB-C-Quelle mit 20-V-Unterstützung umwandeln. Wir benötigen lediglich den FUSB302, ein paar FETs und einen Ersatz-5-V-Regler. Es erfordert nicht viel von uns, Sie können Ihre alten Netzteile auf USB-C-Laptop-Stromversorgung umrüsten und erhalten auch einige Einblicke in die Funktionsweise eines USB-C-Netzteils!