Alt om USB-C: Eksempler på kredsløb

Alt om USB-C: Eksempler på kredsløb

Kildeknude: 2808350

I de seks måneder, der er gået efter den sidste USB-C-artikel er blevet frigivet, har jeg tænkt på en masse måder, hvorpå disse artikler kunne være blevet forbedret. Det er selvfølgelig normalt at have sådan en følelse - endda forventet. Jeg tror nu, at der er et par huller, som jeg kunne bygge bro over. For eksempel har jeg ikke givet nok eksempler på kredsløb, og nogle gange kan en skematisk formidle ting bedre end tusind ord.

Lad os ordne det! Jeg vil give dig skemaer for den slags USB-C-enheder, du faktisk sandsynligvis vil bygge. Jeg vil også dele en masse IC-delnumre i denne artikel, men jeg har selvfølgelig ikke en udtømmende samling – hvis du finder flere fede IC'er, der fungerer til USB-C-formål og ikke er nævnt her, bedes du gøre det lad os alle vide det i kommentarerne!

Vi har set det første eksempel på kredsløb i den første artikel – en USB-C-port på enhedssiden ("opstrømsvendt"), der understøtter USB 2.0 og 5 V strøm. Du skal have 5.1 K-modstandene, en modstand pr. ben, og husk at forbinde begge datastifter - brug om nødvendigt vias. Hvis du vil bestemme mængden af ​​strøm, der er tilgængelig for dig, kan du også forbinde ADC'er eller komparatorer til begge CC-benene sammen, selvom din enhed oftest har lav strøm nok til, at der ikke er nogen grund til at genere det.

Nu, hvis du vil lave en enhed med et USB-C-stik, er ledningsføringen den samme. Den eneste forskel er, at du kun behøver at udfylde en af ​​CC-pull-downs og tilslutte et par D+/D-ben i stedet for begge par. Der vil sandsynligvis ikke ske noget dårligt i praksis, hvis du tilslutter det andet par USB 2.0-ben, det er bare uhyggeligt efter standarden; det plejede at være i konflikt med en bestemt slags porte og kabler (de VirtualLink), som ikke længere sælges.

Men hvis du tilslutter 5.1 K pull-downs til begge CC-ben, laver du ved et uheld et hacker-tilbehør: en debug-mode-adapter, noget der vil hjælpe dig med at få ekstra signaler ud af nogle USB-C-porte. For eksempel på den bærbare Framework-computer vil et USB-C-stik-udstyret kort med begge pull-downs skifte en USB-C-port til en fejlretningstilstand og afsløre EC UART-forbindelsen på SBU-benene. Medmindre du laver et sådant debug-tilbehør, bør du kun udfylde en af ​​rullemenuerne og tilslutte USB 2.0-datastifterne i overensstemmelse hermed.

Flipside lige så nemt

Hvad hvis du ville lave en værtsport? Fra den ene side er det nemmere, fordi du ikke nødvendigvis skal lave nogen ADC-målinger. I stedet tilføjer du pull-ups, forskellig værdi for forskellige mængder tilgængelig strøm. Ikke alle enheder kontrollerer pull-up-tilstedeværelsen, men det gør telefoner, så hvis du laver en provisorisk USB-C-oplader, kan en telefon eller en bærbar computer muligvis ikke genkende det som en gyldig måde at oplade på, hvis du ikke har pull-up-opladeren -UPS. Det koster heller ikke meget at tilføje dem!

12 V 4 A maks. logisk niveau P-FET – IRLML6401/CJ2305/etc, gentag dette kredsløb to gange

Endnu vigtigere er det, at du måske vil styre VBUS ved først at tænde for den, efter at du har opdaget en pull-down på en af ​​CC-benene. Du vil ikke nødvendigvis have et problem, hvis du ikke gør det, men det dækker nogle vigtige kanttilfælde, som en person, der tilslutter et USB-A til USB-C-kabel i din port!

Jeg har aldrig lavet dette kredsløb, men som jeg ser det, burde det være nok at bruge to FET'er, en pr. CC-pin, begge sat parallelt. Dette kredsløb kan have fordele - forbedringer er velkomne! På den anden side har jeg brugt pull-down-udstyrede USB-C port breakouts som værtsporte et par gange, så det er bestemt ikke et hårdt krav, og du behøver ikke altid at bryde din FET-samling ud.

