Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Low Speed USB... Как получается 1,5 mbit per sec?
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > RS232/LPT/USB/PCMCIA/FireWire
prottoss
Всем доброго времени суток!

Объясните не разумному, как получается на Low Speed USB Device получить цифру в 1,5 мбит в секунду? Судя спецификации USB минимальная пауза между фреймами не может быть ниже 10 милисекунд. При этом максимальный размер полезных данных - 8 байт. Если я правильно считаю, то получается не более 100 пакетов по 8 байт - 800 байт в сек??? Или я чегойто не догоняю?

Сенькс)
msn
Цитата(prottoss @ Nov 6 2006, 19:01) *
Всем доброго времени суток!

Объясните не разумному, как получается на Low Speed USB Device получить цифру в 1,5 мбит в секунду? Судя спецификации USB минимальная пауза между фреймами не может быть ниже 10 милисекунд. При этом максимальный размер полезных данных - 8 байт. Если я правильно считаю, то получается не более 100 пакетов по 8 байт - 800 байт в сек??? Или я чегойто не догоняю?

Сенькс)

Для одной Pipe ни как.
LS потдерживает только Interupt 8 Байт (самое оно для мыши или клавиатуры).
prottoss
Цитата(msn @ Nov 8 2006, 07:34) *
Для одной Pipe ни как.
LS потдерживает только Interupt 8 Байт (самое оно для мыши или клавиатуры).
Значится это просто скорость передачи пакетов и к объему перекачиваемых данных в секунду ни какого отношения не имеет... Мдя.

Ок, раз уж создал тему. Еще вопросик. Хочется вот мне, чтоб у меня девайс видился как два, или три, или четыре СОМ-порта (USB CDC класс). Для этого, я так понимаю, надо создать несколько интерфейсных дескрипторов, для каждого интерфейса свои pipe? Но как потом каждый порт в inf-файле описывать?
Седой
Цитата
Еще вопросик. Хочется вот мне, чтоб у меня девайс видился как два, или три, или четыре СОМ-порта (USB CDC класс). Для этого, я так понимаю, надо создать несколько интерфейсных дескрипторов, для каждого интерфейса свои pipe? Но как потом каждый порт в inf-файле описывать?


Такое устройство - composite device.
( как с ним работать см.
http://msdn.microsoft.com/library/default.....asp?frame=true
)
Для composite device драйвер не нужен, и не нужно его прописывать в INF файле. Главное чтобы VID/PID вашего устройства не совпадал с уже зарегистрированными системой и устройство имело несколько интерфейсов. Драйвер поставится автоматически.

С интерфейсами поступать нужно так:

Если интерфейс вашего устройства реализует стандартный класс и его поддерживает система, то его прописывать в INF файле не нужно. Система поставит его сама.

Если интерфейс нестандартного класса, то его нужно прописать в секции [Models] INF файла:

%MydeviceDesc% = Mydevice, USB\VID_vvvv&PID_pppp\MI_mm

где vvvv - номер VID, pppp - номер PID, mm - номер интерфейса MyDevice, равный значению поля bInterfaceNumber дескриптора интерфейса.

Для уcтройств стандартных классов ( и не только), реализующих несколько интерфейсов, а таким является USB CDC в полной реализации, дело несколько сложнее - необходимо в устройстве создать Interface Association Descriptors (IAD) см.
http://msdn.microsoft.com/library/default....e130efc.xml.asp

PS. В последних версиях WDK появились дополнительные возможности, но я детально их не изучал.
prottoss
Цитата(Седой @ Nov 8 2006, 16:51) *
Цитата
Еще вопросик. Хочется вот мне, чтоб у меня девайс видился как два, или три, или четыре СОМ-порта (USB CDC класс). Для этого, я так понимаю, надо создать несколько интерфейсных дескрипторов, для каждого интерфейса свои pipe? Но как потом каждый порт в inf-файле описывать?

Такое устройство - composite device.
Спасибо, буду пробовать. Расскажу здесь, что получилось...
prottoss
Цитата(Седой @ Nov 8 2006, 13:51) *
Цитата
Еще вопросик. Хочется вот мне, чтоб у меня девайс видился как два, или три, или четыре СОМ-порта (USB CDC класс). Для этого, я так понимаю, надо создать несколько интерфейсных дескрипторов, для каждого интерфейса свои pipe? Но как потом каждый порт в inf-файле описывать?


Такое устройство - composite device.
( как с ним работать см.
http://msdn.microsoft.com/library/default.....asp?frame=true
)
...

Для уcтройств стандартных классов ( и не только), реализующих несколько интерфейсов, а таким является USB CDC в полной реализации, дело несколько сложнее - необходимо в устройстве создать Interface Association Descriptors (IAD) см.
http://msdn.microsoft.com/library/default....e130efc.xml.asp

PS. В последних версиях WDK появились дополнительные возможности, но я детально их не изучал.
Что то ни как не получается сделать правильный дескриптор, то четыре устройства видятся, то два, но второе не работает. Вот что получается...

Для USB CDC ACM класса необходимо определить два интерфейса. Правильно? Что я и делаю. Перед определением интерфейсов ставлю IAD для первой функции, в нем прписываю номер первого интерфейса 0, кол. интерфейсов 2, далее идет все как для USB CDC ACM. Далее ставлю второй IAD, где номер первого интерфейса 2, кол. интерфейсов 2. Далее опять стьандартный для USB CDC ACM набор. Перед все этим венегретом идет, естественно конфиг дескриптор, в котором я указываю количество интерфейсов. А вот тут траблы, мне пока не понятные.

Если ставлю колю интерфейсов 4 (но их же так и есть???), то ОС видит 4 -е устройства, еслди ставлю 2 (может теперь по кол. IADов???), то винда видит два, как мне и хочется, но второй устанавливается с ошибкой, и в добавок, и первый не работает!!!

В чем траблы???

Спасибо!
prottoss
Немного разобрался с проблемой. Убрал IADы, сделал два интерфейса, и в абстрактные интерфейсы запихал нумпоинты от дата-интерфесов, а дата и нтерфейсы убрал совсем. Заработало!!!. Но, только первое устройство. Второе Виндовс забраковало. Дело в том, что я использую в своих опытах PDIUSBD12, у которой фактически три конечные точки. Так вот, в обоих виртуальных точках я использую одни и те же, может быть в этом проблема.

Подскажите, кто знает
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.