Empfehlung für USB Device Controller

Gast #4432707
Lesenswert?

Hallo,

wir müssen für ein Hardware-Projekt kurzfristig ein Angebot abgeben.

Das zu entwickelnde Gerät kommuniziert über eine USB-Schnittstelle mit 
einem Windows-PC. Wir haben zwar die Ressourcen, uns in die Problematik 
einzuarbeiten, momentan fehlt uns aber schlicht der Überblick, mit 
welchem USB-Device-Controller wir für ca. die nächsten 5 Jahre 
einigermaßen zukunftsfest sind.

Der Controller muss Interrupt-Transfer mit Hi-Speed-Übertragung 
beherrschen. Vom Hersteller, und das ist der eigentliche Knackpunkt, 
sollte ein nach neuen MS-Richtlinien zertifizierter Windows-10-Treiber 
mitgeliefert werden. Es müssen allerdings auch Treiber für Windows 7 und 
8 verfügbar sein.

Gibt es dazu Erfahrungen im Forum?

Vielen Dank,

Lutz
#4432763
Lesenswert?

Lutz schrieb:
> Vom Hersteller, und das ist der eigentliche Knackpunkt,
> sollte ein nach neuen MS-Richtlinien zertifizierter Windows-10-Treiber
> mitgeliefert werden. Es müssen allerdings auch Treiber für Windows 7 und
> 8 verfügbar sein.

Da kommt es doch sehr darauf an, was das zu entwickelnde Gerät 
eigentlich für Daten übertragen soll.
Wenn es in eine Geräte-Klasse passt, die von Windows sowieso schon 
unterstützt wird, benötigt man überhaupt keinen zusätzlichen Treiber.
Gast #4432787
Lesenswert?

Ins Gerät werden in Quasi-'Echtzeit' Datensätze geschrieben. Maximal 
müssen pro ms ca. 2kB (20 Sätze zu 100 Bytes) übertragen werden. Die 
Verarbeitung der Datensätze wird vom Gerät bestätigt, d.h  Rückmeldung 
an PC. Hinzu kommen asynchron vom Gerät generierte Events, die an den PC 
zurückgemeldet werden.
Ich weiß nicht, ob die allgemeine Beschreibung schon ausreicht.

Lutz
#4432844
Lesenswert?

In Zeiten von WinUSB und LibUSB ist der Bedarf an 
Kerneltreiberprogrammierung heutzutage gering.

Ich würde auch eher versuchen, eine Standard-USB Geräteklasse zu 
verwenden und dewegen genau KEINE extra USB Bridge von FTDI, SiLabs usw 
verwenden. Mit Standard-USB-Geräteklassen brauchst Du nämliche keine 
extra Treiber mehr, weil die schon beim Betriebssystem dabei sind.

fchk
#4432858
Lesenswert?

Frank K. schrieb:
> Viele Microcontroller

... können nur Full Speed.

Lutz schrieb:
> Vom Hersteller, und das ist der eigentliche Knackpunkt, sollte ein
> nach neuen MS-Richtlinien zertifizierter Windows-10-Treiber
> mitgeliefert werden. Es müssen allerdings auch Treiber für Windows 7
> und 8 verfügbar sein.

Da ist die einfachste Lösung ein Treiber, den Microsoft schon 
mitliefert, also WinUSB 
(https://msdn.microsoft.com/en-us/library/windows/hardware/ff540196.aspx). 
Alternativ irgendein separater USB/seriell-Konverter-Chip, z.B. FT232H 
(macht die Hardware teurer, aber spart die USB-Firmware-Entwicklung).
Gast #4433117
Lesenswert?

Sind die Datensätze voneinander abhängig d.h. gibt es folgenden Ablauf:

Anfrage1 (PC->Device)
Antwort1 (Device->PC)
Anfrage2 (PC->Device)
Antwort2 (Device->PC)
...

wobei Anfrage2 erst (oder überhaupt nur) ausgeführt wird,
wenn Antwort1 vom PC empfangen wurde?
#4433122
Lesenswert?

Echtzeitanforderungen im EInstelligen ms Bereich oder gar im usec 
Bereich vertragen sich nicht so toll mit USB, nocht nicht mal mit 
USB-HS.

Schon mal ueber die Moeglichkeit nachgedacht die gesammelten Daten vor 
Ort mit einer MCU teilweise zu bearbeiten und dann mit niedrigen 
Echtzeianforderungen stressfrei den USB zu nutzen?  Nur so ein Gedanke.

Die schnelleren M4 Derivate von ST, NXP, Atmel und neuerdings auch 
Renesas bieten USB-HS

Robert
#4433149
Lesenswert?

Ich kann auch nur dringend empfehlen auf WinUSB oder LibUSB zu gehen. 
Wenn nur Windows das Ziel sein soll dann eher Winusb. Der ist in jedem 
Windows seit XP dabei und wird von MS gepflegt. Da kannst du jeden 
beliebigen Device Controller dran machen. Wir setzen den ohne Probleme 
mit dem FX2 und auch dem FX3 von Cypress ein.
Gast #4433227
Lesenswert?

Vielen Dank erst einmal für die Antworten.
Ich werde mich nochmal mit WinUSB beschäftigen, vielleicht können wir 
mit den Standardtreibern doch das Problem schon lösen.

@A. Horn
Die Bestätigung benötigen wir eigentlich nur, um die Laufzeit zu messen. 
D.h. jeder Datensatz erhält eine lfd. Nummer, die Datensätze werden 
nacheinander übertragen. Anhand der Antwort, die wieder die jeweilige 
laufende Nummer enthält, können wir die Lauf- + Verarbeitungszeit 
messen.
So haben wir es jedenfalls beim Vorgänger des neu zu entwickelnden 
Gerätes gemacht. Der dort verwendete USB-Controller ist abgekündigt, und 
der dazu gehörende Treiber ist nicht Windows10-konform.

Lutz

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren