Hallo,
folgendes Problem beschäftigt mich:
Ein zu entwickelndes Peripheral-Gerät (Kamera) soll über USB2 zum Einen
an einen Windows-Host, und zum Anderen (alternativ) an ein uC-basiertes
Bedien/Anzeigegerät (ebenfalls noch zu entwickeln) angeschlossen werden.
Wäre nur der erste Fall zu lösen, würde ich einen FT2232 in der Kamera
verwenden, und auf dem PC den zugehörigen Windows-Treiber/API. Habe ich
vor einiger Zeit schon mal mit dem FT245 gemacht, soweit kein Problem.
Im zweiten Fall (mit dem selbstgebauten Host) taucht das Problem auf,
dass der FT2232 offenbar als Black-Box designt ist, und ohne den
Hersteller-Treiber keine Funktion möglich ist. Zumindest konnte ich
keine Doku des Innenlebens (Register etc) finden. Der Anschluss an den
selbstgebauten Host bzw. die dann selbst zu implementierende
Kommunikation mit dem FT2232 scheint daher nicht möglich zu sein. (??)
Alternativ zum FT2232 könne man z.B. den ISP 1582 nehmen, zu dem es eine
Appnote für die Programmierung gibt. Hier besteht also eine gewisse
Aussicht, das Teil vom selbstgebauten Host her erfolgreich anzusprechen.
Dummerweise scheint es für den ISP1582 aber keinen Windowstreiber zu
geben! (??)
Hab ich das Dilemma soweit richtig kapiert, oder was übersehen?
Hat jemand eine gute Idee, mit welchem USB Per.Controller sich diese
Doppel-Kommunikation bewerkstelligen läßt?
( Die Hintertür, für die Kommunikation Kamera / Bediengerät eine eigene
serielle Verbindung unabhängig vom USB zu stricken, wollte ich vorerst
mal noch geschlossen lassen :-))
Danke schonmal für eure Ideen!
Gruß
Martin
Den FT232 (oder 2232) kann man durchaus auch mit nicht-PC-USB-Hosts
ansteuern.
Einerseits kann das von sich aus der USB-Host-Controller VNC1L
("Vinculum") von FTDI, andererseits gibt es für Linux-Systeme
Treibersourcen für die FTxxx-Bausteine.
Den Linux-Treibersourcen kann man alle erforderlichen Informationen
entnehmen, die nötig sind, um mit einem eigenen USB-Host mit den
FTxxx-Bausteinen zu kommunizieren.
Andererseits, wenn Du Deinen Aufbau (Deine Kamera) mit einem µC
verbinden willst, könntest Du den FT2232 auch umgehen und direkt mit der
seriellen Schnittstelle des Aufbaus kommunzieren.
Kannst ja den Cypress FX2 benutzen. Der hat klar definierte Endpoints
(die du selbst festlegst) und kann von jedem Host problemlos
angespreochen werden. Geht zum Beispiel unter Windows und Linux spielend
einfach mit der LibUSB. Ansonsten gäbe es für die FTDI Chips noch die
Möglichkeit, einen Vinculum Host Controller in das "Bediengerät"
einzubauen. Der kann mit den FTDI Chips natürlich.
Hallo Rufus & Christian,
danke für eure schnelle und gehaltvolle Rückmeldungen!
* Vinculum: scheidet leider aus, da offenbar kein High-Speed möglich
* Linux-Treibersourcen: hab ich gefunden, Danke für den Tip! Da ich mich
mit Linux überhaupt nicht auskenne, und mit
Windows-Treiberprogrammierung auch nicht, dürfte das ein harter Kampf
werden... aber wenigstens ein Ansatz!
* Cypress FX2: muss ich mir mal näher anschauen... danke!
* Direkte serielle Verbindung: Das wäre halt die "Notlösung" im Fall
einer Kapitulation vor dem USB :-)) Da ich so zwischen 20 und 80 MBit/s
übertragen muss, wäre hier ein LVDS Link (synchron oder mit
selbsttaktenden Daten) angesagt. Der HW-Aufwand wäre durchaus
überschaubar, da sich ohnehin auf beiden Seiten FPGAs befinden werden.
Die Konfiguration des FT2232 scheint allein über das MProg Tool zu
erfolgen, ergänzt durch ein paar Kommandos während der Initialisierung
über den Treiber, um vom asynchronen zum schnellen synchronen Interface
umzuschalten. Leider lese ich dabei was von BULK Mode! Eigentlich
bräuchte ich den Isochronen Mode für garantierte
Übertragungsrate/Latenzzeit...
Da werde ich wohl nochmal grundlegend in mich gehen müssen...
Gruß
Martin
> * Vinculum: scheidet leider aus, da offenbar kein High-Speed möglich
Du schriebst FT2232 - der macht nur in der "H"-Version High-Speed, alle
anderen Varianten sind Full-Speed-Ausführungen (mit 12 MBit).
> * Linux-Treibersourcen: hab ich gefunden, Danke für den Tip! Da ich mich> mit Linux überhaupt nicht auskenne, und mit> Windows-Treiberprogrammierung auch nicht, dürfte das ein harter Kampf> werden...
Wozu solltest Du Windows-Treiber programmieren müssen? Die liefert FTDI.
> Isochroner Modus ... 20..80 MBit/sec
Bist Du Dir sicher, daß eine USB-UART hier die Hardware der Wahl
darstellt?
> Du schriebst FT2232 - der macht nur in der "H"-Version High-Speed, alle
anderen Varianten sind Full-Speed-Ausführungen (mit 12 MBit).
ok, ich meine grundsätzlich den "H". Die langsamen Brüder hab ich gar
nicht wahrgenommen :-)
> Wozu solltest Du Windows-Treiber programmieren müssen?
Muss ich natürlich nicht. Aber ich vermute mal dass jemand der
Windows-Treiber programmieren könnte, eher was aus den Linux-Treibern
rauslesen könnte, als jemand der von beidem k.A. hat...
> > Isochroner Modus ... 20..80 MBit/sec> Bist Du Dir sicher, daß eine USB-UART hier die Hardware der Wahl
darstellt?
Der FT2232H ist ja eher ein USB/FIFO-Umsetzer, der auch noch ein wenig
UART dazu spielt. Im Datenblatt wird immerhin mit >25 MByte/s geworben.
Der FX2 sieht mit aber tatsächlich interessant aus. Zumindest kann man
den in den Isochronen Modus versetzten.
Martin