Ich möchte eine ganz bestimmte Frage zur USB-Energieverwaltung stellen.
Zunächst werde ich das Design meines Geräts skizzieren. Es ist ein symmetrischer Signalleitungstreiber mit einem eingebauten Audio-Codec für mein DIY-Lautsprechersystem. Das Gerät ist intern in zwei meist unabhängige Blöcke unterteilt: den Leitungstreiber mit steuernder MCU und den Audio-Codec (TMs PCM2706). Beide benötigen eine USB-Datenverbindung (über einen FT232R für den Treiberblock) und das gesamte Gerät sollte über einen Bus mit Strom versorgt werden. Die beiden Blöcke werden durch einen USB-Hub-Chip miteinander verbunden, wodurch eine einzige Uplink-USB-Verbindung zum PC entsteht. Ich erwarte einen Verbrauch der Treiberstufe zwischen 100 und 200 mA (definitiv mehr als eine Ladeeinheit).
Hier kommt das Problem: Gemäß der USB-Spezifikation kann ein Bus-Hub nur eine Einheit pro Downstream-Port bereitstellen, während maximal 5 Einheiten vom Upstream gezogen werden. Ich würde gerne wissen, was der Hub tun würde, wenn ich zwei Einheiten über den FT232 für die Treiberphase anfordern würde. Das 5-Einheiten-Upstream-Limit wird nicht erreicht (1 Einheit für den Hub, 1 Einheit für den Codec und zwei für den Treiber), sodass der Computer diesen Strom physisch liefern kann.
Für den Hub-Chip habe ich http://www.ti.com/lit/ds/symlink/tusb2036.pdf überprüft . Es gibt eine Option für den "ganged" Stromversorgungsmodus. Wäre dies eine Hilfe? Oder würde der Chip es einfach ablehnen, dem Fahrer zwei Einheiten zu gewähren? Und in diesem Fall gibt es eine schmutzige Problemumgehung?
Mir ist die Anforderung bekannt, dass Hochleistungsgeräte während der Aufzählung auch maximal 100 mA ziehen müssen. Dies ist kein Problem, da der FT232 den Treiber unmittelbar nach der Aufzählung einschalten kann. Der Hub schaltet die Bühnen auch unabhängig voneinander ein.
Hoffe ich habe mein Problem klar genug formuliert und danke für deine Zeit im Voraus :)
AKTUALISIEREN:
Ich habe mehr über den TUSB2036-Chip recherchiert. Der Überstromschutz kann über den / OCPROT-Pin ausgeschaltet werden. Der Hub meldet dann dem Root-Controller, dass er keinen Überstrom erkennen kann. Das Datenblatt enthält eine Warnung, dass die USB 2.0-Spezifikation einen OC-Schutz erfordert - dies ist für mich nicht wichtig, ich benötige nur 1.1 Full-Speed. Der Root-Hub des PCs sollte dann IMO 500 mAm für das gesamte Gerät liefern. Somit könnte ich den FT232 des Treibers so einstellen, dass er nur 100 mA benötigt, und der Hub würde nie wissen, ob ich den Grenzwert überschritten hätte (natürlich unter Berücksichtigung der 500 mA vom PC). Kann jemand sagen, ob das funktionieren könnte?