STM32CubeIDE USB mehrere Endpunkte

Persönliche Seite #7591856
Lesenswert?

Harald L. schrieb:

Geht schon, aber eben leider nicht mit CubeMX.

Das geht so halb - man kann sich mit CubeMX ein Projektsetup für eine Klasse generieren, den erzeugten Code rauskopieren, dann die andere Klasse auswählen, wieder den Code rauskopieren, und dann wieder keine Klasse auswählen. Dann den zuvor gesicherten Code wieder reinkopieren. Natürlich muss man dann die beiden Klassen unter einen Hut bringen und entsprechend registrieren. Nicht wirklich straight-forward.

#7591859
Lesenswert?

Niklas G. schrieb:

Das geht so halb - man kann sich mit CubeMX ein Projektsetup für eine Klasse generieren, den erzeugten Code rauskopieren, dann die andere Klasse auswählen, wieder den Code rauskopieren, und dann wieder keine Klasse auswählen. Dann den zuvor gesicherten Code wieder reinkopieren. Natürlich muss man dann die beiden Klassen unter einen Hut bringen und entsprechend registrieren. Nicht wirklich straight-forward.

Genau so! Aber das ist alles Andere als trivial.

Persönliche Seite #7591864
Lesenswert?

Harald L. schrieb:

Genau so! Aber das ist alles Andere als trivial.

Jup! Ein ähnlicher Eiertanz ist nötig wenn man eine eigene "vendor specific" Klasse umsetzen möchte. Echt ärgerlich, weil das wäre in CubeMX sehr einfach umsetzbar, die Library unterstützt es sowieso, aber ST macht es unnötig kompliziert. Wollte eigentlich mal nen Artikel schreiben wie das geht, aber die liebe Zeit...

PS: Das ist doch garantiert wieder kein echtes Speichermedium, und der CDC-ACM mappt nicht auf ein echtes 56k-Analogmodem, da werden doch bestimmt wieder Standard-Klassen für was anwendungsspezifisches missbraucht - vielleicht wäre es sinnvoller ein ganz eigenes anwendungsspezifisches Protokoll umzusetzen? Seit Win7 braucht man dazu keine Treiber mehr.

#7592368
Lesenswert?

Ada J. Quiroz schrieb:

Also entnehme ich den Antworten, dass es irgendwie hinbekommen muss beiden generierten Code von CDC und MSD gleichzeitig laufen zu lassen.

Ja es geht schon, grundsätzlich. Ich hatte mal ein Composit-Device mit CDC, HID Tastatur und HID Maus gemacht, was schlussendlich super funktioniert hat. Aber das hat mich viele Tage herumdoktern gekostet. Das Hauptproblem waren die verschiedenen USB-Deskriptoren, welche man zusammenführen muss und exakt stimmen müssen, denn sonst werden die Geräte/Endpoints dann beim einstecken nicht erkannt. In den USB-Deskriptoren ist alles sehr generisch aufgebaut, was zwar eine riesen Flexibilität ermöglicht, aber es auch sehr kompliziert macht. https://www.beyondlogic.org/usbnutshell/usb5.shtml

Persönliche Seite #7592391
Lesenswert?

Ada J. Quiroz schrieb:

Also entnehme ich den Antworten, dass es irgendwie hinbekommen muss beiden generierten Code von CDC und MSD gleichzeitig laufen zu lassen.

Jup. Erzähl doch mal mehr darüber was du genau machen möchtest.

PS: Witzig ist dass auch der ST-Link mehrere Geräteklassen unterstützt, dessen Code können die also auch nicht per CubeMX generieren...

Johnny B. schrieb:

Das Hauptproblem waren die verschiedenen USB-Deskriptoren, welche man zusammenführen muss

Ja, insbesondere die IAD-Deskriptoren um ein Composite-Device zu erstellen.

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