Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: USB enumeration
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Интерфейсы
andrewlekar
Есть девайс на LPC1788 с USB стеком от NXP (NxpUsbLib).
Примерно каждая 8-я энумерация под Windows 7 не проходит. Если потом сделать принудительно энумерацию, то нераспознанное устройство определяется нормально. Под линуксом таких проблем не замечал, впрочем детально не исследовал.
Это нормальное поведение для USB? На ваших устройствах статистика лучше? Если это поведение ненормально, то что можно попробовать поправить?
_4afc_
Цитата(andrewlekar @ Dec 4 2013, 13:20) *
Есть девайс на LPC1788 с USB стеком от NXP (NxpUsbLib).
Примерно каждая 8-я энумерация под Windows 7 не проходит. Если потом сделать принудительно энумерацию, то нераспознанное устройство определяется нормально. Под линуксом таких проблем не замечал, впрочем детально не исследовал.
Это нормальное поведение для USB? На ваших устройствах статистика лучше? Если это поведение ненормально, то что можно попробовать поправить?


А на LPC1788 встроенный резистор в 1.5кОм или внешний? Может не успеваете за 100мС после его подключения ответить винде?
Работал только с Атмелом.
andrewlekar
Внешний с функцией SoftConnect. Но он вроде как не при чём, потому что можно просто вытыкать разъём и втыкать - всё равно происходят сбои.
Щас ставлю эксперимент ещё один - вроде получше стало работать. Если заработает без проблем, то отпишусь как чинил.
kovigor
Цитата(andrewlekar @ Dec 4 2013, 14:13) *
Но он вроде как не при чём, потому что можно просто вытыкать разъём и втыкать - всё равно происходят сбои.

Если делать это слишком часто, энумерация может и не пройти, т.к. она начинается через ~100мС после обнаружения подключения хостом (это сделано с целью подавить дребезг).
А вообще, скачайте BusHound, шестой, и посмотрите, что и как сбоит ...
Myron
Цитата(kovigor @ Dec 4 2013, 08:25) *
А вообще, скачайте BusHound, шестой, и посмотрите, что и как сбоит ...


Прсветите, что есть BusHound, шестой.
kovigor
Цитата(Myron @ Dec 4 2013, 19:37) *
Прсветите, что есть BusHound, шестой.

А вот:
http://rutracker.org/forum/viewtopic.php?t=3905066

Рекомендую версию не ниже шестой ...
andrewlekar
У меня USBTrace используется.

Баг я нашёл. В моей версии NxpUsbLib было закомментировано ожидание готовности передатчика:

Код
while ( !Endpoint_IsINReady() )
    {
        Delay_MS(2);
    }

в функции Endpoint_Write_Stream_LE. Закомментировано было с пометкой, типа здесь виснет. После раскомментирования действительно висло. Выяснилось, что у флага isInReady не было атрибута volatile. После исправления всё заработало как надо.
Вроде как в свежей версии NxpUsbLib с этим всё в порядке.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.