Wie viele Geräteklassen kann ein einzelnes USB-Verbundgerät implementieren?

Ich möchte einen LPC1345- Mikrocontroller verwenden, um einen USB-Hub zu betreiben. Dank dieser Frage weiß ich, dass ein einzelnes USB-Gerät verwendet werden kann, um als mehrere Klassen zu fungieren, aber wie viele?

Der USB-Hub hätte vier Steckplätze, also müssten vier MSD-Klassen implementiert werden, wenn ich das richtig verstehe. Es wäre auch schön, die DFU-Klasse zu haben, falls ich die Firmware zu einem späteren Zeitpunkt aktualisieren muss.

Gibt es im USB-Standard eine Begrenzung, wie viele Klassen in einem zusammengesetzten Gerät implementiert werden können, oder gibt es eine Eigenschaft eines bestimmten Controllers, die ich untersuchen müsste, um festzustellen, ob der Controller dazu in der Lage ist?

Antworten (2)

Die Anzahl der Endpunkte in einem Gerät ist begrenzt (16). Wenn Sie nur einen Endpunkt pro Schnittstelle benötigen (dort haben Sie die Möglichkeit, die Klasse anders als in einem Gerätedeskriptor angegeben anzugeben), können Sie 15 Klassen haben. Vielleicht möchten Sie sich den Konfigurationsdeskriptor jedes modernen Nicht-Smartphones, Bluetooth-Dongles oder einer Webcam ansehen - alle sind normalerweise ziemlich groß und enthalten mehrere Klassen.

Sie können bis zu 30 Endpunkte haben (15 ein- und 15 aus), und der standardmäßige (Null) Kontroll-Pipe-Endpunkt kann zwischen mehreren Schnittstellen verwendet werden. Und für einige Schnittstellen benötigen Sie eigentlich keinen Endpunkt.
Es gibt Geräte, die über einen (virtuellen) Hub verfügen, um mehrere USB-Geräte zu implementieren, aber die Fähigkeit, auf mehrere Gerätenummern zu reagieren, erfordert Hardwareunterstützung.

Wenn man sich die USB 2.0-Spezifikation ansieht, scheint es, dass ein zusammengesetztes Gerät, auch bekannt als ein einzelnes Gerät mit mehreren Schnittstellen, durch die Anzahl der Schnittstellen in einer einzelnen Konfiguration begrenzt wäre.

Geben Sie hier die Bildbeschreibung ein

Da bNumInterfaces eine Größe von 1 Byte hat, bedeutet dies, dass die theoretische Grenze 255 ist. Mehr als praktisch.