Перейти к содержанию
    

Такого не может быть, значит неправильно задали дескрипторы. Идеология USB именно предусматривает .....

 

А разработчик драйвера, являясь воинствующим атеистом, взял и ,пользуясь "визардом" DriverStudio, задал адреса EP так, как ему захотелось, даже не обращаясь к дескрипторам. Вот вам и " не может быть".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А разработчик драйвера, являясь воинствующим атеистом, взял и ,пользуясь "визардом" DriverStudio, задал адреса EP так, как ему захотелось, даже не обращаясь к дескрипторам. Вот вам и " не может быть".

Умеючи-то что хошь можно сломать :)

Я так понял из ситуации что драйвер нормальный есть - в него топикстартер не лазил. Хотя... Я того AT91USBFramework "в глаза" не видел, возможно Вы правы - какой там драйвер я не знаю - очень может быть что кривой (привязаться к физическим номерам EP - это клиника) . Привык вот следовать рекомендациям MS, юзать штатные классовые драйвера и не писать, по возможности, своих.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Умеючи-то что хошь можно сломать :)

Я так понял из ситуации что драйвер нормальный есть - в него топикстартер не лазил. Хотя... Я того AT91USBFramework "в глаза" не видел....

 

Драйвер для компьютера есть нормальный, входит в комплект AVR Studio.

AT91USBFramework пример ATMEL для AT91SAM7xxxx. Входит в комплект IAR, живет в папочке example.

Вот полный список дескрипторов, которые ATMEL приводит для того драйвера, который входит в комплект AVR Studio (AppNote AVR069)

Device Descriptor 

bLength                    0x12 
bDescriptorType        0x01 
bcdUSB                    0x0110 
bDeviceClass            0xFF 
bDeviceSubClass      0x00 
bDeviceProtocol        0x00 
bMaxPacketSize0      0x10 
idVendor                  0x03EB 
idProduct                 0x2104 
bcdDevice                0x0200 
iManufacturer           0x01 
iProduct                   0x02 
iSerialNumber           0x03 
bNumConfigurations    0x01

Configuration descriptor 


bLength                       0x09 
bDescriptorType          0x02 
wTotalLength               0x0020
bNumInterface             0x01 
bConfigurationValue      0x01 
iConfiguration               0x00 
bmAttributes.                0x00 
bmAttributes.                 0x00 
bmAttributes.                 0x01 
bmAttributes.                0x01 
bMaxPower                   0x64 

Interface descriptor 

bLength                       0x09 
bDescriptorType           0x04 
bInterfaceNumber         0x00 
bAlternateSetting          0x00 
bNumEndpoints             0x02 
bInterfaceClass            0xFF 
bInterfaceSubClass      0x00 
bInterfaceProtocol        0x00 
iInterface                    0x00

 

А дескрипторы конечных точек я уже приводил выше

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А дескрипторы конечных точек я уже приводил выше

У Вас там точки назначены обе на 2-ой физический адрес - 0x02 (OUT EP2), и 0x82 (IN EP2). Поменяйте 0x82, например, на 0x83 и инициализируйте EP3 - хост должен с нее начать спрашивать данные (если таки драйвер корректный). Если не получится - выложите лог, полученный анализатором (в какой-нить удобной форме, если USBlyzer - то можно и бинарник - я смогу посмотреть)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У Вас там точки назначены обе на 2-ой физический адрес - 0x02 (OUT EP2), и 0x82 (IN EP2).

Это исходный вариант

 

Поменяйте 0x82, например, на 0x83 и инициализируйте EP3 - хост должен с нее начать спрашивать данные (если таки драйвер корректный). Если не получится - выложите лог, полученный анализатором (в какой-нить удобной форме, если USBlyzer - то можно и бинарник - я смогу посмотреть)

 

Когда я пытался на ходу переключать в контроллере конечные точки с OUT на IN в логах появлялись обращения к точке 0x82, но статус был "не выполнено", когда я заменил точку с 0x82 на 0x81 в логах обращений к 0x81 вообще не появляется.

 

Я заказал STM32F103, там вроде физическим точкам можно присваивать любой логический номер. Поэтому откладываю этот вопрос до получения результатов работы с STM32F103.

 

Всем спасибо за участие :beer:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это исходный вариант

 

 

 

Когда я пытался на ходу переключать в контроллере конечные точки с OUT на IN в логах появлялись обращения к точке 0x82, но статус был "не выполнено", когда я заменил точку с 0x82 на 0x81 в логах обращений к 0x81 вообще не появляется.

 

Я заказал STM32F103, там вроде физическим точкам можно присваивать любой логический номер. Поэтому откладываю этот вопрос до получения результатов работы с STM32F103.

 

Всем спасибо за участие :beer:

 

Ну так сделайте 0x02 --> 0x01, а 0x82 оставьте как есть.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как и предполагалось, с STM32F103 все заработало. Правда я не писал все с нуля, а взял пример из STM32_USB-FS-Device_Lib_V3.1.1. Там нашелся пример CostumHID, где как раз используется одна физическая конечная точка на два направления (адреса 0х81 и 0х01). Подправил этот пример под свои нужды и все заработало.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...