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.
Der Standardweg ist die Überwachung der VBus Leitung. Bei self powered zwingend erforderlich um korrekt auf Hot plug/unplug zu regieren.
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 ...
Gast
#2854597
Bietet die USB-Lib keine entsprechende Funktionalität, die das direkt abfängt?
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 (;
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.