Estoy implementando USB en un PIC 18F2550 utilizando una interfaz HID genérica . Configuré la configuración del perfil HID para tener un solo mensaje de 64 bytes para las entradas y salidas.Protocolo HID USB pregunta
Ahora básicamente funciona. El dispositivo registra OK con Windows. Puedo encontrarlo en mi programa en la PC y puedo enviar y recibir datos. Sin embargo, el problema es este: los mensajes de la PC al PIC se truncan al tamaño del búfer de punto final EP0.
Antes de ir a depurar mucho más, quiero tratar de aclarar mi comprensión de los protocolos USB aquí y comprobar que lo hice bien.
Supongamos que el búfer de entrada EP0 es de 8 bytes. Entiendo que el extremo de la PC enviará un paquete de control de 8 bytes. Ahí está la longitud en bytes de los datos a seguir. Y luego enviará una secuencia de paquetes de datos de 8 bytes y el final del PIC tiene que reconocer cada uno.
Tengo entendido que el extremo de la PC sabe cuán grande puede ser cada paquete buscando en el campo de tamaño máximo de paquete en el descriptor del dispositivo y dividirá el mensaje según corresponda en múltiples paquetes de datos.
Antes de ir a buscar más horas al código, ¿alguien puede confirmar que esto es básicamente correcto? ¿Que si el tamaño del búfer EP0 es de 8 bytes, entonces la PC debería saber esto debido al campo de configuración que mencioné anteriormente y enviar múltiples paquetes de datos?
Si configuro mi búfer de recepción en el PIC 64 bytes, obtengo 64 bytes del mensaje que es suficiente para mis necesidades, pero no me gusta no entender por qué no funciona con buffers pequeños, y uno día probablemente los necesite de todos modos.
Cualquier consejo o información sería bienvenida.