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

 
 
> Нестабильное определение USB устройства
Angle
сообщение Sep 25 2007, 14:09
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 8-08-07
Из: Екатеринбург
Пользователь №: 29 638



Реализую обмен данными между ПК и платой с AT91SAM7A3.
Обмен (HID устройство) работает, но определяется виндой нестабильно как на одном компьютере так и при подключении к другому копмьютеру.
Устройство FullSpeed, линия D+ подтянута постоянно через 1,5кОм к 3,3В, плата питается от собственного источника питания.
После подключения кабеля USB к устройству:
При правильном обнаружении все работает ОК.
При неправильном обнаружении винда выдает "Обнаружено неизвестное устройство",
Программа USB View пишет про это неизвестное устройство: все нули (VID,PID и т.д.) и Bus Speed - LOW!(?). Как такое может быть ?
В чем может быть проблема: в аппаратной части (подтяжка, сброс контроллера) или в программе контроллера?
Нужна ли задержка во включении подтяжки линии D+ после подключения USB разьема?
Очень нужно гарантированное определение этого устройства на любом компьютере.
На рисунке схема из datasheet к AT91SAM7A3. Единственное, что К-Э транзистора я замкнул (так как на нем падает около 0,6 В).
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Angle
сообщение Sep 27 2007, 06:57
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 8-08-07
Из: Екатеринбург
Пользователь №: 29 638



Я немного изменил схему внешней обвязки. Подтяжка на D+ теперь подается только при наличии напряжения питания USB. Помогло, но не совсем - в большем количестве случаев устройство стало успешно определяться. В худшем случае - оно определяется при 2х-3x кратном соединении-разъединении с хостом.
У меня такой вопрос - как конкретно контроллер может понять, что хост его не определил (не произвел енумерацию), чтобы произвести программный сброс?
Go to the top of the page
 
+Quote Post
jur
сообщение Sep 27 2007, 19:44
Сообщение #3


Местный
***

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



Цитата(Angle @ Sep 27 2007, 09:57) *
У меня такой вопрос - как конкретно контроллер может понять, что хост его не определил (не произвел енумерацию), чтобы произвести программный сброс?
Если говорить о CY7C68013/CY7C68001, то я поступаю крайне просто: если не пришло прерывание ENUM_OK, то енумерация не произошла. Пока остановился на таком методе выпутывания из этой ситуации: даю ресет на микросхему и пытаюсь енумерироваться повторно. Срабатывает всегда. Правда, иногда требуется произвести несколько попыток енумерации.

Сегодня обнаружил другую проблему :-) Эта зараза (я про Винду с CY7C68001 в компании) иногда (очень редко, и только по утрам) енумерирует микросхему в режиме Full Speed. Вроде все корректно, но мое устройство не может работать на Full Speed - только на High Speed. Придется и это исправлять ресетом с повторной енумерацией.

Эта проклятая USB неисчерпаема как атом...


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



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

 


RSS Текстовая версия Сейчас: 22nd August 2025 - 16:53
Рейтинг@Mail.ru


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