www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik USB Suspend Modus testen


Autor: Nico (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Thomas R. (tinman) Benutzerseite
Datum:

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

Autor: Guido Körber (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Nico (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 =)

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Nico (Gast)
Datum:

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.