I alt er der to ting, du vil gøre, hvis du bygger en værtsport, og ingen af ​​de to er helt nødvendige. Også, hvis du gerne vil blive mere kompleks på kredsløbet, eller måske endda lave en dual-rolle port, er der IC'er, der hjælper dig med denne del af USB-C!

Tag for eksempel WUSB3801. Den tager sig af både kilde- og synkdetektion, har alle de nødvendige pulld-owns og pull-ups indeni og kan endda udføre dobbeltrolleporte, som lader dig bygge enhver form for 5 V strømport. Den kan udsende portstatus med et par GPIO'er, eller du kan tilslutte den til din mikrocontroller over I2C, og den har endda en ID-pin, så du kan bruge den til fuldt ud at erstatte en MicroUSB-port med en USB-C! WUSB3801 er lille nok, loddebar nok og også alsidig nok. For eksempel, over på Hackaday Discord-serveren, nogen har bygget et WUSB3801-kredsløb, som begrænser en Li-ion-opladers strøm baseret på, om den tilsluttede USB-C-port kan levere 3 ampere eller ej.

Uanset om du vil bygge en kildeport, en sink-port eller endda en port, der kan begge dele, vil WUSB301 (eller en af ​​de mange lignende IC'er som TUSB320) være din dagens løsning. En klage, jeg har over for WUSB3801, er, at den ikke giver en GPIO til at bestemme den aktuelt tilsluttede portpolaritet - du skal bruge I2C-grænsefladen til det. Hvorfor skulle du kende portpolariteten? Højhastighedsgrænseflader er årsagen, og USB 3.0-grænsefladen er bestemt en USB-C-grundstøtte, om ikke andet på grund af hvor let det er at implementere.

Høj hastighed, lav pris

At bygge en USB 3.0-enhed med et USB-C-stik er lige så nemt som at bygge en USB 2.0-enhed med et USB-C-stik. USB 3.0 har to højhastighedsdiffpairs tilføjet, og et USB-C-stik har pladser til fire diffpairs. Med stikket forbinder du din USB 3.0 SSRX til USB-C RX1, USB 3.0 SSTX til USB-C TX1, pop en pull-down på CC1, og du er færdig. Der er ingen ekstra komponenter bortset fra seriekondensatorer, som dit USB 3.0-link muligvis har brug for, og disse adskiller sig ikke fra en almindelig implementering.

Nu er det derfor, du vil se en masse USB-flashdrev tage et USB-C-stik – det er så nemt at tilføje et, du behøver ikke finde ud af CC-stifterne, tilføje ekstra komponenter eller lignende. Du do er nødt til at tilføje ekstra komponenter, hvis du ønsker at tilføje et USB-C-stik med USB 3.0-understøttelse. Forestil dig at sætte dit USB 3.0 USB-C-flashdrev i et USB-C-stik, afhængigt af hvilken vej du drejer det, vil stifterne ende i en af ​​de to positioner. Du ønsker ikke at forbinde stikkets TX/RX-ben, det ville være et stort problem med signalintegriteten, så hvis du tilføjer et USB-C-stik med USB 3.0-understøttelse, har du brug for en mux til at håndtere højhastigheds signalrotation.

Disse er efterhånden en afprøvet slags USB-C-chip – du vil finde disse fra mindst et dusin forskellige producenter; hvis du finder et par IC'er, der har den samme pinout, vil det være svært for dig at få chipmangel. Nogle muxer vil have en POL-indgang til manuelt at skifte dit USB 3.0-signal til to mulige positioner - disse er beregnet til at blive brugt sammen med din egen PD-controller, hvilket vil sige en chip, der håndterer CC-ben. Mange muxer, vil du finde, indeholder også CC-logik, og vil som udgangspunkt give dig en komplet løsning til 5 V og USB 3.0 kompatibel USB-C. Hvis du bygger en vært, behøver du måske kun tilføje VBUS-håndtering, og hvis du bygger en enhed med et USB-C-stik, behøver du ikke andet!

Sådan en mux er, hvordan mange billige USB-C-porte på bærbare computere fungerer - de giver kun USB 2.0, intet andet, og i betragtning af hvor let det er at implementere, giver det mening, at mange billige bærbare computerproducenter har holdt fast i dette. Hvad mere er, kan du endda udelade mux, hvis du ville, hvis du har en USB 3.0-port til overs. Vi har set dette gjort på stationære bundkort, og sjovt nok er dette hvordan begge USB-C-porte er forbundet med MNT Pocket Reform, også! Det giver mening, den indbyggede USB 3.0-hub på Pocket Reform-kortet har fire ledige porte, men der er kun to USB-C-porte, du kan udsætte USB 3.0 på. Det fungerer godt nok, og hvis nogen vil have fat i disse to ekstra USB 3.0-porte, skal du kun designe en passiv adapter!

En af disse to USB-C-porte på Pocket Reform er speciel, den forbinder ikke bare 5 V-skinnen til VBUS, som den første port gør. I stedet har den en strømafbryder IC tilsluttet til VBUS og en FUSB302B forbundet til CC-benene. Det er opladerporten til Pocket Reform, og dette er faktisk en af ​​måderne, hvorpå du kan få strømforsyningen til at køre.

Få dine volt og pixel

Alle de muligheder, vi har talt om, understøtter allerede op til 15 W effekt, specifikt 5 V ved 3 A. Højere spændinger understøttes selvfølgelig også. Du skal bare tale PD, eller måske lade en venlig chip tale for dig.

Disse venlige chips, som du måske kan gætte, er PD trigger IC'er. Du kobler dem op til CC-stifterne, og de forhandler en strømprofil på dine vegne. De har et par indgange, der lader dig indstille den ønskede spænding, og eventuelt en FET-driverudgang til at afbryde VBUS, hvis PSU'en ikke kan levere den spænding, du har brug for, og sørg for, at du ikke får standard 5 V på en strømskinne hvor du har brug for 20 V.

Vi kunne tale meget om triggerchipsene, mange andre mennesker gør, og det har jeg bestemt også. Faktisk er det den mulighed, som folk overvejende vælger, når de har brug for en højspænding ud af en USB-C-port. De er perfekte til de fleste brugstilfælde, og chancerne er, at du vil nå efter en. Men vel at mærke, deres adfærd er ufleksibel: de vil ikke lade dig lave en dobbeltrolleport, og de vil ikke lade dig skelne mellem en 30 W USB-C PSU og en 100 W, hvilket hjælper, når du køre en resistiv last. Du kan heller ikke kombinere dem med USB 3.0 eller DisplayPort, da de ikke har en polaritetsudgang, og de lader dig ikke sende brugerdefinerede beskeder.

En PD-controller vil lade dig gøre meget mere! Uanset om du bruger en ekstern PD-controller som FUSB302B eller måske en PD-controller indbygget i din MCU, vil den lade dig træffe dine egne PD-kommunikationsbeslutninger. Den har alle de modstande, du måtte ønske, og du vil sandsynligvis finde eksempelkode til den opgave, du skal udføre. Vi har allerede gennemgået tilpasset PD-meddelelsesopbygning, både til strømforsyning og DisplayPort-vaskedrift. På et tidspunkt vil vi endda bygge vores egen USB-C PSU med en FUSB302B, så følg med! Når det kommer til MCU'er, er der nogle velkendte STM32 og Cypress mikrocontrollere med PD perifere enheder, og for nylig, CH32X035 er kommet ind på scenen.

Din egen PD-controller vil også lade dig sende DisplayPort-beskeder - udtrække et DisplayPort-output fra alle kompatible porte, eller måske tilbyde DisplayPort på egen hånd. Brug et USB-C-stik, og du har ikke brug for en mux, eller brug en stikkontakt og tilføj en DisplayPort-kompatibel mux – det giver dig mulighed for at udtrække to-sporet DisplayPort og USB 3.0 samtidigt, eller fire-sporet DisplayPort, alt efter hvad du måtte ønske. . Eller du kan bruge en DisplayPort-socket, udelade mux'en og kun få din port til at arbejde i én retning - denne Kinesisk eDP breakout sælger kan bekræfte!

Næste gang gennemgår vi den indre funktion af en USB-C PSU og konverterer derefter en 20 V PSU til en USB-C-kilde med 20 V-understøttelse; vi skal kun bruge FUSB302, et par FET'er og en ekstra 5 V regulator. Det vil ikke kræve meget af os, du vil være i stand til at konvertere dine gamle strømforsyninger til USB-C bærbar strømforsyning, og du vil også få lidt indsigt i, hvordan en USB-C PSU fungerer!

Tidsstempel:

Mere fra Hack A Day