Forum: Mikrocontroller und Digitale Elektronik USB Verbindungsverlust erkennen?


von Franz P. (franz_p)


Lesenswert?

Hallo,

ich verbinde ein STM32 per USB mit dem PC. WinUSB Treiber auf PC Seite 
und leicht abgewandelte vom Demoprojekt auf dem Mikrocontroller.

Leider habe ich ein kleines Problem. Wie erkennt die Firmware, dass 
jemand das USB Kabel abgezogen hat?
Bisher schaue ich nach dem SOF Frame, der jede Millisekunde kommen 
müsste.
Wenn der für paar Sekunden ausbleibt, ist das Kabel halt ab und ich kann 
drauf reagieren.
Leider hab ich nun hier ein USB Hub, der sich selbst scheinbar schlafen 
legt oder so und die SOF Frames nicht mehr weiter leitet.
Welche Alternative hab ich nun?
Was sieht die Norm normalerweise vor?

Danke

PS: Notlösung ist bisher, regelmäßig den PC was senden lassen.

von Christian R. (supachris)


Lesenswert?

Der Standardweg ist die Überwachung der VBus Leitung. Bei self powered 
zwingend erforderlich um korrekt auf Hot plug/unplug zu regieren.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Das Problem hierbei dürften schlampig designte* self-powered Hubs sein, 
wenn so etwas zwischen PC und Gerät hängt und die Verbindung zwischen PC 
und Hub gekappt wird, wird VBus am Gerät weiterhin vom Hub versorgt.


*) also praktisch alle ...

von Micha (Gast)


Lesenswert?

Bietet die USB-Lib keine entsprechende Funktionalität, die das direkt 
abfängt?

von Franz P. (franz_p)


Lesenswert?

Rufus schildert leider eines der Probleme. Ich glaube aber, dass ein 
Benutzer nicht den Hub abzieht sondern mein Gerät.
Somit ist VBUS überwachen wohl die einzig richtige Lösung.
Leider ist die Hardware bereits fest und vom Entwicklungskit abgenommen.
Einzig eine Reset Steuerung hab ich. Im Nächsten Design wird dies 
berücksichtigt.

Vielen Dank (;

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.