USB-Bus-Hub - mehr als 100 mA pro Gerät?


11

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?

Antworten:


3

Mein Verständnis Ihres Designs ist, dass sich das gesamte Gerät auf einer einzigen Leiterplatte befindet, sich in einem einzigen Gehäuse befindet und über ein einziges USB-Kabel mit dem Host verbunden ist. Sie haben einen Hub auf der Platine integriert, damit beide Geräte mit dem PC kommunizieren können. Die folgende Antwort hängt von diesen Annahmen ab. Wenn es sich um mehrere separate Geräte handelt, die durch abtrennbare Kabel verbunden sind, ändert sich dies.

In diesem Fall schlage ich vor, dass Sie den Hub einfach so konfigurieren, dass er als Hochleistungsgerät aufgeführt wird, und die resultierenden 500 mA auf die gesamte Karte verteilen. Interessanterweise zeigt das Beispielschema für den Ganged-Port von TI die Geräte, die alle miteinander verbunden sind, auch wenn sie ihren Energieverwaltungs-IC verwenden:

Geben Sie hier die Bildbeschreibung ein

Die eingehende 5-V-Stromversorgungsleitung (blau hervorgehoben, da es sich um eines von zwei Netzen handelt, an denen wir in diesem komplizierten Schaltplan interessiert sind) ist mit einem TPS2041-Energieverwaltungs-IC verbunden (eine großzügige Beschreibung, es ist wirklich nur ein FET, der abschaltet, wenn es erkennt 500mA Strom, der durchgelassen wird). Jeder der Eingänge wird jedoch kurzgeschlossen, und jeder der Ausgänge wird ebenfalls kurzgeschlossen und dann an jeden der nachgeschalteten Ports verteilt (das Netz ist rot dargestellt).

Grundsätzlich bieten sie einen Überstromschutz für alle nachgeschalteten Abschnitte in einem einzigen IC. Sie können nicht erkennen, ob sie drei Low-Power-Einheiten (100 mA), eine einzelne High-Power-Einheit oder zwei Low-Power-Einheiten und eine 300-mA-Einheit haben. Alle diese Optionen sind basierend auf diesem Referenzdesign akzeptabel. Sie schrieben:

Gemäß der USB-Spezifikation kann ein Bus-Hub nur eine Einheit pro Downstream-Port bereitstellen, während maximal 5 Einheiten ...

Um Ihre Frage direkt zu beantworten, zeigt dieses Design von Texas Instruments (ein USB-Gruppenmitglied und Hauptimplementierer), dass Sie nur garantieren müssen, dass der Gesamtstrom weniger als 5 Einheiten beträgt.


Um Ihr Problem zu lösen, heißt es in den Regeln (aus dem ausgezeichneten USB in einem kurzen Dokument entnommen ):

Hochleistungsbusbetriebene Funktionen beziehen ihre gesamte Leistung aus dem Bus und können nicht mehr als eine Einheitslast ziehen, bis sie konfiguriert wurden. Danach können 5 Einheitslasten (max. 500 mA) entleert werden, sofern dies in ihrem Deskriptor angefordert wird.

Wenn Sie sicherstellen können, dass Ihre Treiberphase erst dann Strom zieht, wenn das Gerät konfiguriert wurde (was so einfach wie eine zeitgesteuerte Verzögerung im Host-Controller sein kann), können Sie einfach alles miteinander verbinden. Da sich Ihr gesamter Stromkreis auf einer einzelnen Leiterplatte befindet und keine für den Benutzer zugänglichen Downstream-Ports vorhanden sind, können Sie wahrscheinlich auch den TPS2041 weglassen und das System einfach so gestalten, dass in keinem Zustand mehr als 500 mA Strom benötigt werden.

Ein weiterer Vorteil der Aufzählung als Hochleistungsgerät sind verbesserte Eingangsspannungsspezifikationen. Wenn Sie als Gerät mit geringem Stromverbrauch gezählt haben, muss der Host nur 4,40 V am Upstream-Port erzeugen (was an Ihrem Gerät aufgrund des Widerstands des Kabels niedriger ist). Wenn Sie als Hochleistungsgerät aufgeführt sind, garantiert die Spezifikation, dass Sie 4,75 V erhalten, was eher im Betriebsbereich aller von Ihnen verwendeten 5-V-Komponenten liegt.


