USB Suspend Modus testen

Gast #1863243
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
Gast #1863264
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.
Gast #1863443
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 =)

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