Forum: Mikrocontroller und Digitale Elektronik "Managbarer" USB HUB


von Hanna (Gast)


Lesenswert?

Hallo zusammen,

ich muss vielleicht etwas weiter ausholen, um mein Problem zu 
beschreiben.

Aktuell arbeite ich an einer Steuerung für ein Gerät, welches aus drei 
Grundplatinen besteht, die über UART und SPI miteinander vernetzt sind.
Zwei der Platinen besitzen einen STM Cortex M4 mit integriertem USB und 
integriertem DFU Bootloader. Die dritte Platine besteht aus einem 
Grafikchip BT816 mit extern angeordnetem Flash Speicher zum Speichern 
der Bilddaten. Mittels eines USB2QSPI Adapters ist der Flash Speicher 
auch über USB "ansprechbar".
Das Gesamterät selbst soll nur "EINEN" USB Anschluss besitzen.

Jetzt mein "Wunschdenken":
µC1,µC2 und der Flash Speicher werden mit einem USB Hub (am Besten SMD) 
verbunden, der Ausgang des USB Hubs mit dem an der Geräterückwand 
angeordneten "zentralen USB Anschluss" verbunden.

Um den Kunden jetzt nicht zu verwirren wäre es optimal, über digitale 
Eingänge oder ein Busprotokoll entscheiden zu können, welcher der drei 
USB Teilnehmer gerade mit der zentralen Schnittstelle verbunden wird.
So kann z.B. immmer standardmäßig nur der erste µC verbunden sein und 
Prozesswerte liefern, sollte ein Firmwareupdate an µC2 oder ein 
Grafikupdate am Flash Speicher erfolgen, könnte man den Hub 
dementsprechend umschalten.

Alle drei Geräte dauerhaft auf der Schnittstelle zu belassen halte ich 
für nicht praktikabel, weil dann die Kunden doch den falschen VCP für 
die Anwendung auswählen etc.

Hat jemand von euch schonmal sowas gemacht und hat ggf. einen (am Besten 
auch noch verfügbaren Chip) der genau das erfüllt?

Für alle konstuktiven Ideen schonmal vielen Dank!!!


Lg
Hanna

von Andre (Gast)


Lesenswert?

Also grundsätzlich gibt es sowas wie USB Multiplexer, z.B. MAX4899E

Hanna schrieb:
> über digitale
> Eingänge oder ein Busprotokoll

Das wird jetzt schwieriger: Wer bedient die Eingänge?

Wenn die Update Software umschalten soll, muss sie irgendwie mit dem 
Multiplexer kommunizieren können. Während der die USB Verbindung trennt.

Wenn alle Controller stattdessen an einem Hub hängen, fallen mir spontan 
zwei Ideen ein: Der Haupt-Controller bekommt ein "Update-Modus 
aktivieren" Kommando und aktiviert dann die USB Ports der weiteren ICs, 
alle Schnittstellen werden sichtbar und der Updater sucht sich die 
richtigen raus (VID/PID).
Im Normalbetrieb sind die anderen Schnittstellen einfach nicht aktiv.

Oder du versuchst es über das Power Management vom USB Hub IC. Es gibt 
einige, die für jeden Downstream Port die 5V getrennt freigeben können. 
Das nimmst du als "enable" Signal für die restlichen Controller. Hier 
wird die Konfiguration etwas schwierig, weil der Hub irgendwie mit 
deaktivierten Ports starten müsste. Keine Ahnung ob man die so verbiegen 
kann, denn normalerweise schaltet der Host nur zum Strom sparen bewusst 
ab.
Es gab ein Projekt, da hat jemand über diese Steuersignale einen ISP 
Programmer gebaut. Wie man das aber im Detail anspricht, keine Ahnung.

von Hanna (Gast)


Lesenswert?

Hallo Andre,

danke für deine Antwort.

Zu deiner Frage: Wer Steuert das? Der erste µC steuert auch den VT816 
und ein grafisches Display an. Dort könnte man ein Menü hinterlegen, 
heißt also µC1 könnte über Ports oder Bus am USB Hub "selektieren". Die 
Methode mit der Spannungsversorgung schaue ich mir gleich nochmal an. 
Danke!!

von Hanna (Gast)


Lesenswert?

Hab mir den  MAX4899E gerade angeschaut. genau das was ich brauche!!!

Gibt es momentan verfügbare alternativen?

von Usbus (Gast)



Lesenswert?

