Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: STM32F103 USB enumeration
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Sagittarius
Здравствуйте.

Подскажите как правильно отвечать по запросу на дескриптор устройства? Дескриптор рабочий от своего давнего проекта на атмеле. Приходит запрос на дескриптор устройства, отдаю его (по 8 байт или весь сразу, без разницы), после чего получаю ресет. Цикл повторяется несколько раз после чего винде говорит о не распознанном устройстве. Пробовал посылать после дескриптора пакет нулевой длины и переключать/оставлять без изменений DTOG_RX и DTOG_TX - результата нет.

последовательность действий сейчас:
-Reset, все сбрасываю и обнуляю, EP0 cnfdk. rjynhjkmyjq b hfphtif. tq ghbtv
-прерывание прием пакета по EP0, запрос DevDesc, формирую свой буфер с заголовком и телом дескриптора. Запрошенную длину выдай на передачу. (Win XP запрашивала помнится сначала 8 байт, потом давала ресет и запрашивала весь DevDes. Win 7 запрашивает сразу 64 байта)
- прерывание данные отправлены. если есть что передавать - передаю. если нет то перевожу EP0 на прием.
- снова получаю Reset.

Что пропустил? Какой то битик переключить? надо ли как то обрабатывать SOF?

Спасибо.
Sagittarius
подправил пару своих косяков, теперь цикл стал длиннее:

запрос DevDesc, получение
reset
Set Address
запрос DevDesc
reset
...

что хосту может не нравится в устройстве? дескриптор пробовал другой, от работающего примера IAR-а.
Golikov A.
может быть у вас не та нога не туда подтянута? И устройство определилось не тем классом, ну типа хост думает что это хай спид, а у вас лов спид.
Судя по тому что раньше просили 8 байт, а теперь 64...
Sagittarius
Цитата(Golikov A. @ Dec 17 2013, 11:10) *
может быть у вас не та нога не туда подтянута? И устройство определилось не тем классом, ну типа хост думает что это хай спид, а у вас лов спид.
Судя по тому что раньше просили 8 байт, а теперь 64...


с количеством байт странность есть. 64 байта приходит в поле wLength. но если я отправлю сразу весь дескриптор (18 байт) то получу reset и повторный запрос дескриптора. Если меняю обратно на 8 то дохожу до установки адреса (в DevDesc естественно тоже меняю размер контрол ендпоинт)

На этой же плате запускается и проходит энумерацию с установкой дров пример от IAR-а VirtualCOM, там как раз правил под свое железо так что в этом все должно быть правильно.
adnega
Цитата(Sagittarius @ Dec 17 2013, 11:18) *
с количеством байт странность есть. 64 байта приходит в поле wLength. но если я отправлю сразу весь дескриптор (18 байт) то получу reset и повторный запрос дескриптора. Если меняю обратно на 8 то дохожу до установки адреса (в DevDesc естественно тоже меняю размер контрол ендпоинт)

На этой же плате запускается и проходит энумерацию с установкой дров пример от IAR-а VirtualCOM, там как раз правил под свое железо так что в этом все должно быть правильно.

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