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

 
 
> USB в at91rm9200, Проблемы с enumeration
sergeeff
сообщение Feb 17 2006, 17:48
Сообщение #1


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

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Коллеги!

Столкнулся с неожиданной для себя проблемой. Реализовал USB на at91rm9200 в соответствии с примерами с www.atmel.com. Иногда наблюдается совершенно удивительная вещь (точнее только когда хочу использовать USB-IF тест). Генерится прерывание. Устанавливается бит RXSETUP. Читаю FIFO c control endpoint’a. А там не новая команда, а “хвост” того, что я записал в это FIFO при посылке на host дескриптора или чего-то еще. Соответственно весь процесс enumeration рушится, и тест вообще устройство не обнаруживает. Причем, если из теста выхожу, переключается USB стек в компьютере обратно, и мое устройство благополучно распознается и подключается. Это что аппаратная ляпа в UDP Atmel’a?

Никто не сталкивался с аналогичными проблемами? Я пробовал различные USB 2.0 hub’ы. Единственно, что в компьтере USB 2.0 контроллер остается тем же.

С наилучшими пожеланиями.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
sapID
сообщение Feb 21 2006, 12:27
Сообщение #2


Участник
*

Группа: Свой
Сообщений: 24
Регистрация: 21-10-04
Из: Пермь, РФ
Пользователь №: 934



Тоже столкнулся с этим
Думал кеш дурит - отключение кеша не помогает
Причем, в регистре UDP_CSR[0] длина FIFO==0
Немного помогает такой код в обработке SETUP:


if ( !(pUDP->UDP_CSR[0] & AT91C_UDP_RXSETUP) )
return;

do
i32=pUDP->UDP_CSR[0];
while (((i32>>16)&0xFF)<8);

// далее как в примере...
bmRequestType = pUDP->UDP_FDR[0];
...

причины и решения пока не нашел

Сообщение отредактировал sapID - Feb 21 2006, 12:29
Go to the top of the page
 
+Quote Post



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

 


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


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