Ich versuche, ein Host-USB-Gerät auf einer Platine mit einem Endpunkt-USB-Gerät auf einer anderen Platine zu verbinden, aber ich muss die Verbindung zwischen den beiden Geräten als serielle (UART) Verbindung zwischen den beiden Platinen senden. Die USB-zu-Seriell- und Seriell-zu-USB-Konverter würden auf den einzelnen Platinen untergebracht, die die jeweiligen Host- und Endpunktgeräte beherbergen.
Ich brauche das Host-USB-Gerät, um das Endpunktgerät als USB-Endpunkt zu erkennen, genauso wie bei einer direkten USB-Verbindung.
Ist es möglich, diese Arbeit so zu bekommen, wie ich sie brauche? Ich verstehe, dass die Kommunikationsgeschwindigkeit viel langsamer wäre als bei herkömmlichem USB. Ich habe FTDI-Konvertierungschips gesehen, die behaupten, mit bis zu 3 MBaud zu arbeiten (wie dieser hier: https://www.ftdichip.com/Support/Documents/DataSheets/ICs/DS_FT234XD.pdf ), und ich würde denken, dass ~ 2 MBaud ausreichen würden für das, was ich tue. Der Chip, den ich verlinkt habe, scheint ausschließlich für die Konvertierung von USB-Host-Geräten in den seriellen Ausgang zu sein. Ich war nicht so erfolgreich darin, ein Gerät zu finden, von dem erwartet wird, dass es in die entgegengesetzte Richtung funktioniert (Seriell-zu-USB-Endpunkt).
Hat jemand so etwas schon einmal erfolgreich gemacht oder kann mir vielleicht sagen, dass dies aus Gründen X, Y, Z unmöglich ist?
Nein, wie beschrieben wird das nicht funktionieren. Herkömmliche FTDI-USB-Seriell-Konverter können nur die USB- Geräterolle übernehmen . Sie können Ihr USB- Gerät der Gegenseite nicht hosten . Während Sie also möglicherweise einen am nahen Ende verwenden können, benötigen Sie am fernen Ende etwas anderes.
Es gibt jedoch eingebettete USB-Hosts, die Sie möglicherweise verwenden können. Dies sind letztendlich alles Mikrocontroller - einige wie Viniculum / Viniculum II von FTDI werden speziell für diese Art von Zweck verkauft (aber können Ihren genauen Anforderungen entsprechen oder auch nicht) und andere sind Allzweckgeräte, die definitiv für diese Aufgabe angepasst werden können. vielleicht so etwas wie ein Kinetis KLZ25/KLZ26 (alias Teensy-LC), ein STM32 mit USB-Host-Fähigkeit usw. Oder sogar ein kleines eingebettetes Linux-System, obwohl dies die Komplexität und den Stromverbrauch erhöht, einen heiklen Dateisystemstatus einführt usw.
Unabhängig von der Hardware besteht die erste Aufgabe darin , die genauen USB - Operationen herauszufinden , die von dem Gerät der Gegenseite erwartet werden . Sie müssen dafür effektiv einen benutzerdefinierten USB-Treiber für einen eingebetteten Host entwickeln oder entscheiden, dass es bereits einen in Linux gibt, den Sie verwenden können, indem Sie das andere Ende Ihrer Brücke um ein eingebettetes Linux-System bauen. Oder Sie erfinden eine Art USB-Proxying-Schema und entwickeln einen benutzerdefinierten Treiber oder Treiber-Interceptor auf dem Near-End-Betriebssystem, der über serielle Proxys weiterleitet.
Beachten Sie, dass Dinge wie USB-über-Glasfaser-Extender existieren. Das entspricht nicht unbedingt Ihrer angegebenen Anforderung des Proxyings über seriell, aber es passt möglicherweise gut zu Ihrem tatsächlichen Bedarf und würde Ihnen viel Entwicklungszeit ersparen. In diesem Zusammenhang könnten Sie vielleicht den gesamten Computer an den entfernten Standort verlegen und über ein Netzwerk remote mit ihm interagieren.
BeB00
brhans
Chris Stratton
brhans
Chris Stratton