Forum: Mikrocontroller und Digitale Elektronik Einfache USB Upstream Port Umschaltung


von greenhorn (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

Also eigentlich möchte ich dieses Ding nachbauen:
https://neets.io/products/switching/neets-usb-switch-2

Ich möchte zwei USB Upstreams auf einen Downstream umschalten können.
Port 2 (PC) ist immer angeschlossen. An der Typ-B Buchse hängt 
beispielsweise ein USB-Stick, welcher auch Dauerhaft mit +5V vom Port 2 
versorgt wird.
Im Normalbetrieb ist Port 2 mit dem USB-Stick verbunden.
Sobald an Port 1 beispielsweise ein Laptop angeschlossen wird (Speisung 
+5V_1 kommt), schaltet der Switch um, Port 2 ist "stillgelegt", Port 1 
ist mit dem USB-Stick verbunden.
Die Schaltung ist nur mal eine ganz ganz grobe Idee und muss natürlich 
noch verfeinert werden.
Funktioniert das rein konzeptionell überhaupt?
Wie schauts mit PE und GND aus. Ich habe die einfach mal 
zusammengehängt. Ob das klug ist, weiss ich nicht.. Dafür fehlt mir das 
Know-How.

Danke für eure Rückmeldungen.

von Florian S. (vatterger)


Lesenswert?

Ich habe etwas Bedenken, dass dein USB-Stick das Wechseln zwischen den 
Geräten ohne Reset via Power-Cycle unter Umständen nicht sauber 
mitmacht.

Das kannst du aber relativ einfach ausprobieren, indem du den Stick 
extern mit 5V versorgst und die Datenleitungen ganz stumpf per Hand 
durch Umstecken umschaltest. Wenn das auch nach X Versuchen überhaupt 
nicht hinhaut, ist die Chance hoch, dass das auch mit dem sauber 
schaltenden 2:1 USB-Mux nicht läuft. Dann müsstest du noch eine 
Schaltung einbauen, die das Anstecken/Entfernen des Geräts an Port 1 
erkennt und dem USB-Stick dann kurz den Strom entzieht, während die 
Datenleitungen umgeschaltet werden, das geht dann auf jeden Fall gut.

Ich würde dir empfehlen, bei den USB-Datenleitungen im Schaltplan 
Netzlabel anstatt der langen, sich überkreuzenden Leitungssegmente zu 
nehmen, das ist übersichtlicher und weniger fehleranfällig.

von Guido K. (Firma: Code Mercenaries GmbH) (thebug)


Lesenswert?

Nö, der Reset wird kein Problem, der Host bekommt ja mit, dass das Gerät 
getrennt wird, bzw. neu auftaucht und schickt dann einen Reset über den 
Bus.

Was aber in die Hose gehen wird ist das Datensignal. Ab SuperSpeed (USB 
2.0) müssen die Leitungen z.B. sauber gleich lang sein, sonst wird das 
problematisch. Bei USB 3 ist dann ganz der Ofen aus mit "ich bau mir mal 
was zusammen", das ist weit im Hochfrequenzbereich.

von usbee (Gast)


Lesenswert?

Du verwechselst da was. SuperSpeed sind die 5 GBit/sec von USB3.x

Was Du meinst, ist "high speed" mit 480 MBit/sec. Das ist zwar schon 
recht flott, aber auch nicht unendlich kritisch.

Der TS3USB30E https://www.ti.com/lit/ds/symlink/ts3usb30e.pdf ist für 
diese Datenrate ausgelegt, wenn man sich beim Layout nicht zu blöd 
anstellt, dann ist das noch handhabbar.

Von Hand auf dem "Breadboard" wird das nix, dafür sorgt schon die 
Bauform des Bausteins selbst.

von Florian S. (vatterger)


Lesenswert?

> Nö, der Reset wird kein Problem, der Host bekommt ja mit, dass das Gerät
> getrennt wird, bzw. neu auftaucht und schickt dann einen Reset über den
> Bus.

Wie gesagt: beim Host habe ich da auch kaum bedenken, der bekommt die 
Verbindung/Trennung eh nur über die Datenleitungen mit. Ob das 
angeschlossene Gerät den Soft-Reset sauber mitmacht war doch die Frage! 
Selbst wenn das irgendwo in der USB-Spec geregelt ist, heißt das noch 
lange nicht, dass die Firmware auf dem angeschlossenen Gerät das 
schafft. Soll ja vorkommen, dass Geräte nicht immer ganz standardkonform 
arbeiten und rumzicken.

Siehe hier: https://unix.stackexchange.com/a/10466
Und hier: https://askubuntu.com/q/1059429/921112
Und noch einer: https://superuser.com/a/1293624/520586

Da USB-Sticks Massenware sind, ist es aber auch gut möglich, dass dieser 
es schmerzlos mitmacht, muss OP halt mal ausprobieren.

: Bearbeitet durch User
von greenhorn (Gast)


Angehängte Dateien:

Lesenswert?

Erstmals besten Dank für eure Rückmeldungen.
Es hat etwas gedauert, aber heute hatte ich mal wieder Zeit daran zu 
arbeiten. Den Tipp mit dem switchen des Powers (neben den 
Datenleitungen) habe ich einfliessen lassen.

Neues PDF im Anhang (EntwurfV2). Den Teil um den USB-Switch habe ich mal 
versuchsweise im Eagle geroutet (siehe USB-Layout.png).
Die Längenkompensation scheint mir bei der Anordnung der Stecker etwas 
überflüssig, habe mir das Meander-Tool von Eagle aber trotzdem angetan.

Kurze Erklärung zur neuen Schaltung:

Port 2 (+5V_2) ist dauerhaft angeschlossen und speist auch in jedem Fall 
den Slave!

Die 5V des "priority" Ports (Port 1, +5V_1) wird über IC101 entprellt 
und bildet das Signal !EN_P1 / EN_P2.

Das Signal geht auf eine Flankenerkennung, welche im Falle eines 
Wechsels (Pos & Neg) ein längeres High am Signal !SLAVE_EN (Low-Aktiv) 
herbeiführt.

Dieses längere High deaktiviert die Speisung zum Slave für einige 
Sekunden.

Ich muss den Digitalteil sicher noch durchsimulieren / überdenken. Evtl. 
hats da noch einen Fehler drin, oder die Anzahl Gatter lässt sich noch 
reduzieren. Ebenso die Dimensionierung der RC-Glieder ist eher mal so 
Pi*Daumen.

Folgendes Szenario bereitet mir aber etwas Sorgen:
Sobald Port 1 eingesteckt wird, schaltet der Switch über den Pin S um. 
Zu diesem Zeitpunkt hat der Slave noch Power.
Also wird der Host am Port 1 den Enummerierung-Prozess anwerfen.
Fast gleichzeitig stirbt aber der Slave, da dessen Speisung für mehrere 
Sekunden gekappt wird. Was ist eure Meinung dazu?

Besser wäre doch immer zuerst die Speisung (vom Slave) kappen, dann den 
Switch umschalten und dann die Speisung wieder zu aktivieren oder?

Gruss

von greenhorn (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,
Bitte ignoriert meinen letzten Beitrag, ich konnte unterdessen die 
Schaltung verbessern. Neues PDF im Anhang.

Es gibt eine Flankenerkennung (+-), sobald der Port 2 ein- oder 
ausgesteckt wird.

Diese triggert zwei Pulse:
!PWR_EN:
Sobald die Flanke detektiert wird, wird die Speisung des Slaves 
ausgeschaltet, dies für 2 Sekunden.

SEL_TRG:
Hierbei handelt es sich um ein 1000ms Low-Puls, welcher nach Ablauf 
(steigende Flanke) ein Flip-Flop triggert. Das Flip-Flop speichert zu 
diesem Zeitpunkt dann das Select-Signals des USB-Switch (IC109).

Es wird also immer zuerst die Speisung des Slaves ausgeschaltet, dann 
der Select-Pin von IC109 bedient, und anschliessend wird dann die 
Slave-Speisung wieder eingeschaltet.

Bezüglich Power-Up, wird nach einer längeren Zeit zuerst das FF in den 
Reset-Zustand versehen (Power 1 aktiv), und nach einer erneuten 
Verzögerung wird der USB-Switch (IC109) aktiviert.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.