Седой 0 12 мая, 2010 Опубликовано 12 мая, 2010 · Жалоба Такого не может быть, значит неправильно задали дескрипторы. Идеология USB именно предусматривает ..... А разработчик драйвера, являясь воинствующим атеистом, взял и ,пользуясь "визардом" DriverStudio, задал адреса EP так, как ему захотелось, даже не обращаясь к дескрипторам. Вот вам и " не может быть". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VslavX 0 12 мая, 2010 Опубликовано 12 мая, 2010 · Жалоба А разработчик драйвера, являясь воинствующим атеистом, взял и ,пользуясь "визардом" DriverStudio, задал адреса EP так, как ему захотелось, даже не обращаясь к дескрипторам. Вот вам и " не может быть". Умеючи-то что хошь можно сломать :) Я так понял из ситуации что драйвер нормальный есть - в него топикстартер не лазил. Хотя... Я того AT91USBFramework "в глаза" не видел, возможно Вы правы - какой там драйвер я не знаю - очень может быть что кривой (привязаться к физическим номерам EP - это клиника) . Привык вот следовать рекомендациям MS, юзать штатные классовые драйвера и не писать, по возможности, своих. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 42 12 мая, 2010 Опубликовано 12 мая, 2010 · Жалоба Умеючи-то что хошь можно сломать :) Я так понял из ситуации что драйвер нормальный есть - в него топикстартер не лазил. Хотя... Я того 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 А дескрипторы конечных точек я уже приводил выше Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VslavX 0 12 мая, 2010 Опубликовано 12 мая, 2010 · Жалоба А дескрипторы конечных точек я уже приводил выше У Вас там точки назначены обе на 2-ой физический адрес - 0x02 (OUT EP2), и 0x82 (IN EP2). Поменяйте 0x82, например, на 0x83 и инициализируйте EP3 - хост должен с нее начать спрашивать данные (если таки драйвер корректный). Если не получится - выложите лог, полученный анализатором (в какой-нить удобной форме, если USBlyzer - то можно и бинарник - я смогу посмотреть) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 42 13 мая, 2010 Опубликовано 13 мая, 2010 · Жалоба У Вас там точки назначены обе на 2-ой физический адрес - 0x02 (OUT EP2), и 0x82 (IN EP2). Это исходный вариант Поменяйте 0x82, например, на 0x83 и инициализируйте EP3 - хост должен с нее начать спрашивать данные (если таки драйвер корректный). Если не получится - выложите лог, полученный анализатором (в какой-нить удобной форме, если USBlyzer - то можно и бинарник - я смогу посмотреть) Когда я пытался на ходу переключать в контроллере конечные точки с OUT на IN в логах появлялись обращения к точке 0x82, но статус был "не выполнено", когда я заменил точку с 0x82 на 0x81 в логах обращений к 0x81 вообще не появляется. Я заказал STM32F103, там вроде физическим точкам можно присваивать любой логический номер. Поэтому откладываю этот вопрос до получения результатов работы с STM32F103. Всем спасибо за участие :beer: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sergeeff 1 13 мая, 2010 Опубликовано 13 мая, 2010 · Жалоба Это исходный вариант Когда я пытался на ходу переключать в контроллере конечные точки с OUT на IN в логах появлялись обращения к точке 0x82, но статус был "не выполнено", когда я заменил точку с 0x82 на 0x81 в логах обращений к 0x81 вообще не появляется. Я заказал STM32F103, там вроде физическим точкам можно присваивать любой логический номер. Поэтому откладываю этот вопрос до получения результатов работы с STM32F103. Всем спасибо за участие :beer: Ну так сделайте 0x02 --> 0x01, а 0x82 оставьте как есть. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 42 4 августа, 2010 Опубликовано 4 августа, 2010 · Жалоба Как и предполагалось, с STM32F103 все заработало. Правда я не писал все с нуля, а взял пример из STM32_USB-FS-Device_Lib_V3.1.1. Там нашелся пример CostumHID, где как раз используется одна физическая конечная точка на два направления (адреса 0х81 и 0х01). Подправил этот пример под свои нужды и все заработало. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться