Перейти к содержанию
    

MSP430F5529 usb не жужжит через hub

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)

Точно не проблемы со связью - осциллограмы вполне нормальные да и хаб один и тот же - с одним компом работает, с другим - нет. На ноутах ситуёвина хуже - там и без внешнего хаба от ноута к ноуту то работает , то нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1) от хоста: запрос GET_DESCRIPTOR_DEVICE

2) от устрйства первые 8 байт DEVICE дескрипотра

3) от устрйства вторые 8 байт DEVICE дескрипотра

4) хост производит сброс шины и начинает с п. 1)

Есть такая штука ZLP . Внимательно читать спецификацию USB !

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть такая штука ZLP . Внимательно читать спецификацию USB !

А что-нибудь конструктивнее общеукрепляющих пожеланий нет?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот один вариант. Контроллер работает как FullSpeed или LowSpeed устройство - для которых буфера 8 байт достаточно, а Хаб умеет работать только как HighSpeed - и ему подавай 64-байтные пакеты.

В общем пакеты не той длины. Или для Хаба не установлены драйвера (если это возможно - не знаю), или не та прошивка\настройка для поддержки Low и Full-Speed устройств.

 

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

 

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

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот один вариант. Контроллер работает как FullSpeed или LowSpeed устройство - для которых буфера 8 байт достаточно, а Хаб умеет работать только как HighSpeed - и ему подавай 64-байтные пакеты.

В общем пакеты не той длины. Или для Хаба не установлены драйвера (если это возможно - не знаю), или не та прошивка\настройка для поддержки Low и Full-Speed устройств.

 

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

 

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

Беда в том, что проверяю с одним и тем же хабом - на некоторых компах работает, на некоторых - нет. Жесткой зависимости от операционки и древности компа нет, есть оч древние компы на ХР с которыми все ОК. История тащится уже года три, точно помню что с хабом в моем мониторе раньше не работало, не так давно сменил комп и с удивлением обнаружил, что связь с устройством через мониторный хаб появилась. Т.е. проблема в хосте, НО убивает именно последовательность:

хост - устройство: ОК!

хост-хаб-устройство: фак! но запросы от хоста устройство видит, добросовестно шлет ответы

Чувство такое, что все упирается в размер буфера EP0 - но почему.....

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А какая настройка стандарта USB в BIOS тех компьютеров? Я встречал выбор из 1.0, 1.1 и 2.0. В современных наверное и 3.0 добавилась.

Может Хаб передаёт данные устройства в компьютер, но тот, находясь в FS или LS режиме (принудительно заданном в BIOS) "не дружит" с быстрым Хабом?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А какая настройка стандарта USB в BIOS тех компьютеров? Я встречал выбор из 1.0, 1.1 и 2.0. В современных наверное и 3.0 добавилась.

Может Хаб передаёт данные устройства в компьютер, но тот, находясь в FS или LS режиме (принудительно заданном в BIOS) "не дружит" с быстрым Хабом?

Случилось чудо)) И как всякое чудо оно не поддается объяснению, а требует только веры в него :biggrin:

На том компе, где через хаб не работает, в BIOS выключил режим USB 2.0 и девайс определился. Т.е. скорее всего хаб работал на HS и почему-то трансляция скоростей не проходила, загнав хост в режим USB 1.1, хаб стал работать в режиме репитера - и тут всем полегчало.

Собственно, ничего яснее не стало )) Почему с одними хостами хабы могут работать нормально в режиме транслятора, а с другими нет. Что-то такого поведения с обычными мышами и клавами не наблюдал. Есть у меня устойство с тем же кодом, тот же HID но на ARM-7 (LPC2142, спецом поменял на нем код, сделав размер буфера контрольной точки 8 байт как на MSP) сравнивал поведение - разница одна: MSP почему-то после первого запроса GET_DESCRIPTOR_DEVICE и своих двух посылок по 8 байт делает паузу секунд на 5, после чего процесс обмена продолжается, на LPC все проходит без пауз. Вполне возможно, что для хаба в режиме трансляции это критично, точнее для хоста (для некоторых, зав от релиза, разные таймауты). Дело осталось за малым: понять в чем причина - устройство коммерческое и пользователям не на объясняешь, что им надо уронить некий "хост" в некий режим "FS" ))) Сделал скриншот обмена выведенного в терминал

post-84649-1422093049_thumb.jpg

Изменено пользователем loltrol

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А обязательно использовать устройство через Хаб? Пусть пользователь подключает к своему Хабу устройства 2.0 какие ему вздумается, а данное устройство только напрямую к компьютеру. И всё.

А то комбинаций: разных Хабов от разных производителей, материнок с разными BIOS-ами, операционок с драйверами USB - множество, и все эти комбинации: тестировать, документировать и писать рекомендации как в каждом случае поступать - долго. Если устройство работает напрямую с компом всегда - вот пусть так и работает :rolleyes:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...