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
unter Windows muss bei dem Treiber häckchen für USB stromsparrmodus gesetzt sein und beim Power Profile USB suspend eingeschaltet.
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.
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 =)
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.