loltrol 0 21 января, 2015 Опубликовано 21 января, 2015 · Жалоба 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 0 22 января, 2015 Опубликовано 22 января, 2015 · Жалоба 1) от хоста: запрос GET_DESCRIPTOR_DEVICE 2) от устрйства первые 8 байт DEVICE дескрипотра 3) от устрйства вторые 8 байт DEVICE дескрипотра 4) хост производит сброс шины и начинает с п. 1) Есть такая штука ZLP . Внимательно читать спецификацию USB ! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
loltrol 0 22 января, 2015 Опубликовано 22 января, 2015 · Жалоба Есть такая штука ZLP . Внимательно читать спецификацию USB ! А что-нибудь конструктивнее общеукрепляющих пожеланий нет? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
controller_m30 1 22 января, 2015 Опубликовано 22 января, 2015 · Жалоба Вот один вариант. Контроллер работает как FullSpeed или LowSpeed устройство - для которых буфера 8 байт достаточно, а Хаб умеет работать только как HighSpeed - и ему подавай 64-байтные пакеты. В общем пакеты не той длины. Или для Хаба не установлены драйвера (если это возможно - не знаю), или не та прошивка\настройка для поддержки Low и Full-Speed устройств. Другой вариант - скорость. Если Хаб High-Speed, то минимальная скорость транзакций должна быть 25 мегабит, а у Full-Speed максимум 12 мегабит (Low-Speed ещё меньше). Возможно Хаб не может обнаружить данных на той скорости на которой работает контроллер. Проверьте на другом Хабе своё устройство. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
loltrol 0 23 января, 2015 Опубликовано 23 января, 2015 · Жалоба Вот один вариант. Контроллер работает как FullSpeed или LowSpeed устройство - для которых буфера 8 байт достаточно, а Хаб умеет работать только как HighSpeed - и ему подавай 64-байтные пакеты. В общем пакеты не той длины. Или для Хаба не установлены драйвера (если это возможно - не знаю), или не та прошивка\настройка для поддержки Low и Full-Speed устройств. Другой вариант - скорость. Если Хаб High-Speed, то минимальная скорость транзакций должна быть 25 мегабит, а у Full-Speed максимум 12 мегабит (Low-Speed ещё меньше). Возможно Хаб не может обнаружить данных на той скорости на которой работает контроллер. Проверьте на другом Хабе своё устройство. Беда в том, что проверяю с одним и тем же хабом - на некоторых компах работает, на некоторых - нет. Жесткой зависимости от операционки и древности компа нет, есть оч древние компы на ХР с которыми все ОК. История тащится уже года три, точно помню что с хабом в моем мониторе раньше не работало, не так давно сменил комп и с удивлением обнаружил, что связь с устройством через мониторный хаб появилась. Т.е. проблема в хосте, НО убивает именно последовательность: хост - устройство: ОК! хост-хаб-устройство: фак! но запросы от хоста устройство видит, добросовестно шлет ответы Чувство такое, что все упирается в размер буфера EP0 - но почему..... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
controller_m30 1 23 января, 2015 Опубликовано 23 января, 2015 · Жалоба А какая настройка стандарта USB в BIOS тех компьютеров? Я встречал выбор из 1.0, 1.1 и 2.0. В современных наверное и 3.0 добавилась. Может Хаб передаёт данные устройства в компьютер, но тот, находясь в FS или LS режиме (принудительно заданном в BIOS) "не дружит" с быстрым Хабом? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
loltrol 0 24 января, 2015 Опубликовано 24 января, 2015 (изменено) · Жалоба А какая настройка стандарта USB в BIOS тех компьютеров? Я встречал выбор из 1.0, 1.1 и 2.0. В современных наверное и 3.0 добавилась. Может Хаб передаёт данные устройства в компьютер, но тот, находясь в FS или LS режиме (принудительно заданном в BIOS) "не дружит" с быстрым Хабом? Случилось чудо)) И как всякое чудо оно не поддается объяснению, а требует только веры в него На том компе, где через хаб не работает, в BIOS выключил режим USB 2.0 и девайс определился. Т.е. скорее всего хаб работал на HS и почему-то трансляция скоростей не проходила, загнав хост в режим USB 1.1, хаб стал работать в режиме репитера - и тут всем полегчало. Собственно, ничего яснее не стало )) Почему с одними хостами хабы могут работать нормально в режиме транслятора, а с другими нет. Что-то такого поведения с обычными мышами и клавами не наблюдал. Есть у меня устойство с тем же кодом, тот же HID но на ARM-7 (LPC2142, спецом поменял на нем код, сделав размер буфера контрольной точки 8 байт как на MSP) сравнивал поведение - разница одна: MSP почему-то после первого запроса GET_DESCRIPTOR_DEVICE и своих двух посылок по 8 байт делает паузу секунд на 5, после чего процесс обмена продолжается, на LPC все проходит без пауз. Вполне возможно, что для хаба в режиме трансляции это критично, точнее для хоста (для некоторых, зав от релиза, разные таймауты). Дело осталось за малым: понять в чем причина - устройство коммерческое и пользователям не на объясняешь, что им надо уронить некий "хост" в некий режим "FS" ))) Сделал скриншот обмена выведенного в терминал Изменено 24 января, 2015 пользователем loltrol Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
controller_m30 1 25 января, 2015 Опубликовано 25 января, 2015 · Жалоба А обязательно использовать устройство через Хаб? Пусть пользователь подключает к своему Хабу устройства 2.0 какие ему вздумается, а данное устройство только напрямую к компьютеру. И всё. А то комбинаций: разных Хабов от разных производителей, материнок с разными BIOS-ами, операционок с драйверами USB - множество, и все эти комбинации: тестировать, документировать и писать рекомендации как в каждом случае поступать - долго. Если устройство работает напрямую с компом всегда - вот пусть так и работает :rolleyes: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
loltrol 0 26 января, 2015 Опубликовано 26 января, 2015 · Жалоба Проблема порешалась, но, как грится, осадочек остался. Хост после первых 8 байт дискриптора желал прервать передачу и сообщал об этом пакетом OUT, который не принимался устройством: вот тут вопрос кнешно к TI, почему они в регистре USBOEPCNFG_0 после каждой передачи данных устройством по пакетам IN выставляют бит NAK, который и не дает хосту выслать свой ASK устройству (( Теперь, по каждому прерыванию по пакетам IN тру бит NAK для пакетов OUT и инициализация проходит мгновенно, и, как следствие, стало работать и с хабами которые работают на HS. Мдя... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться