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

 
 
> Плохая енумерация USB устройства на CY7C68001, Как с этим бороться?
jur
сообщение Sep 25 2007, 06:34
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 205
Регистрация: 16-10-05
Пользователь №: 9 704



Привет!

Давайте рассмотрим ситуацию. Имеется устройство на CY7C68001, подключенное к шине USB 2.0 и работающее в режиме High Speed. Для инициализации и управления микросхемой CY7C68001 имеется набортный микроконтроллер. Устройство подключено в стойке или внутри компьютерного корпуса, поэтому физический доступ к нему затруднен.

По включению компьютера иногда бывает, что устройство не енумерируется, т.е. в списке Менеджера Устройств Винды появляется неопознанное устройство. Обычно в такой ситуации рекомендуется переподключить устройство и надеяться, что оно опознается. Но в данном случае физическое переподключение затруднено.

Как быть в подобной ситуации?

Вроде напрашивается вариант сброса CY7C68001 и повторной ее инициализации микроконтроллером в случае непоявления бита HSGRANT после какого-то достаточно продолжительного таймаута. Но в случае работы в режиме Full Speed это не проходит (т.к. бит HSGRANT всегда будет равен 0).

Еще один вариант. Устройство собрано на микросхеме CY7C68013A. Тогда вообще хана. Если устройство неопознано, то невозможно осуществить загрузку фирмваре во встроенный микроконтроллер. Можно применить последовательную еепромку, но хотелось бы найти более "дубовое" и надежное решение повторной енумерации в случае какого-то сбоя. Может быть можно осуществить повторную енумерацию устройств штатными средствами Винды?

Какие будут соображения, коллеги?


--------------------
MPEG-4 - в массы!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Oldring
сообщение Sep 25 2007, 07:10
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874



Цитата(jur @ Sep 25 2007, 10:34) *
По включению компьютера иногда бывает, что устройство не енумерируется, т.е. в списке Менеджера Устройств Винды появляется неопознанное устройство. Обычно в такой ситуации рекомендуется переподключить устройство и надеяться, что оно опознается. Но в данном случае физическое


Какие у неопознанного устройства PID и VID?
Сброс USB интерфейса устройства при включении сделан корректно?


--------------------
Пишите в личку.
Go to the top of the page
 
+Quote Post
jur
сообщение Sep 25 2007, 11:53
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 205
Регистрация: 16-10-05
Пользователь №: 9 704



Цитата(Oldring @ Sep 25 2007, 10:10) *
Какие у неопознанного устройства PID и VID?

Вот последовательность действий, которую мне удалось поймать.

1. Начальное состояние:



2. Втыкаем устройство, оно не распознается:



3. Двойной клик на неизвестном устройстве, смотрим, ничего толкового не видим:



4. В программе USB View появляется неопознанное устройство:



Видно, что PID и VID равны нулю.

5. Наконец в менеджере устройств оно тоже появляется. Причем, никаких желтых знаков вопроса не возникает:



Цитата(Oldring @ Sep 25 2007, 10:10) *
Сброс USB интерфейса устройства при включении сделан корректно?

Да, вроде вполне корректно. Схему ресета я взял из их типового примера. Кроме того, микроконтроллер тоже ресетит микросхему (получается около миллисекунды).

Цитата(Седой @ Sep 25 2007, 14:05) *
Можно попробовать выключить и включить питание порта хаба, к которому подключено устройство.
Делается это программным способом, если хаб это поддерживает.

Попробуйте также отключить и потом включить использование хаба в диспетчере устройств.

Хм... Интересная мысль... А можно ли это сделать программно? А то я ни выключать питание хаба, ни выключать его использование программно не умею.


--------------------
MPEG-4 - в массы!
Go to the top of the page
 
+Quote Post
Konst_777
сообщение Sep 25 2007, 14:25
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 549
Регистрация: 1-06-05
Пользователь №: 5 644



Цитата(jur @ Sep 25 2007, 14:53) *
Кроме того, микроконтроллер тоже ресетит микросхему (получается около миллисекунды).

Может быть в этом и дело...
Из "EZ-USB® Technical Reference Manual" (ez_usb_r___technical_reference_manual__trm__14.pdf): "If the EZ-USB’s XTALIN pin is driven by an external clock source that continues to run while the chip is in reset, RESET# need only be asserted for 200 μs. Otherwise, it must be asserted for at least 5 ms."


Цитата(jur @ Sep 25 2007, 14:53) *
Хм... Интересная мысль... А можно ли это сделать программно? А то я ни выключать питание хаба, ни выключать его использование программно не умею.

Присоединяюсь к вопросу. Как программно выключать/включать питание для USB устройства, подключенного к одному из портов хаба?
Go to the top of the page
 
+Quote Post
jur
сообщение Sep 26 2007, 19:35
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 205
Регистрация: 16-10-05
Пользователь №: 9 704



Цитата(Oldring @ Sep 25 2007, 16:52) *
Я, к сожалению, не имею понятия, какая схема ресета в этом даташите. Искать его лень. Это self powered устройство?
Прошу прощения, забыл указать, что устройство имеет свой источник питания.

Цитата(Oldring @ Sep 25 2007, 16:52) *
То, что устройство Low speed - это так и задумано, или глюк?
Low speed - это результат того, что Винда не распознала устройство, поэтому считает, что имеет дело с какой-то паршивой мышью! ;-)

И еще прошу прощения, к сожалению не заметил темы "Нестабильное определение USB устройства". Моя проблема во многом схожа. С той разницей, что я внешних элементов не использую.
Цитата(Konst_777 @ Sep 25 2007, 17:25) *
Может быть в этом и дело...
Из "EZ-USB® Technical Reference Manual" (ez_usb_r___technical_reference_manual__trm__14.pdf): "If the EZ-USB’s XTALIN pin is driven by an external clock source that continues to run while the chip is in reset, RESET# need only be asserted for 200 μs. Otherwise, it must be asserted for at least 5 ms."
Большое спасибо за подсказку! Попробую углубиться в этот вопрос.

Кстати, нашел корявое, но работающее решение. Микроконтроллер проверяет выполнение енумерации, и в случае неудачи просто слепо ресетит микросхему и пытается еще раз. После < 10 попыток енумерация происходит.

Хотя, чувствую - коряво... :-)

Цитата(Седой @ Sep 25 2007, 21:01) *
1. Открыть драйвер хаба.
...
В Windows XP можно и через прямой вызов CLEAR_FEATURE и SET_FEATURE
Более детально см. usbioctl.h и usbuser.h в DDK.
...
Большое спасибо! Попробую.

Цитата(al333 @ Sep 26 2007, 12:01) *
Я правда под Linux, но жду сигнала ENUMOK и если не нужный режим или еще что-то, то сброс CY7C68001, который определяется как физическое отключение и, затем происходит повторная инициализация.
Во-во. Я тоже к этому же пришел, только под Виндой :-) Видать, путь правильный. Хоть и корявый...


--------------------
MPEG-4 - в массы!
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 22:22
Рейтинг@Mail.ru


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