Dies ist eine Zusammenfassung von Spruts Artikel "USB Grundlagen" und von Spruts Artikel "USB-Deskriptoren". In diesen Artikeln sind auch weiterführende Diagramme, Beispiele, Tabellen und Microchip PIC spezifische Informationen zu finden.
Contents
Rollen am USB
- USB-Controller (Host, meistens der PC) ist der Einzige, der die Kommunikation steuert.
- Schreibt daten in einen Puffer und liest daten aus einem Puffer im USB-Gerät
- USB-Gerät (Device) kann keine Kommunikation initiieren, Bedarf melden oder Interrupt setzen.
- beschreibt seine Struktur komplett durch einen Device-Deskriptor
- Configuration Descriptoren
- Interface Descriptoren
- Endpoint Descriporen
- Interface Descriptoren
- Configuration Descriptoren
- Hat eine oder mehrere Konfigurationen zwischen denen der Host umschalten kann.
- Jede Konfiguration definiert ein onder mehrere Interfaces
- für jede in der Konfiguration verfügbare Funktion ein Interface (Massenspeicher, Audiogerät, ...)
jedes Interface definiert einen Endpunkt (In und Out) Nummer 0 für Konfiguration und Datentransfer (max 800 Byte/s) (??? ist der für jedes Interface der selbe ???)
optional weitere Endpunkte (In oder Out) für Datentransfer
- insgesamt (?) maximal 4 Endpunkte für Low-Speed, Max 32 Endpunkte für USB2.0
- beschreibt seine Struktur komplett durch einen Device-Deskriptor
Verbindungsaufbau
- Reset des Busse oder Anstecken des Devices
- Device ist in Konfiguration 0
- funktioniert mit 100 mA
- hat Device-Adresse 0
- hat genau einen Endpunkt mit der Nummer 0
- hält Device-Deskriptoren
- Device meldet Adresse 0
- Host vergibt Adresse 1..127
- Host liest Konfiguration aus Device
- Anzahl der Pufferspeicher (Endpunkte)
- Größe dieser Puffer (max 64 Byte)
- Art der Puffer (In: Host kann lesen, Out: Host kann schreiben)
- Frequenz für das Pollen der In-Puffer
- Strombedarf
- ...
- Host schaltet eventuell Device in alternative Konfiguration mit höherem Stromverbrauch um
Konfiguration
Ein USB Device kann mehrere Konfigurationen haben, jede Konfiguration definiert ein oder mehrere Interfaces, die jeweils ein oder mehrere Endpunkte haben.
Betriebsart von Endpunkten
Control
- Für Steuerungszwecke (Initialisierung oder übertragung von geringen Datenmengen)
- Höchste Priorität
- maximale Fehlerkorretur
- Muss von allen USB-Geräten unterstützt werden
Interrupt
- Für wenig Daten die schnell und regelmäßig zum Host müssen
- z.B. Tastatur
Isochronus
- Für die kontinuierliche Übertragung von großen Datenmengen
- keine Fehlerkorrektur
- z.B. USB-Lautsprecher
- ab USB2.0
Bulk
- Für hohe Datenmengen und Raten
- Datenintegrität ist garantiert
- Reaktionszeit ist nicht garantiert
- z.B. Massenspeicher
- ab USB2.0
Stromversorgung
- Device bekommt maximal 0,5 A (??? laut sprut, aber ist das nicht 1 A an aktiven Hosts ???)
- Bei der Anmeldung am Bus bekommt ein Device nur 0.1 A
- Device wird abgeschaltet wenn es zu viel Strom zieht
Bauteile
Chips von FTDI: USB <-> RS232 oder USB <-> Parallel, benötigen viele externe Bauteile (6 - 10 €)
PIC18Fxx5x von Microchip: echtes USB 2.0 Interface
- Hardware für 16 Endpunkte und Pins für physikalische Verbindung zum Host.
- Interface, Konfiguration und Device muss in Software realisiert werden.
- Durch 16 Endpunkte können maximal 16 Interfaces, also 16 unterschiedliche Funktionen realisiert werden.