Forum: Mikrocontroller und Digitale Elektronik USB2 Per-Ctrl. aus Win und von uC aus ansprechen?


von Martin R. (solderwave)


Lesenswert?

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

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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.

von Christian R. (supachris)


Lesenswert?

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.

von Martin R. (solderwave)


Lesenswert?

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

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

> * 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?

von Martin R. (solderwave)


Lesenswert?

> 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

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.