реклама на сайте
подробности

 
 
> LPC17xx, USB device отваливается
esaulenka
сообщение Mar 13 2012, 13:39
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877



У нас в устройстве на LPC1768 реализован USB CDC интерфейс - для совместимости со старыми решениями, работающими через COM-порт.
Со стороны ПК ставим стандартный usbser.sys от майкрософта.

Столкнулись со следующей проблемой: периодически (из-за проблем со статикой) устройство решает, что ему надо уйти в Suspend.

Команда Get Device Status при этом возвращает 0x0C - suspend + suspend change, connect = 0. Устройство ПК видит, но на запросы оно отвечать перестаёт.
Пробовал "дёргать" подтяжкой D+ (висит на GPIO), результат отрицательный: ПК видит, что устройство пропало, а потом появляется новое устройство, но до запроса дескрипторов дело доходит с вероятностью около 50% - оно или остаётся в suspend, или всё-таки начинает работать.
Передёргивание шнурка руками также работает аналогично.

Собственно, вопрос: как бы из этой ситуации выбраться?


--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
esaulenka
сообщение Mar 14 2012, 17:52
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877



Цитата
Сопротивления на нескольку десятков Ом последовательно в линиях D+ и D- имеются ?

Угу, по 33 Ома. Конденсаторы тоже есть - всего 22 пФ, но параллельно им стоит защитный диод, у него своей паразитной емкости много (до 150 пФ по даташиту).
К тому же конденсаторы по спецификации USB не нужны - оговорена максимальная емкость (150 пФ) на линиях D+/D-, а не минимальная. Подозреваю, что с учётом разъема, дорожек и проч. я её несколько превышаю sm.gif

Собственно, вопрос больше софтовый: аппаратно мы проблему победили; после корректного заземления всего и вся вероятность сбоя снизилась на порядок. Интересно, как бороться с этим программно.

Совершенно случайно обнаружил свою ошибку: на входе VBus (используется именно как VBus) включен pull-down. На эту ногу заведено питание с USB через RC-цепочку 3.3 кОм - 0.1 мкФ.
Если убрать подтяжку, жить становится заметно веселей - в суспенд мы уходим реже, и корректно оттуда восстанавливаемся (передёргивая Connect, ничего лучше не придумал).

Теперь вопросов два:
- почему подтяжка влияет на состояние connect и где об этом написано в документации?
- (исходный вопрос) как корректно выйти из suspend ?


--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 06:03
Рейтинг@Mail.ru


Страница сгенерированна за 0.01368 секунд с 7
ELECTRONIX ©2004-2016