USB-C Rollen erkennen: Source, Sink, Host und Device

USB-C Rollen erkennen

Source, Sink, Host und Device

Vom günstigen USB-Lüfter über Smartphones und Notebooks bis hin zu Monitoren und Dockingstationen: USB Type-C hat sich als universeller Anschlussstandard etabliert. Als verdrehsicherer Stecker für Strom und Daten eignet sich der Anschluss für nahezu alles. Aus Nutzersicht ein sehr praktischer Stecker.

Für Hardware- und Embedded-Entwickler bringt USB Type-C jedoch eine neue Herausforderung mit sich. Aus dem Stecker oder der Buchse allein lässt sich nicht mehr erkennen, welche Rolle die angeschlossene Gegenstelle übernimmt.

Dieser Artikel erklärt, wie USB Type-C Rollen definiert und wie wir die Fähigkeiten der Gegenstelle erkennen können.

 

Die "einfache" Welt vor USB Type-C

Vor USB Type‑C war die Rollenverteilung eindeutig. Ein USB-A-Anschluss lieferte immer Strom und konnte zusätzlich als USB-Host (DFP) fungieren. Ein USB-B- oder Micro-B-Anschluss verbrauchte immer Strom und war USB-Device aka. UFP (Upstream Facing Port).

Damit waren Daten-Rolle und Power-Rolle fest miteinander gekoppelt.

Ein Geräteentwickler konnte allein durch den gewählten USB-Anschluss definieren, welche USB-Rolle das Gerät einnimmt. Natürlich mit der damit verbundenen Restriktion, dass ein USB-Anschluss auch nur für eine Rolle verwendet werden konnte.

 

Was ändert sich mit USB Type-C?

USB Type-C trennt erstmals Daten und Power-Rolle und koppelt diese Rollen nicht mehr an die Stecker- / Buchsen-Form.

Ein Smartphone kann beispielsweise:

  • als USB-Device an einem PC laufen (z.B. als Massenspeicher, Webcam, …)
  • als USB-Host einen USB-Stick betreiben
  • Strom beziehen (z.B. von Ladegerät, PC, Power-Bank, …)
  • Strom bereitstellen (z.B. für Digital-Audio-Adapter USB-C auf 3.5 mm Jack)

 

USB Type-C definiert folgende Daten-Rollen:

Rolle Beschreibung Beispiele
UFP (Upstream Facing Port) Verhält sich als USB-Device. Maus, Tastatur, USB-Stick
DFP (Downstream Facing Port) Verhält sich als USB-Host. PC, Notebook
DRD (Dual Role Data) Kann zwischen UFP und DFP wechseln. Smartphone, Tablet

USB Type-C definiert folgende Power-Rollen:

Rolle Beschreibung Beispiele
Source Liefert Energie. Netzteil, Dockingstation, PC
Sink Bezieht Energie. USB-Stick, Digital-Audio-Adapter, USB-Mikrofon
DRP (Dual Role Power) Kann Source oder Sink sein. Notebook, Smartphone, Tablet, Powerbank

Für ein typisches Embedded-System, welches über USB gespiesen wird und darüber auch Firmware Updates erhält werden nur die Rollen UFP und Sink benötigt.

 

Gegenstelle erkennen

Der Schlüssel zur Erkennung der Gegenstelle sind die beiden CC (Configuration channel) Leitungen.

Über diese Leitungen wird erkannt:

  • Ob ein Kabel eingesteckt ist
  • Welche Power-Rolle die Gegenstelle hat (Source, Sink)
  • Wieviel Strom eine Source-Gegenstelle liefern kann
  • Welche Ausrichtung der Stecker hat

 

Zudem können über das USB Power Delivery Protokoll (PD), welches auf der aktiven CC-Leitung läuft noch erweiterte Typ-C Funktionen ausgehandelt werden. Es ist allerdings nicht zwingend nötig USB PD zu unterstützen und insbesondere für ein typisches Embedded-System (UFP, Sink) häufig nicht nötig.

 

Die initiale Erkennung der Power-Rolle geschieht ausschliesslich über pull-up / pull-down Widerstände. Abbildung 1 zeigt, wo diese Widerstände angelegt sind.

 

