Forum: Mikrocontroller und Digitale Elektronik Empfehlung für USB Device Controller


von Lutz (Gast)


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

von Frank K. (fchk)


Lesenswert?

Viele Microcontroller haben USB Device Peripherie eingebaut. Da braucht 
es keine extra USB-Bridge.

fchk

von Joe F. (easylife)


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.

von Lutz (Gast)


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

von Joe F. (easylife)


Lesenswert?

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.

von Frank K. (fchk)


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

von Clemens L. (c_l)


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).

von Joe F. (easylife)


Lesenswert?

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...

von A. Horn (Gast)


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?

von A. Horn (Gast)


Lesenswert?

Oder um es klarer zu machen:

Könnte man alle 20 Anfrage Sätze senden,
bevor 20 (oder mehr oder weniger) Antwort Sätze kommen?

von Robert T. (robertteufel)


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

von Christian R. (supachris)


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.

von Lutz (Gast)


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

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.