Erkennung von USB3.0 vs. USB2.0 auf Hardwareebene

Ich entwerfe ein USB-Ladegerät und versuche, mit einfacher Hardware (ICs sind in Ordnung, nur nichts, auf das ich vorzugsweise Firmware hochladen muss) zu erkennen, ob die USB-Buchse, an die ich das Gerät anschließe, vorhanden ist oder nicht USB3.0 oder USB2.0, damit kann ich sicher bestimmen, wie viel Strom ich ziehen kann. Ich verwende einen BQ2439RSER-Chip, um festzustellen, ob die Steckdose, an die ich angeschlossen bin, ein Standard-Downstream-Port, Lade-Downstream-Port oder ein dedizierter Ladeport ist. Ich habe jedoch Probleme, eine einfache Möglichkeit zu finden, um zu überprüfen, ob der Host-Port USB3.0 oder USB2.0 ist oder nicht.

Mein anfänglicher Gedanke war, nach Pullups/Pulldowns an einem der zusätzlichen USB3-Pins zu suchen, die nicht an einer USB2-Buchse vorhanden sind, aber in allen Schaltplänen, die ich mir angesehen habe, haben die Superspeed-Differentialpaare Sperrkondensatoren (siehe Seite 11 von dieses Datenblatt http://www.ti.com/lit/an/slla329/slla329.pdf ). Als nächstes wollte ich nur prüfen, ob der GND_DRAIN-Pin mit dem gemeinsamen USB-GND-Pin verbunden war, aber dieser Beitrag ( USB3 mit weniger Drähten ) besagt, dass GND_DRAIN und GND nicht unbedingt gleich sein müssen.

Ich brauche keines der RX/TX-Paare, um zu arbeiten oder Daten zu übertragen, ich bin nur daran interessiert, den maximal zulässigen Strom zu identifizieren und ihn zu zeichnen. Mir ist bewusst, dass einige Geräte mich auf 100 mA begrenzen, aber meiner Erfahrung nach scheinen diese heutzutage selten zu sein, also bin ich bereit, den Prototyp ohne Aufzählung zu testen (im schlimmsten Fall werde ich einen FT232R-Host hinzufügen). Controller, um sich später darum zu kümmern, aber ich versuche, dies so einfach wie möglich zu halten).

danke für die Hilfe

Welche Geschwindigkeit unterstützt Ihr Gerät? Hat es USB3?
Ihr Gerät ist also das Peripheriegerät? Dann sollten Sie sich vielleicht einen neuen IC als den von Ihnen erwähnten BQ ansehen. Eine, die USB 3.0-Verhandlungen mit hoher Kapazität für Sie durchführt. Ich bin mir sicher, dass es einige gibt, die über Widerstände anstelle einer programmierbaren Version konfiguriert werden können.
Da das Aufladen von USB 3.0 mit einem höheren Strom oder einer höheren Spannung eine Aufzählung erfordert.
Das Gerät führt eigentlich keine Kommunikation durch. Ich muss nur den Porttyp identifizieren, um festzustellen, ob ich sicher 500 mA oder 900 mA aus dem Port ziehen kann. Ich habe ein paar Tage gesucht und keinen IC gefunden, der die Identifizierung des Ladegeräts und Verhandlungen auf USB3.0-Ebene übernimmt. (Bearbeiten: Ja, mein Gerät ist das Peripheriegerät. Es ist völlig dumm, aber es soll nicht mit dem Host sprechen, sondern nur Strom aus dem Vbus beziehen).
@Passant, nein, nicht wirklich. Für einen normalen USB3-Host (der formal als "Hochleistungsanschluss" bezeichnet wird) ist keine Aufzählung erforderlich, und man kann sicher immer 900 mA erhalten. Dies ist die Voraussetzung für einen Host. Das funktionale Gerät hat jedoch keine Rechte, mehr als „eine Einheit“ zu nehmen, bevor es aufgezählt und konfiguriert wird, was 150 mA sind. Die „One Unit“-Regel gilt nur für sogenannte „Low-Power Embedded Hosts“, meist batteriebetriebene Geräte. Aber wer würde versuchen, einen Laptop oder eine Powerbank von einem winzigen Smartphone aus aufzuladen? Und die "Low-Power-Hosts" sollten sowieso den VBUS-Strom begrenzen.
@alichen wir sprechen über Spannungen von nicht 5 V und Ströme von 1 A plus, die eine ausgehandelte Kommunikation erfordern.
@Passerby, Nein. Siehe Abschnitt 11.4.1 der USB3.1-Spezifikationen. "Systeme, die den Betriebsstrom extern beziehen, entweder AC oder DC, müssen in der Lage sein, mindestens sechs Einheitslasten an jeden Port zu liefern." Und weiter: "Hubs, die Betriebsstrom extern (nicht vom VBUS) beziehen, müssen sechs Einheitslasten an jeden Port liefern." Weitere Bedingungen sind nicht geknüpft. Sechsmal 150 mA = 900 mA pro Port auf einem normalen PC oder sogar einem Laptop, wenn er an ein Netzteil angeschlossen ist.
Sie suchen nach dem Nötigsten ...
Dies ist ein "nötiges Minimum" für einen Standard-USB3.1-Anschluss, ja. Um jedoch höhere Ströme zu erhalten, werden die Batterieladespezifikationen (BC1.2) vom BQ2439RSER-Chip verarbeitet. Ohne Typ-C kann die Leistung nur über BC ausgehandelt werden. In ALLEN FÄLLEN ist die USB-Enumeration nicht erforderlich. Alle USB-Spezifikationen sind bewusst von BC oder Power Delivery getrennt. Sie sind nahezu unabhängige Spezifikationen.