Abbildung 1 Pull-Up/Pull-Down-Modell der USB-Type-C-CC-Leitungen. Quelle: USB Type-C Specification v1.2, Figure 4-5 Pull-Up/Pull-Down CC Model

 

In einem ersten Schritt werden über die CC-Leitungen die Power-Rollen der angeschlossenen Geräte erkannt. Die Source-Seite stellt dazu pull-up Widerstände (Rp) bereit, während die Sink-Seite pull-down Widerstände (Rd) verwendet. Durch Auswertung der CC-Spannung kann jede Seite erkennen, ob auf der Gegenseite eine Source oder eine Sink angeschlossen ist. Damit ist die grundlegende Rollenverteilung der Verbindung bestimmt.

Hinweis

Bei der initialen Rollenbestimmung gilt zunächst Source → DFP (Host), Sink → UFP (Device). Daher können über die Erkennung der Power-Rollen indirekt auch die initialen Daten-Rollen bestimmt werden. Später mehr dazu, wie diese Rollen gewechselt werden können.

In einem nächsten Schritt misst die Sink-Seite den von der Source-Seite angelegten pull-up Widerstand (Rp) und kann so erkennen wieviel Strom die Source-Seite liefern kann.

Rp DFP-Stromankündigung
56 Kiloohm Default USB power:
  • USB 2.0: 500 mA
  • USB 3.x: 900 mA
22 Kiloohm 1.5 A
10 Kiloohm 3 A

  

Hinweis

Die Stromankündigung erfolgt bei USB Type-C über die CC-Leitungen. Frühere USB-Systeme verwendeten dafür häufig USB Battery Charging 1.2 (BC1.2) über D+ und D−.

Weiter kann über die aktive CC-Leitung die Steckerausrichtung erkannt werden. In häufigen Fällen ist dies nicht direkt relevant. Wenn aber erweiterte Pins des Typ-C Steckers verwendet werden (SBU1/2, SSTXp1, SSTXn1, SSRXn2, SSRXp2) wird die Erkennung der Ausrichtung relevant. Die nicht aktive CC-Leitung wird zu VCONN, darauf wird jedoch in diesem Blog nicht weiter eingegangen.

Neben Source und Sink definiert USB Type‑C weitere Zustände, welche ebenfalls über die CC-Leitungen erkannt werden.

Zustand CC1 CC2 Beschreibung
Unattached offen offen Keine Verbindung
Device angeschlossen Rd offen Device angeschlossen, Orientierung über CC1 erkannt
Device angeschlossen (gedreht) offen Rd Device angeschlossen, Orientierung über CC2 erkannt
Debug Accessory Rd Rd Wird für Entwicklungs- und Debug-Zwecke verwendet. Beispielsweise können D+/D− auf eine UART-RX/TX-Schnittstelle geleitet werden.
Audio Accessory Ra Ra Analoger Audioadapter. Die Stereo-Audiosignale werden über D+/D− übertragen, Mikrofon und Masse über die SBU-Leitungen. Dieser Modus wurde in neueren USB-Type-C-Spezifikationen als deprecated eingestuft.

Hinweis

Da der Analog Audio Adapter Accessory Mode inzwischen als deprecated eingestuft wurde, wird in aktuellen Designs typischerweise USB-Audio verwendet. Soll ein typisches Embedded-System, das bisher ausschliesslich als UFP (Device) und Sink betrieben wurde, einen digitalen USB-Audioadapter unterstützen, muss es in der Regel auch die Host-Rolle (DFP) übernehmen können und wird damit häufig zu einem Dual-Role-Data-Gerät (DRD). Abhängig von der gewünschten Stromversorgung kann zusätzlich die Unterstützung von DRP oder USB Power Delivery erforderlich werden.

 

Erweiterungen durch USB Power Delivery

Wie bereits erwähnt können über das USB Power Delivery (PD) Protokoll erweiterte Typ-C Funktionen ausgehandelt werden.