Vielen Dank für eine hervorragende Antwort. Aber wie konfiguriere ich den Hub so? Benötige ich das externe EEPROM oder binde ich nur den / GANGED-Pin mit Masse (und die anderen Konfigurationspins gemäß dem von Ihnen gesendeten Schaltplan)?
Ladislav

1
Sie müssten! GANGED an Masse und! EXTMEM an 3.3V binden. Das externe EEPROM könnte jedoch nett sein: Andernfalls wird Ihr Gerät als "generischer USB-Hub" auf dem PC angezeigt. Alternativ können Sie wahrscheinlich ein EEPROM mit Ihrem integrierten Mikrocontroller emulieren (konfigurieren Sie eine der I2C-Schnittstellen als Slave). Dann könnten Sie es als "Lautsprechersystemtreiber und Codec-Controller" oder so ähnlich melden.
Kevin Vermeer

5

Ich habe ein Board um diesen Hub herum entworfen.

In meiner Anwendung wurde der Zugriff auf einen FT232 und einen FT245 ermöglicht.

Wenn sich alles auf Ihrer eigenen Platine befindet, würde ich empfehlen, dass Sie die gesamten Überstromschutzsysteme vollständig ignorieren. Wenn etwas auf Ihrer Leiterplatte ausfällt, muss das Ganze funktionieren. Daher ist es eine Art Streitpunkt, das Gerät in die Lage zu versetzen, einen Teilausfall zu behandeln.

In meiner Situation habe ich den TUSB festgeschnallt, um die vollen 500 mA anzufordern und den Überstromschutz zu deaktivieren, und einfach alles direkt vom USB 5.0v ausgeführt. Dies wurde erreicht, indem der Hub gezwungen wurde, sich beim Upstream-Host als eigenständig zu melden.

Ich habe ein paar Boards ohne wirkliche Probleme erstellt, daher scheint es eine perfekt praktikable Strategie zu sein. Es wurde auch mit mehreren verschiedenen Computern verwendet, daher würde ich mich ziemlich sicher fühlen, es so zu verwenden, wie es ist.

Wenn es sich um ein Produktionsgerät handelt, nicht um ein persönliches Projekt oder ein Testgeschirr (was in meinem Fall der Fall ist), ist das natürlich ein ganz anderes Problem.

Geben Sie hier die Bildbeschreibung ein

(Siehe den Hinweis auf dem Schaltplan)


Für das, was es wert ist, können Sie die meisten modernen USB-Anschlüsse oft ohne allzu große Probleme schrecklich missbrauchen. Viele von ihnen können ohne allzu große Probleme viel mehr Strom liefern als die 500 mA, für die sie ausgelegt sind.
Außerdem liefern die meisten von ihnen (alle, die ich getestet habe, abgesehen von einigen Laptops ) gerne die vollen 500 mA, ohne dass ein Gerät überhaupt aufzählen muss.

Dies variiert jedoch von Motherboard zu Motherboard, je nachdem, wie der USB-Host ausgelegt ist. Ihr Kilometerstand kann variieren.


Ja, ich habe darüber nachgedacht, aber wie Sie gesagt haben, variiert dies von MB zu MB. Das Gerät wird nicht zu Tausenden hergestellt, aber ich brauche es, um so interoperabel wie möglich zu sein, damit es auf jedem Computer "einfach funktioniert". Trotzdem danke, praktische Beobachtungen sind genauso wertvoll :).
Ladislav

@Ladislav - Ich glaube nicht, dass es sowieso möglich ist, zu vermeiden, dass die nachgeschalteten Geräte eingeschaltet werden müssen, ohne zumindest etwas gegen die USB-Spezifikation zu verstoßen.
Connor Wolf

Es ist erwähnenswert, dass es trotzdem funktionieren kann , wenn Sie das Gerät anschnallen , um es als busbetrieben zu melden, und sich nur nicht um das Umschalten kümmern. Es könnte sich lohnen, es zu testen. Suchen Sie alternativ nach einem Hub-IC nur für USB-1.1.
Connor Wolf

1

Könnte etwas schmutzig sein: Der TUSB2036 ermöglicht die Auswahl des Downstream-Ports (p3 NPINT1-0 auf 10 eingestellt). Schließen Sie dann Ihr Gerät an zwei (physische) Ports an, damit Sie zwei Einheiten parallel zeichnen können.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.