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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.