Mögliche Funktionen:

    • Mehr Leistung: Zum Beispiel kann ein Gerät eine höhere Spannung verlangen (5V, 9V, 15V, 20V)
    • Data Role Swap: Während des Betriebs kann eine Seite eine Anfrage zum Wechsel der Daten Rolle machen. Wird diese von der Gegenstelle angenommen werden die Daten Rollen (UFP ↔ DFP) getauscht.
    • Power Role Swap: Während des Betriebs kann eine Seite eine Anfrage zum Wechsel der Power-Rolle machen. Wird diese von der Gegenstelle angenommen werden die Power-Rollen (Source ↔ Sink) getauscht.

 

Wie bereits erwähnt ist die Unterstützung von USB PD für viele embedded Geräte nicht zwingend. Je nach Anwendungsfall schon, da kann es hilfreich sein zu wissen das ST diese Funktionalität bereits in gewissen Mikrokontrollern integriert hat.

Siehe STM32 solutions for USB Type-C and Power Delivery - STMicroelectronics

 

BC1.2: Warum spielt es heute noch eine Rolle?

Bevor USB Type‑C eingeführt wurde, wurde die Ladefähigkeit oft über USB Battery Charging 1.2 erkannt. Dabei werden die Leitungen D+/D− ausgewertet. Dadurch wird die Unterscheidung zwischen verschiedenen Ports ermöglicht:

    • Standard Downstream Port (SDP)
    • Charging Downstream Port (CDP)
    • Dedicated Charging Port (DCP)

 

In modernen Type‑C-Systemen wird die Stromankündigung primär über die CC-Leitungen vorgenommen. BC1.2 kann jedoch weiterhin relevant sein, insbesondere bei Legacy-Geräten oder Type‑A-zu-Type‑C-Verbindungen.

 

Umsetzung in der Praxis

Die zuvor beschriebenen Mechanismen zur Erkennung von Source, Sink und der Steckerorientierung müssen in Embedded-Systemen nicht zwingend in der Firmware umgesetzt werden. Für diese Aufgaben stehen verschiedene USB-Type-C-ICs zur Verfügung.

Diese Bausteine übernehmen typischerweise die Auswertung der CC-Leitungen und erkennen selbstständig:

    • die Power-Rolle der Gegenstelle (Source oder Sink)
    • die aktive CC-Leitung und damit die Steckerorientierung
    • die angekündigte Stromfähigkeit (Default USB, 1.5 A oder 3 A)
    • spezielle USB-Type-C-Zustände wie Debug- oder Audio-Accessory

 

Die Firmware konfiguriert den Baustein üblicherweise über I²C und liest die erkannten Zustände anschliessend aus. Je nach verwendetem IC können zusätzlich Funktionen wie USB Power Delivery, BC1.2-Erkennung oder Role Swaps unterstützt werden.

Dadurch lässt sich die Komplexität der USB-Type-C-Implementierung deutlich reduzieren. Die Firmware muss nicht selbst die CC-Spannungen auswerten, sondern lediglich auf die vom IC bereitgestellten Statusinformationen reagieren.

 

Fazit

Was früher anhand der Steckerform ersichtlich war, muss bei USB Type-C aktiv erkannt werden. Die CC-Leitungen bilden dabei die Grundlage für die Erkennung von Source, Sink, Host und Device. Wer USB-C-basierte Produkte entwickelt, sollte dieses Zusammenspiel verstehen, auch wenn keine Unterstützung für USB Power Delivery vorgesehen ist.

 

Haben Sie einen konkreten Bedarf im Bereich USB Type-C? Melden Sie sich gerne bei uns: Kontakt

 
 

Pascal Hari

Pascal Hari

BSc BFH in Mikrotechnik
Embedded Software Engineer
 

Über den Autor

Pascal Hari arbeitet seit 8 Jahren als Embedded Software Engineer bei der CSA Engineering AG. Sein Fokus liegt auf der Entwicklung von Embedded-Firmware in C++ auf STM32-Mikrocontrollern. Im Rahmen verschiedener Projekte beschäftigte er sich intensiv mit USB Type-C, insbesondere mit der Erkennung von Gegenstellen sowie der Integration entsprechender USB-Type-C-Lösungen.

Kontaktiere uns