USB device-erkennung

Gast #7026291
Lesenswert?

Hallo,
Wie erkennt der USB-Host, das ein neues USB-Device eingesteckt wurde?
Ich habe am Oszi gesehen, die Spannung an den differienziellen Leitungen 
0V sind, solange kein gerät angeschlossen wurde. Wird eines eingesteckt, 
dann wird die Spannung kurz auf High gezogen (3,3V?) und dann beginnt 
die Übertragung.
Wer aber beginnt die Übertragung, das Device oder Der Host?
Persönliche Seite #7026322
Lesenswert?

Das USB-Gerät enthält einen PullUp auf der D+ oder D- -Leitung bei 
FullSpeed bzw. LowSpeed. Der PC erkennt den Stromfluss auf der Leitung 
und schaltet das Gerät ein. Entfernen des Pullups wird als Trennen des 
Geräts erkannt. Manche Mikrocontroller mit USB-Peripherie haben den 
Pullup integriert und können ihn durch Software abschalten, sodass man 
das Gerät "virtuell abstecken" kann. Bei Controllern ohne integrierten 
PullUp kann man das extern mit einem FET und zusätzlichem GPIO 
nachbilden:

https://www.mikrocontroller.net/articles/Datei:Olimexino_STM32_USB.png

Bei HighSpeed-USB wird der Pullup IIRC ebenfalls abgeschaltet, aber 
HS-Geräte werden auch initial als FullSpeed-Geräte verbunden und 
schalten dann um.

ferrit schrieb:
> Wer aber beginnt die Übertragung, das Device oder Der Host?

Alle Kommunikation geht vom Host aus. Der Host fängt normalerweise damit 
an, den Device-Deskriptor abzufragen. Wenn das Gerät darauf nicht 
reagiert - z.B. weil zwar ein PullUp angeschlossen ist aber gar kein 
Mikrocontroller mit USB-Peripherie - erkennt der Host ein Fehler (z.B. 
Fehlermeldung unter Windows).
Gast #7026483
Lesenswert?

Ok.. ursache unklar aber mein USB Device konnte nun vom USB-Host 
gefunden werden, ich musste zusätzlich einen 1,5k Widerstand von D- zu 
GND ziehen und dann wird mein USB device ordnungsgemäß als mit Fullspeed 
erkannt.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren