Я реализую USB на PIC 18F2550 с использованием общего интерфейса HID . Я настроил конфигурацию профиля HID, чтобы иметь одно 64-байтовое сообщение для обоих входов и выходов.Вопрос о USB HID-протоколе
Теперь это в основном работает. Устройство регистрирует ОК с окнами. Я могу найти его в своей программе на ПК и отправлять и получать данные. Проблема в том, что, хотя сообщения от ПК до ПОС усекаются до размера буфера конечной точки EP0.
Прежде чем я буду отлаживать слишком много дальше, я хочу попытаться пояснить свое понимание USB-протоколов здесь и проверить, правильно ли я понял.
Предположим, что входной буфер EP0 составляет 8 байтов. Я понимаю, что конец ПК отправит управляющий пакет, который составляет 8 байтов. В нем есть длина в байтах данных. И затем он отправит последовательность из 8 байтовых пакетов данных, а конец PIC должен подтвердить каждый.
Я понимаю, что конец ПК знает, насколько большой может быть каждый пакет, если посмотреть в поле максимального размера пакета в дескрипторе устройства и разделить сообщение соответственно на несколько пакетов данных.
Прежде чем я буду искать больше часов в коде, может ли кто-нибудь подтвердить, что это в основном правильно? Что, если размер буфера EP0 составляет 8 байтов, ПК должен знать об этом из-за поля конфигурации, о котором я упоминал выше, и отправки нескольких пакетов данных?
Если я создаю свой буфер приема на байтах PIC 64, я получаю 64 байта сообщения, достаточного для моих нужд, но мне не нравится не понимать, почему он не работает с небольшими буферами, и один В любом случае, я, вероятно, понадоблюсь им.
Любые консультации или информация будут приветствоваться.