Здравствуйте! При написании прошивки под микроконтроллер 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-ти возможным эндпоинтам)???
|