Ein USB-Gerät mit mehreren Gerätetypen?

Ich frage mich nur, ob dies mit USB möglich ist.

Ich bin es gewohnt, ein Gerät mit USB so zu programmieren, dass es ein bestimmter Gerätetyp ist, beispielsweise ein HID oder ein CDC usw.

Ist es möglich, mehrere Gerätetypen in einem USB-Gerät zu kombinieren, sodass ein einzelner Chip (z. B. ein PIC32) gleichzeitig sowohl als HID- als auch als CDC-Gerät angesehen werden kann und die Funktionalität von beiden bietet? Idealerweise mit den zwei Gerätefunktionalitäten, die an verschiedene Teile der Firmware gebunden sind.

Ist dies überhaupt mit USB möglich, oder müsste ich einen kleinen 2-Port-Hub-Chip und 2 daran angeschlossene USB-Geräte haben?

Oder könnte ich es emulieren, indem ich den Chip als Hub sehe und dann "virtuelle" Geräte in der Software daran anschließe?

Hat jemand so etwas schon mal probiert?

„Ein Gerät, das über mehrere Schnittstellen verfügt, die unabhängig voneinander gesteuert werden, wird als Verbundgerät bezeichnet.“ cygnal.org/ubb/Forum9/HTML/001050.html
@endolith, meines Wissens nach eine relativ neue Entwicklung, die von den Herstellern von Smartphones stark vorangetrieben wird.

Antworten (2)

Ja, Sie können dies mit einem PIC18 (USB 2.0 mit voller Geschwindigkeit) oder einem anderen PIC mit USB 2.0-Fähigkeit tun.
Microchip hat ein paar Beispiele für zusammengesetzte Geräte, die mit ihrem Stack gebündelt sind. Ich würde mir vielleicht einen davon ansehen und gegebenenfalls anpassen.

Geben Sie hier die Bildbeschreibung ein

USB-Protokollstandard 2.0 Kapitel 9.2.3 // kann als ZIP-Datei von usb.org oder http://www.perisoft.net/engineer/usb_20.pdf gefunden werden

Innerhalb einer einzelnen Konfiguration kann ein Gerät mehrere Schnittstellen unterstützen. Eine Schnittstelle ist ein zusammengehöriger Satz von Endpunkten, die dem Host eine einzelne Funktion oder Funktion des Geräts präsentieren. Das zur Kommunikation mit diesem zugehörigen Satz von Endpunkten verwendete Protokoll und der Zweck jedes Endpunkts innerhalb der Schnittstelle können als Teil einer Geräteklasse oder einer herstellerspezifischen Definition angegeben werden.

Es ist üblich, mehrere Schnittstellen in einem einzigen Gerät zu haben.

Alles, was Sie unterstützen müssen, sind mehrere Schnittstellen oder Hubs mit „virtuellen Geräten“, je nachdem, was Sie einfacher zu implementieren finden.

Wie wäre es mit USB 1 - sagen wir, ich wollte es mit einem PIC18-Gerät machen?
@Majenko von edaboard.com/thread161532.html hat dieselben Zeilen im selben Kapitel
@Majenko: Das PIC 18 USB-Peripheriegerät ist USB 2.0-kompatibel, ebenso wie jeder Host da draußen, der weniger als ein Jahrzehnt alt ist.