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

 
 
> USB-AT91SAM7A3
userqst
сообщение Feb 7 2011, 13:01
Сообщение #1





Группа: Новичок
Сообщений: 2
Регистрация: 15-01-11
Пользователь №: 62 256



Помогите разобраться.

Имею: AT91SAM7A3-EK, IAR WB, отладка через SAM-ICE.

Написал сам обработку алгоритма USB (библиотеки не использовал). Проблема возникла в самом начале)) Никак не могу отослать хосту device_descritor. Для 0 точки пакеты должны быть 8 байт. Собственно, для device_descriptor'а пакет размером 18 байт, соответственно мне его нужно порезать на части 8 + 8 + 2. Режу его, но не успеваю я отослать последний пакет (2 байта), как хост мне посылает очередной запрос device_descriptor'a. Хост перебивает мои попытки отослать ему данные раза 4 и выдает сообщение мол устройство не опознано (работает не правильно).

Может я не правильно отсылаю данные к Хосту? Если данные не помещаются в один пакет изначально, то я досылаю их в обработчике прерывания (по AT91C_UDP_TXCOMP) , в данном случае, для 0ой точки. Направление(IN/OUT) 0ой точки меняю, при необходимости, до сброса флага RXSETUP, бит AT91C_UDP_TXPKTRDY выставляю сразу после заполнения буфера UDP_FDR...

Помогите пожалуйста, очень нужно - уже целый день бьюсь с этим(((
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 2)
MALLOY2
сообщение Feb 8 2011, 10:41
Сообщение #2


Знающий
****

Группа: Validating
Сообщений: 838
Регистрация: 31-01-05
Пользователь №: 2 317



открываете библиотеку от ATMEL и ковыряете ее, смотрите как сделали они, делаете выводы, и переписываете код еще лучше.
Go to the top of the page
 
+Quote Post
userqst
сообщение Feb 8 2011, 17:55
Сообщение #3





Группа: Новичок
Сообщений: 2
Регистрация: 15-01-11
Пользователь №: 62 256



Разобрался! Дело в том, что я не знал как происходит энумерация устройства. Описанная мной проблема происходила по причине того, что Хост посылает reset после чтения первых 8 байт дескриптора устройства, а потом задавал адрес и т.п..

***

Сейчас, возникла еще одна проблема))) Я не могу отправить 2 дескриптора конечных точек... Если я посылаю дескриптор одной точки все работает отлично. Конфигурация такая:

CODE
{
sizeof(USB_DESCRIPTOR_INTERFACE),
DESCRIPTOR_INTERFACE,
0,
0,
2, // показываем, что используются две точки
0xff,
0,
0,
0
},
{
sizeof(USB_DESCRIPTOR_ENDPOINT),
DESCRIPTOR_ENDPOINT,
DESCRIPTOR_EP_ADDR_OUT | 1,
DESCRIPTOR_EP_ATTR_BULK,
64,
0,
},
{
sizeof(USB_DESCRIPTOR_ENDPOINT),
DESCRIPTOR_ENDPOINT,
DESCRIPTOR_EP_ADDR_IN | 2,
DESCRIPTOR_EP_ATTR_BULK,
64,
0,
},


В чем может быть проблема?
Go to the top of the page
 
+Quote Post

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

 


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


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