Forum: Mikrocontroller und Digitale Elektronik STM32 USB composite device / Treiberfragen


von Ulrich B. (bbk)


Lesenswert?

Hallo zusammen!

Ein mit STM32F4xx betriebenes Gerät soll ein composite USB device 
bekommen mit MSD und einer Kommunikationsschnittstelle für niedrige 
Geschwindigkeiten.

Ich habe in einem anderen Projekt dafür bereits HID verwendet, was sehr 
gut funktioniert hat und vor allem dadurch aufgefallen ist,
dass es wirklich nie Bedarf nach Extra USB-Treibern gab.
Hintergrund: die Geräte beim Endkunden laufen ohne Admin Rechte,
daher ist Treiberinstallation immer kritisch

"Eigentlich" wäre mir hier aber CDC lieber, weil jeder irgendein 
Terminal (es kann hier auch ein ASCII Protokoll verwendet werden) als 
Gegenstelle zur Hand hat. (Das ist bei HID ja nicht der Fall)

Also:
- sowohl MSD als auch HID laufen ja prima ohne Treibergedöns
1) kann ich davon ausgehen, dass sich ein composite aus den beiden 
genauso verhält?

- früher gab es jede Menge Generve mit den CDC Treibern bei Windows
(ich erinnere mich an ganze Dramen mit den ollen USB-Seriell Stöpseln

2) tut das mit CDC inzwischen besser?
Was bringt "Windows 11 aus der Box" da mit?

gibt es irgendeinen zu bevorzugenden Lieferanten für den USB Stack auf 
dem STM32, der dann unter Windows mit einem MSD/CDC Device ohne Treiber 
auskommt?

danke für jeden Tipp
Uli

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Du kannst dein Gerät auch als WinUSB Gerät implementieren. Dann lädt 
Windows vollautomatisch den WinUSB Treiber, und du kannst von der 
Anwendung aus direkt per libusb auf dein Gerät zugreifen und hast die 
volle Flexibilität des USB-Protokolls. Braucht absolut keine 
Admin-Rechte und die Fummelei mit der Auswahl des COM-Ports entfällt, 
echtes plug&play.

Siehe:
https://www.mikrocontroller.net/articles/USB-Tutorial_mit_STM32#Eigene_Anwendung_f%C3%BCr_PC-Seite

Ulrich B. schrieb:
> kann ich davon ausgehen, dass sich ein composite aus den beiden
> genauso verhält?

Ja.

Ulrich B. schrieb:
> gibt es irgendeinen zu bevorzugenden Lieferanten für den USB Stack auf
> dem STM32, der dann unter Windows mit einem MSD/CDC Device ohne Treiber
> auskommt?

Der Stack hat mit Composite und Admin-Rechten nichts zu tun, das ist 
reine Sache des Device Descriptor, den du so oder so selbst anlegen 
musst.

Ulrich B. schrieb:
> 2) tut das mit CDC inzwischen besser?

Konforme CDC-Geräte funktionieren grundsätzlich recht gut.

Welche Windows-Version ist es? Wirklich gut funktioniert das alles so ab 
Win10.

: Bearbeitet durch User
von Rahul D. (rahul)


Lesenswert?

aktuelle NUCLEOs und das Eval-Boards (z.B. das F407 auf meinem Tisch) 
stellen auch ein Composite-Device (MSC und CDC) über den integrierten 
ST-Link zur Verfügung...
Allerdings wird es bei mir als "STlink Virtual COM port" angezeigt.
Ob mit einer blanken CDC-Instanz auch ein expliziterter Treiber 
norwendig ist, oder es einen für alle gibt, weiß ich nicht.
Es gibt in STCubeMX aber Bespiele zu composite devices und vermutlich 
auch zu CDC-Devices.

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Rahul D. schrieb:
> Ob mit einer blanken CDC-Instanz auch ein expliziterter Treiber
> norwendig ist,

Nein.

Rahul D. schrieb:
> Es gibt in STCubeMX aber Bespiele zu composite devices und vermutlich
> auch zu CDC-Devices.

Oder:

https://github.com/Erlkoenig90/f1usb/blob/vcp/src/usb_desc.cc

Registriert sich als Composite Device mit 3 serial ports, funktioniert 
direkt plug&play ohne Konfiguration/Installation. Aber IIRC erst ab 
Windows 10.

von Rahul D. (rahul)


Lesenswert?

Niklas G. schrieb:
> Oder:
Danke für den Link.
Genau sowas brauche ich wohl demnächst.

Niklas G. schrieb:
> Aber IIRC erst ab Windows 10.
Das ist ja auch so langsam abgekündigt...
Wer braucht denn sowas womöglich noch für Windows98SE etc?

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Rahul D. schrieb:
> Das ist ja auch so langsam abgekündigt...
> Wer braucht denn sowas womöglich noch für Windows98SE etc?

Weiß man's, die Industrie schwört doch noch auf WinXP, ANSI-C (C89), 
Serial Ports, Disketten...

Das Betriebssytem, bei dem man am unkompliziertesten auf eigene 
USB-Geräte zugreifen kann, ist übrigens Android. Apps sind kinderleicht 
installierbar, Treiber oder Adminrechte brauchts nicht, und das USB-API 
ist Teil des normalen Android-App-APIs ("UsbManager").

: Bearbeitet durch User
von Rahul D. (rahul)


Lesenswert?

[Offtopic]
Niklas G. schrieb:
> Weiß man's, die Industrie schwört doch noch auf WinXP, ANSI-C (C89),
> Serial Ports, Disketten...

Naja, "schwört". Bei manchen Sachen lohnt sich ein Neubau nicht 
unbedingt.
Einen Teststand für diverse Zig Kiloeuro baut mal auch nicht einfach mal 
neu.

Serielle Schnittstellen kann man ja nun simpelst in Hardware realisieren 
(Schieberegister, ein Takt und für den Empfänger noch was zur 
Synchonisation...).
Von Burkhard Kainka gab es dazu mal schönes Buch: 
https://www.b-kainka.de/buch3.htm
[/Offtopic]

von Ulrich B. (bbk)


Lesenswert?

Hei

erstmal: DANKE !
und sorry, hatte ich vergessen
es geht eigentlich nur um aktuelle Windose, also 11
und daher ganz sicher kein 98SE ;)))

grüßings

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.