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