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
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.
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!!
Hab mir den MAX4899E gerade angeschaut. genau das was ich brauche!!! Gibt es momentan verfügbare alternativen?
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.
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.
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
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.
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.