|
|
  |
MSP430F5529 usb не жужжит через hub, Устройство не определяется через HUB |
|
|
|
Jan 21 2015, 18:49
|
Группа: Участник
Сообщений: 12
Регистрация: 17-01-15
Пользователь №: 84 649

|
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) Точно не проблемы со связью - осциллограмы вполне нормальные да и хаб один и тот же - с одним компом работает, с другим - нет. На ноутах ситуёвина хуже - там и без внешнего хаба от ноута к ноуту то работает , то нет.
|
|
|
|
|
Jan 22 2015, 02:51
|
Местный
  
Группа: Участник
Сообщений: 326
Регистрация: 30-05-06
Пользователь №: 17 602

|
Цитата(loltrol @ Jan 21 2015, 22:49)  1) от хоста: запрос GET_DESCRIPTOR_DEVICE 2) от устрйства первые 8 байт DEVICE дескрипотра 3) от устрйства вторые 8 байт DEVICE дескрипотра 4) хост производит сброс шины и начинает с п. 1) Есть такая штука ZLP . Внимательно читать спецификацию USB !
|
|
|
|
|
Jan 22 2015, 10:20
|
Группа: Участник
Сообщений: 12
Регистрация: 17-01-15
Пользователь №: 84 649

|
Цитата(mcheb @ Jan 22 2015, 02:51)  Есть такая штука ZLP . Внимательно читать спецификацию USB ! А что-нибудь конструктивнее общеукрепляющих пожеланий нет?
|
|
|
|
|
Jan 23 2015, 08:13
|
Группа: Участник
Сообщений: 12
Регистрация: 17-01-15
Пользователь №: 84 649

|
Цитата(controller_m30 @ Jan 22 2015, 13:02)  Вот один вариант. Контроллер работает как FullSpeed или LowSpeed устройство - для которых буфера 8 байт достаточно, а Хаб умеет работать только как HighSpeed - и ему подавай 64-байтные пакеты. В общем пакеты не той длины. Или для Хаба не установлены драйвера (если это возможно - не знаю), или не та прошивка\настройка для поддержки Low и Full-Speed устройств.
Другой вариант - скорость. Если Хаб High-Speed, то минимальная скорость транзакций должна быть 25 мегабит, а у Full-Speed максимум 12 мегабит (Low-Speed ещё меньше). Возможно Хаб не может обнаружить данных на той скорости на которой работает контроллер.
Проверьте на другом Хабе своё устройство. Беда в том, что проверяю с одним и тем же хабом - на некоторых компах работает, на некоторых - нет. Жесткой зависимости от операционки и древности компа нет, есть оч древние компы на ХР с которыми все ОК. История тащится уже года три, точно помню что с хабом в моем мониторе раньше не работало, не так давно сменил комп и с удивлением обнаружил, что связь с устройством через мониторный хаб появилась. Т.е. проблема в хосте, НО убивает именно последовательность: хост - устройство: ОК! хост-хаб-устройство: фак! но запросы от хоста устройство видит, добросовестно шлет ответы Чувство такое, что все упирается в размер буфера EP0 - но почему.....
|
|
|
|
|
Jan 24 2015, 09:33
|
Группа: Участник
Сообщений: 12
Регистрация: 17-01-15
Пользователь №: 84 649

|
Цитата(controller_m30 @ Jan 23 2015, 13:57)  А какая настройка стандарта 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" ))) Сделал скриншот обмена выведенного в терминал
Сообщение отредактировал loltrol - Jan 24 2015, 09:50
Эскизы прикрепленных изображений
|
|
|
|
|
Jan 26 2015, 09:08
|
Группа: Участник
Сообщений: 12
Регистрация: 17-01-15
Пользователь №: 84 649

|
Проблема порешалась, но, как грится, осадочек остался. Хост после первых 8 байт дискриптора желал прервать передачу и сообщал об этом пакетом OUT, который не принимался устройством: вот тут вопрос кнешно к TI, почему они в регистре USBOEPCNFG_0 после каждой передачи данных устройством по пакетам IN выставляют бит NAK, который и не дает хосту выслать свой ASK устройству (( Теперь, по каждому прерыванию по пакетам IN тру бит NAK для пакетов OUT и инициализация проходит мгновенно, и, как следствие, стало работать и с хабами которые работают на HS. Мдя...
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|