Hanna schrieb:
> Hab mir den  MAX4899E gerade angeschaut. genau das was ich
> brauche!!!
> Gibt es momentan verfügbare alternativen?

Pollin verkauft:

USB 3.0 Hub RED4POWER R4-U004B
Passiver 4-port USB 3.0-Hub mit Schalter pro USB-Port und 
Anschlussmöglichkeit für ein externes Netzteil.

von Andre (Gast)


Lesenswert?

Hanna schrieb:
> µC1 könnte über Ports oder Bus am USB Hub "selektieren".

Ok, wusste nicht, dass das so möglich ist.
Du musst dann nur sicher stellen, dass wenn uC 1 im Reset/Bootloader 
ist, die USB Verbindung immer zu 1 geschaltet wird (Pull-up/down o.ä.).

Momentan verfügbare Multiplexer musst du dir selber raus suchen, ich bin 
da momentan auch nicht so im Thema.
TI, Analog Devices, Onsemi und NXP haben solche Schalter auch im 
Sortiment. Vielleicht findest du da was.

von Andreas H. (ahz)


Lesenswert?

Hanna schrieb:
> Hab mir den  MAX4899E gerade angeschaut. genau das was ich brauche!!!
>
> Gibt es momentan verfügbare alternativen?

Gibt es bei Mouser ab Lager: 
https://www.mouser.de/c/semiconductors/switch-ics/usb-switch-ics/?m=Maxim%20Integrated&series=MAX4899E

/regards

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Das ist viel zu kompliziert - Softwareproblem mit Hardware lösen...

Hanna schrieb:
> Alle drei Geräte dauerhaft auf der Schnittstelle zu belassen halte ich
> für nicht praktikabel, weil dann die Kunden doch den falschen VCP für
> die Anwendung auswählen etc.

Das Problem lässt sich viel leichter lösen. Entweder gar keinen VCP 
sondern "direkt" USB verwenden und von der PC-Software aus automatisch 
per VID/PID den richtigen Port auswählen, oder in die USB-Serial-Adapter 
eine bestimmte Seriennummer einprogrammieren und den richtigen VCP daran 
erkennen. Vermeidet nebenbei auch Konflikte mit völlig anderen 
angeschlossenen VCPs.

von Nazeem (Gast)


Lesenswert?

Womit das sicher geht, sind die Hubs von SMSC (jetzt Microchip).

Also USB2514, als Beispiel. Da kann man per I2C einzelne Ports abdrehen. 
Wir nutzen das um "hochqualitativer" Zukaufhardware den virtuellen Tritt 
zu verpassen, wen sie mal wieder hängt (Powercycle).
Man kann auch Ports auf Fullspeed limitieren und dergleichen mehr.

Ich vermute, dass das gute Betriebssystem auch ohne I2C können, weil das 
irgendwo in der USB-spec steht. Portswitches vorausgesetzt. Aber als 
Hardwarefuzzi kann ich das nicht mit Sicherheit sagen.

Das sollte so oder so ähnlich eigentlich so zielich jeder Hub-Chip 
beherrschen.

von Thomas Z. (usbman)


Lesenswert?

Niklas G. schrieb:
> Das ist viel zu kompliziert - Softwareproblem mit Hardware lösen...

das sehe ich auch so, zumal ja nicht sichergestellt ist dass der 
Anwender vor dem Update nicht den falschen Controller im Menu 
eingestellt hat. Man muss also trotzdem irgend eine Art von Sicherung 
zusätzlich einbauen.

von Nazeem (Gast)


Lesenswert?

Thomas Z. schrieb:
> Niklas G. schrieb:
>> Das ist viel zu kompliziert - Softwareproblem mit Hardware lösen...
>
> das sehe ich auch so, zumal ja nicht sichergestellt ist dass der
> Anwender vor dem Update nicht den falschen Controller im Menu
> eingestellt hat. Man muss also trotzdem irgend eine Art von Sicherung
> zusätzlich einbauen.

Haha, also ein guter Teil meines täglichen Brotes ist Würgarounds für 
Softwareprobleme in Hardware einzubauen.

Denn die Software wird in einer anderen Abteilung programmiert, und es 
ist immer "total schwierig" mit den "nicht vorhandenen Ressourcen" da 
was zu ändern. Außerdem "muss man das Testen" und das ist "viel zu 
aufwändig" alternativ "kann man das 2023 eintakten".
Noch schlimmer ist Zukaufsoftware. "Das können wir schon ändern, aber 
das kostet 20000€". "Das ist dann 2025 fertig".

Willkommen im Jahr 2022.

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.