Forum: Mikrocontroller und Digitale Elektronik USB Suspend Modus testen


von Nico (Gast)


Lesenswert?

Hallo zusammen,

ich habe ein USB-Gerät entwickelt, das über den USB-Bus versorgt wird. 
Als Controller kommt der C8051F349 von Silabs zum Einsatz und verwendet 
die USBXpress Library / Treiber. Laut USB 2.0 Spezifikation darf das 
Gerät glaub ich im Suspendmodus max. 2,5 mA verbrauchen. Im Normalfall 
braucht es ~15 mA und mit Abschalten der restlichen Elekronik über den 
Spannungsregler (außer uC) noch 12 mA, die durch den Controller selbst 
kommen. Im Falle, dass die USB-ISR das Suspended-Flag erkennt wird die 
Funktion USB_Suspended() aufgerufen, was den Stromverbrauch des 
Controllers nochmals stark reduzieren sollte.

So meine Frage ist nun, wie ich für das Testen mein Gerät am USB-Bus in 
den Suspendmode bringen kann. Bzw wie ich den USB-Bus gezielt dazu 
bringe? Von alleine konnte ich nämlich nicht beobachten, dass dieser 
jemals ausgelöst wird, auch wenn ich alle USB-Geräte abstecke und > 3ms 
nichts tue. Gibt es dafür ein Tool oder irgendeine Möglichkeit?

Wenn ich einfach so die Funktion USB_Suspended() meiner USB-Library 
aufrufe ohne, dass der USB-Bus tatsächlich mein Gerät dazu veranlasst 
tut sich nämlich nichts und die Funktion wird sofort wieder verlassen.
Vielen Dank schon mal.

Gruß
Nico

von Thomas R. (tinman) Benutzerseite


Lesenswert?

unter Windows muss bei dem Treiber häckchen für USB stromsparrmodus 
gesetzt sein und beim Power Profile USB suspend eingeschaltet.

von Guido Körber (Gast)


Lesenswert?

Vorzugsweise testet man das mit einem Macintosh, da bei Windows nie 
genau geklärt ist wie sich die Kombination aus Hardware, BIOS, Windows 
Version und Treiber des Gerätes verhält. Meine praktische Erfahrung ist, 
dass Suspend unter Windows testen schmerzhaft ist.

von Nico (Gast)


Lesenswert?

Ich habe es jetzt auf Hardwareebene gelöst. Ich habe die 
Spannungsversorgung über ein Labornetzteil parallel zum USB-Bus 
realisiert, das Gerät enumerieren lassen und danach den USb-Stecker 
abgezogen. Die Spannungsversorgung bleibt erhalten, aber die Start of 
Frames vom Hostcontroller erreichen den Controller auf dem Gerät nicht 
mehr, sodass nach ~3 ms der Suspendmodus des USB-Controllers ausgelöst 
wurde. Die Gesamte Schaltung samt Controller braucht in diesem Zustand 
gerade mal 0.18 mA und liegt locker innerhalb der Spezifikation =)

von Christian R. (supachris)


Lesenswert?

Also bei unseren USB Geräten klappt das problemlos, indem wir Windows 
(XP) einfach in den Suspend Modus schicken. Da musste überhaupt nix 
eingestellt werden am PC/BIOS/Windows.

von Nico (Gast)


Lesenswert?

Ok, darauf hätte ich natürlich auch kommen können...

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.