6 votos

Descriptor USB (LUFA)

Estoy tratando de saltar en el mundo USB con LUFA en un Placa de desarrollo Teensy pero estoy atascado en la comprensión de los descriptores.

Actualmente estoy intentando añadir un botón a la demo del joystick sin éxito. ¿Alguien conoce algún recurso que explique paso a paso cómo configurar un descriptor USB?

edti : Después de leer USB in a nutshel, creo que puede que no haya modificado el Descriptor en absoluto, sino el HIDReport en su lugar...

0 votos

¿Funciona bien la demo sin editar?

0 votos

Sip, he conseguido que funcione. pero dos botones no son suficientes para mí :)

1 votos

El ejemplo del teclado LUFA muestra cómo detectar botones en los pines IO y generar eventos de teclado. Usando esto, usted tiene fácil acceso a los códigos de escaneo para todo el teclado

5voto

Jorge Córdoba Puntos 18919

Es necesario editar el descriptor del informe HID, pero también el código principal. Cambia esta parte del descriptor HID:

    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                                     */

A esto:

    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                                     */

Y establece el tercer bit del elemento Buttons en el elemento CALLBACK_HID_Device_CreateHIDReport() del archivo fuente principal, es decir, para "pulsar" el nuevo tercer botón, utilice

 if (ButtonStatus_LCL & BUTTONS_BUTTON1)
   JoystickReport->Button |= (1 << 2);

0 votos

He editado tus cambios y he borrado la segunda respuesta

0 votos

¿Se supone que el segundo bloque de código debe tener "Tamaño del informe (5)" en lugar de .."(6)"? (El código correspondiente es el mismo).

0 votos

Sí, y funciona. Gracias, me perdí la parte de la entrada. Ahora entiendo que simplemente se completa un byte.

3voto

letronje Puntos 128

Aquí está la página de USB in a Nutshell sobre descriptores.

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

2voto

Knox Puntos 1979

El Página de HID en USB.org tiene una gran cantidad de información sobre la especificación HID. De particular interés en esa página es la Herramienta de Descriptores HID, que puede ser usada para crear, editar y validar descriptores de informes HID.

Si vas a trabajar mucho con USB, te recomiendo encarecidamente que adquieras el libro de Jan Axelson USB COMPLETO . Puede encontrar más información aquí: http://www.lvr.com/usb.htm

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X