Empfehlung für USB Device Controller

Gast #4432707
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
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
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
Das sind eine ganze Menge Daten, und da wird man um einen eigenen 
Treiber nicht herumkommen.
Evtl. mal mit einem Treiberspezialisten in Kontakt treten (z.B. Fa. 
Thesycon).
Controller gibt's für solche Aufgaben jedenfalls wie Sand am Meer.
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
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).
Frank K. schrieb:
> Mit Standard-USB-Geräteklassen brauchst Du nämliche keine
> extra Treiber mehr, weil die schon beim Betriebssystem dabei sind.

Da kommst du halt an Grenzen.
Die Controlpipe kann max. 64 bytes pro ms, mit HID gehen glaube ich bis 
zu 1023 bytes pro ms.

TO benötigt aber schon das Doppelte davon...
Gast
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?
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
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
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

Eine eigene Frage? Dieser Thread ist über 10 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.