Здравствуйте!
При написании прошивки под микроконтроллер AT91SAM7S128 cтолкнулся со следующей проблемой.
Необходимо сделать композитное устройство которое будет объединять в себе два виртуальных компорта (CDC). Соответственно делаю дескриптор конфигурации в котором описаны оба CDC. При этом в каждом CDC есть пункт описания BULK эндпоинтов входа и выхода а также один interrupt эндпоинт. Итого в сумме получается 6 эндпоинтов необходимо для реализации двух CDC в одном композитном устройстве.
Вот вырезка описания BULK эндпоинтов
для первого CDC:
0x07,0x05,0x01,0x02,0x40,0x00,0x00, (тут эднпоинт адрес = 1)
0x07,0x05,0x82,0x02,0x40,0x00,0x00, (тут эднпоинт адрес = 2)
для второго CDC:
0x07,0x05,0x04,0x02,0x40,0x00,0x00, (тут эднпоинт адрес = 4)
0x07,0x05,0x85,0x02,0x40,0x00,0x00 (тут эднпоинт адрес = 5)
Т.е. каждый эндпоинт должен иметь свой адрес который у меня равен 1,2, 4 и 5. Проблема в том что микроконтроллер имеет только 3 эндпоинта (не считая контрольного). Получается я могу задать адреса только
от 1 до 3, т.е. например только для первого CDC, а для второго уже не хватает свободных эндпоинтов. Есть ли возможность каким то образом обойти данное ограничение, т.е. задать дескриптор конфигурации
каким-то таким образом что и второму CDC я смогу задать адреса эндпоинтов от 1 до 3?
Или, вообще, допустим я хочу сделать композитное устройство с 10-ю CDC. Возможно ли такое или количество устройств которые я могу объеденить в одно композитное упирается в количество доступных эндпоинтов (что для AT91SAM7S128 равно 4, для AT91SAM7X128 равно 6 и вообще спецификацией USB зарезервировано 4 бита что равно максимально 16-ти возможным эндпоинтам)???