Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: USB-AT91SAM7A3
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
userqst
Помогите разобраться.

Имею: 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...

Помогите пожалуйста, очень нужно - уже целый день бьюсь с этим(((
MALLOY2
открываете библиотеку от ATMEL и ковыряете ее, смотрите как сделали они, делаете выводы, и переписываете код еще лучше.
userqst
Разобрался! Дело в том, что я не знал как происходит энумерация устройства. Описанная мной проблема происходила по причине того, что Хост посылает 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,
},


В чем может быть проблема?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.