USB-Deskriptor (LUFA)

Ich versuche, mit LUFA auf einem Teensy -Entwicklungsboard in die USB-Welt einzusteigen , aber ich stecke im Verständnis der Deskriptoren fest.

Derzeit versuche ich erfolglos, der Joystick-Demo eine Schaltfläche hinzuzufügen. Kennt jemand eine Ressource, die Schritt für Schritt erklärt, wie man einen USB-Deskriptor einrichtet?

edti: Nachdem ich USB kurz und bündig gelesen habe, glaube ich, dass ich den Deskriptor überhaupt nicht geändert habe, sondern stattdessen den HIDReport ...

Funktioniert die unbearbeitete Demo richtig?
ja, ich habe es zum Laufen gebracht. aber zwei Knöpfe reichen mir nicht :)
Das LUFA-Tastaturbeispiel zeigt, wie Schaltflächen an IO-Pins erkannt und Tastaturereignisse generiert werden. Damit haben Sie einfachen Zugriff auf Scancodes für die gesamte Tastatur

Antworten (3)

Sie müssen den HID-Berichtsdeskriptor bearbeiten, aber auch den Hauptcode. Ändern Sie diesen Teil des HID-Deskriptors:

    0x05, 0x09,          /*   Usage Page (Button)                              */
    0x09, 0x02,          /*   Usage (Button 2)                                 */
    0x09, 0x01,          /*   Usage (Button 1)                                 */
    0x15, 0x00,          /*   Logical Minimum (0)                              */
    0x25, 0x01,          /*   Logical Maximum (1)                              */
    0x75, 0x01,          /*   Report Size (1)                                  */
    0x95, 0x02,          /*   Report Count (2)                                 */
    0x81, 0x02,          /*   Input (Data, Variable, Absolute)                 */
    0x75, 0x06,          /*   Report Size (6)                                  */
    0x95, 0x01,          /*   Report Count (1)                                 */
    0x81, 0x01,          /*   Input (Constant)                                 */
    0xc0                 /* End Collection                                     */

Dazu:

    0x05, 0x09,          /*   Usage Page (Button)                              */
    0x09, 0x03,          /*   Usage (Button 3)                                 */
    0x09, 0x02,          /*   Usage (Button 2)                                 */
    0x09, 0x01,          /*   Usage (Button 1)                                 */
    0x15, 0x00,          /*   Logical Minimum (0)                              */
    0x25, 0x01,          /*   Logical Maximum (1)                              */
    0x75, 0x01,          /*   Report Size (1)                                  */
    0x95, 0x03,          /*   Report Count (3)                                 */
    0x81, 0x02,          /*   Input (Data, Variable, Absolute)                 */
    0x75, 0x06,          /*   Report Size (5)                                  */
    0x95, 0x01,          /*   Report Count (1)                                 */
    0x81, 0x01,          /*   Input (Constant)                                 */
    0xc0                 /* End Collection                                     */

Und setzen Sie das dritte Bit des Buttons-Elements im Element in der CALLBACK_HID_Device_CreateHIDReport()Funktion der Hauptquelldatei, dh um die neue dritte Schaltfläche zu "drücken", verwenden Sie:

 if (ButtonStatus_LCL & BUTTONS_BUTTON1)
   JoystickReport->Button |= (1 << 2);
Ich habe Ihre Änderungen bearbeitet und die zweite Antwort gelöscht
Soll der zweite Codeblock "Report Size (5)" statt .."(6)" haben? (Der entsprechende Code ist derselbe.)
ja das geht und funktioniert! Danke, ich habe diesen Eingabeteil verpasst. Ich verstehe jetzt, dass es einfach ein Byte vervollständigt.

Hier ist die USB in a Nutshell-Seite zu Deskriptoren.

http://www.beyondlogic.org/usbnutshell/usb5.shtml

Die HID-Seite auf USB.org bietet eine Fülle von Informationen über die HID-Spezifikation. Von besonderem Interesse auf dieser Seite ist das HID Descriptor Tool, das zum Erstellen, Bearbeiten und Validieren von HID-Berichtsdeskriptoren verwendet werden kann.

Wenn Sie viel mit USB arbeiten, empfehle ich Ihnen dringend, sich das Buch USB COMPLETE von Jan Axelson zu besorgen . Weitere Informationen finden Sie hier: http://www.lvr.com/usb.htm