Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: MSP430F5529 usb не жужжит через hub
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > MSP430
loltrol
MSP430F5529 как HID устройство норм работает напрямую с компом, а при подключении ч-з внешний HUB не определяется. При мониторе запросов от хоста и вижу что он в принципе или не понимает ответов или не получает их - тупо шлет непрерывно GET_DESCRIPTOR_DEVICE и все. Аналогичный код жжужит на LPC2142 без проблем - разница одна: размер хв буффера EP0 у MSP - 8 байт, у LPC - 64. От хаба не зависит - при подключении к некоторым компам через хаб устройство работает, зависимости от операционки нет - пробовал на ХР и на 7 - никакой системы. Устройство питание от USB не использует, запросы точно понимает - выводил весь обмен по UART для мониторинга в реальном времени - картина всегда одна:
1) от хоста: запрос GET_DESCRIPTOR_DEVICE
2) от устрйства первые 8 байт DEVICE дескрипотра
3) от устрйства вторые 8 байт DEVICE дескрипотра
4) хост производит сброс шины и начинает с п. 1)
Точно не проблемы со связью - осциллограмы вполне нормальные да и хаб один и тот же - с одним компом работает, с другим - нет. На ноутах ситуёвина хуже - там и без внешнего хаба от ноута к ноуту то работает , то нет.
mcheb
Цитата(loltrol @ Jan 21 2015, 22:49) *
1) от хоста: запрос GET_DESCRIPTOR_DEVICE
2) от устрйства первые 8 байт DEVICE дескрипотра
3) от устрйства вторые 8 байт DEVICE дескрипотра
4) хост производит сброс шины и начинает с п. 1)

Есть такая штука ZLP . Внимательно читать спецификацию USB !
loltrol
Цитата(mcheb @ Jan 22 2015, 02:51) *
Есть такая штука ZLP . Внимательно читать спецификацию USB !

А что-нибудь конструктивнее общеукрепляющих пожеланий нет?
controller_m30
Вот один вариант. Контроллер работает как FullSpeed или LowSpeed устройство - для которых буфера 8 байт достаточно, а Хаб умеет работать только как HighSpeed - и ему подавай 64-байтные пакеты.
В общем пакеты не той длины. Или для Хаба не установлены драйвера (если это возможно - не знаю), или не та прошивка\настройка для поддержки Low и Full-Speed устройств.

Другой вариант - скорость. Если Хаб High-Speed, то минимальная скорость транзакций должна быть 25 мегабит, а у Full-Speed максимум 12 мегабит (Low-Speed ещё меньше). Возможно Хаб не может обнаружить данных на той скорости на которой работает контроллер.

Проверьте на другом Хабе своё устройство.

loltrol
Цитата(controller_m30 @ Jan 22 2015, 13:02) *
Вот один вариант. Контроллер работает как FullSpeed или LowSpeed устройство - для которых буфера 8 байт достаточно, а Хаб умеет работать только как HighSpeed - и ему подавай 64-байтные пакеты.
В общем пакеты не той длины. Или для Хаба не установлены драйвера (если это возможно - не знаю), или не та прошивка\настройка для поддержки Low и Full-Speed устройств.

Другой вариант - скорость. Если Хаб High-Speed, то минимальная скорость транзакций должна быть 25 мегабит, а у Full-Speed максимум 12 мегабит (Low-Speed ещё меньше). Возможно Хаб не может обнаружить данных на той скорости на которой работает контроллер.

Проверьте на другом Хабе своё устройство.

Беда в том, что проверяю с одним и тем же хабом - на некоторых компах работает, на некоторых - нет. Жесткой зависимости от операционки и древности компа нет, есть оч древние компы на ХР с которыми все ОК. История тащится уже года три, точно помню что с хабом в моем мониторе раньше не работало, не так давно сменил комп и с удивлением обнаружил, что связь с устройством через мониторный хаб появилась. Т.е. проблема в хосте, НО убивает именно последовательность:
хост - устройство: ОК!
хост-хаб-устройство: фак! но запросы от хоста устройство видит, добросовестно шлет ответы
Чувство такое, что все упирается в размер буфера EP0 - но почему.....
controller_m30
А какая настройка стандарта USB в BIOS тех компьютеров? Я встречал выбор из 1.0, 1.1 и 2.0. В современных наверное и 3.0 добавилась.
Может Хаб передаёт данные устройства в компьютер, но тот, находясь в FS или LS режиме (принудительно заданном в BIOS) "не дружит" с быстрым Хабом?
loltrol
Цитата(controller_m30 @ Jan 23 2015, 13:57) *
А какая настройка стандарта USB в BIOS тех компьютеров? Я встречал выбор из 1.0, 1.1 и 2.0. В современных наверное и 3.0 добавилась.
Может Хаб передаёт данные устройства в компьютер, но тот, находясь в FS или LS режиме (принудительно заданном в BIOS) "не дружит" с быстрым Хабом?

Случилось чудо)) И как всякое чудо оно не поддается объяснению, а требует только веры в него biggrin.gif
На том компе, где через хаб не работает, в BIOS выключил режим USB 2.0 и девайс определился. Т.е. скорее всего хаб работал на HS и почему-то трансляция скоростей не проходила, загнав хост в режим USB 1.1, хаб стал работать в режиме репитера - и тут всем полегчало.
Собственно, ничего яснее не стало )) Почему с одними хостами хабы могут работать нормально в режиме транслятора, а с другими нет. Что-то такого поведения с обычными мышами и клавами не наблюдал. Есть у меня устойство с тем же кодом, тот же HID но на ARM-7 (LPC2142, спецом поменял на нем код, сделав размер буфера контрольной точки 8 байт как на MSP) сравнивал поведение - разница одна: MSP почему-то после первого запроса GET_DESCRIPTOR_DEVICE и своих двух посылок по 8 байт делает паузу секунд на 5, после чего процесс обмена продолжается, на LPC все проходит без пауз. Вполне возможно, что для хаба в режиме трансляции это критично, точнее для хоста (для некоторых, зав от релиза, разные таймауты). Дело осталось за малым: понять в чем причина - устройство коммерческое и пользователям не на объясняешь, что им надо уронить некий "хост" в некий режим "FS" ))) Сделал скриншот обмена выведенного в терминал
controller_m30
А обязательно использовать устройство через Хаб? Пусть пользователь подключает к своему Хабу устройства 2.0 какие ему вздумается, а данное устройство только напрямую к компьютеру. И всё.
А то комбинаций: разных Хабов от разных производителей, материнок с разными BIOS-ами, операционок с драйверами USB - множество, и все эти комбинации: тестировать, документировать и писать рекомендации как в каждом случае поступать - долго. Если устройство работает напрямую с компом всегда - вот пусть так и работает rolleyes.gif
loltrol
Проблема порешалась, но, как грится, осадочек остался. Хост после первых 8 байт дискриптора желал прервать передачу и сообщал об этом пакетом OUT, который не принимался устройством: вот тут вопрос кнешно к TI, почему они в регистре USBOEPCNFG_0 после каждой передачи данных устройством по пакетам IN выставляют бит NAK, который и не дает хосту выслать свой ASK устройству (( Теперь, по каждому прерыванию по пакетам IN тру бит NAK для пакетов OUT и инициализация проходит мгновенно, и, как следствие, стало работать и с хабами которые работают на HS. Мдя...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.