Antworten (1)

Normalerweise wird die Port-Fähigkeit nach dem Anschließen und Konfigurieren der USB-Schnittstelle vom Gerät bestimmt. Und dann das Ladegerät entsprechend steuern. Wenn das von Ihnen entworfene Gerät jedoch keinen USB hat, sondern nur ein Ladegerät mit einem USB3-Kabel, können Sie die Rx-Erkennungsfunktion des USB3-Tx-Kanals verwenden, siehe Abschnitt 6-11 der USB3.0-Spezifikationen.

Im Wesentlichen müssen Sie eine 45-Ohm-Terminierung an Tx -> Rx-Drähten bereitstellen. Der Host legt einen Impuls an Tx-/Tx+-Drähte an und überwacht die RC-Antwortzeit. Dieser Impuls kann jedoch auf der Rx-Seite schwer zu erkennen sein. Wenn der Host die Beendigung erkennt, beginnt er mit dem Senden von LFPS-Differenzsignalen, Polling.LFPS, die Bursts mit 10–50 MHz und einer Dauer von 1 us sind, die alle 10 us bis zum Timeout von 360 ms wiederholt werden, da Ihr Gerät nicht antwortet. Sie sollten in der Lage sein, diese Aktivität zu erkennen. Oder vielleicht gibt Ihnen nur jede unterschiedliche Aktivität auf Tx-Leitungen einen Hinweis darauf, ob der Host-Port USB3 oder USB2 ist.

Tatsächlich möchten Sie möglicherweise nur die Rx-Erkennungsaktivität erkennen, ohne die Terminierung bereitzustellen. Nur ein hochohmiger Single-Ended-Empfänger reicht aus, da der Host regelmäßig prüfen muss, ob eine Rx-Terminierung vorhanden ist.

Danke für den Hinweis! Ich werde 6-11 lesen und sehen, ob ich eine Art Umfragelösung finden kann! Ich werde Updates bereitstellen, wenn ich Fortschritte mache
Könnten Sie einen Einblick in das Timing der RX-Detect-Sequenzierung geben? Ich weiß, dass es sich um ein Gleichtaktsignal handeln wird, das an die eingehenden RX+/RX-Leitungen angelegt wird, mit einer Spannung von nicht mehr als 600 mV, aber die Spezifikation geht nicht viel mehr ins Detail. Außerdem, wie oft würde es erneut prüfen, ob eine Terminierung vorhanden ist? Tut mir leid, wenn die Antworten in der Spezifikation stehen, ich habe nachgesehen, aber es ist ein Mammutdokument. Wenn ich das nicht zum Laufen bekomme, kann ich immer eine Terminierung hinzufügen und dann einen kleinen Balun auf die RX-Leitungen legen, um die LFPS-Signale zu erkennen. Nochmals vielen Dank für Ihre Hilfe!
@Platytude, oh Mann, du hast mich gezwungen, mein Oszilloskop einzuschalten ... Der Impuls ist 10 us lang, positiv 400 mV hoch und die Wiederholungsrate beträgt etwa 5 ms. Edge ist etwa 50 ns über ~ 2 m Kabel. Ich schicke Ihnen eine Rechnung...
Hahahaha, sehr geschätzt, das sollte alles sein, was ich brauche