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

 
 
 
Reply to this topicStart new topic
> Как правильно делать reset на шине USB, чтобы устройство сбросилось?
zuy
сообщение Jan 20 2010, 07:51
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 173
Регистрация: 30-11-05
Из: San Francisco
Пользователь №: 11 593



Проц LPC23хх, на нем работает хост и читает с флешки данные.
В процессе работы в любой момент устройство может заснуть и соответственно отрубает питание от флешки.
Обнаружилась такая проблема, что не всегда после этого флешки запускаются.
Иногда по выходу из слипа, флешка не отвечает на запрос первого дескриптора,
иногда проходит енумерацию, но перестает отвечать на запросы класса Mass storage.

Эксперименты показали, что если после зависания флешки опять войти в слип и выйти быстро в течении секунды, флешка так и висит,
но если просидеть в слипе секунд 15, то потом она нормально запускается и работает.
Похоже на то, что питание с шины USB когда вхожу в слип медленно падает и флешка не может полностью вернуться в начальное состояние.

Начало работы у меня сделано так. Обнаруживается устройство на шине, пауза 100мс, дается команда порту на ресет( устанавливается бит PRS в регистре HcRhPortStatus), пауза 100мс, запрос дескриптора.
И если флешка заглючила, то на этот запрос уже ответа нет.

Проблема наблюдается не часто, сильно зависит от конкретной флешки. Чаще всего на самых дешевых noname китайских флешках.

Может я не правильно начинаю работу после обнаружения флешки, как ее заставить сброситься?
Или нужно когда ухожу в слип, перед отключением питания с шины что-то еще сделать, чтобы хост дал команду флешке выключиться?
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 20th July 2025 - 14:43
Рейтинг@Mail.ru


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