Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR...

 
Опции темы
Непрочитано 14.07.2017, 16:41  
RECTO
Супер-модератор
 
Регистрация: 09.06.2011
Сообщений: 2,633
Сказал спасибо: 73
Сказали Спасибо 1,793 раз(а) в 647 сообщении(ях)
RECTO на пути к лучшему
По умолчанию Re: USB HID.Помогите разобраться с дескрипторами.

Сообщение от alex 54 Посмотреть сообщение
Прочитал про конфигурирование под FS режим:
Полноскоростные устройства опознаются USB-хостом по подтягивающему резистору номиналом 1,5 кОм, подключаемому к сигнальной линии D+.
Вопрос:и это все?Я подключаю вышеуказанный резистор и могу установить в "bInterval"
значение 1мс(сейчас там стоит значение 10мс)Больше ничего менять не надо?
Дело не в резисторах. Точнее, не только в них.
Смотрите конфигурирование USB-модуля. Режимы LS и FS должны переключаться через управляющие регистры установкой/сбросом соответствующих битов.
Ну, а уж такая ерунда, как подтягивающие резисторы, там вообще должны быть встроены и подключаться автоматически в зависимости от конфигурации.

P.S. Ну, и до кучи...
В дескрипторе устройства параметр bcdUSB нужно указать = 1.10 вместо 1.0 ("10, 01" вместо "00, 01").
В дескрипторе Device_Qualifier параметр bcdUSB - то же самое.
В дескрипторе класса параметр bcdHID - то же самое.
..
Реклама:

Последний раз редактировалось RECTO; 14.07.2017 в 16:59.
RECTO вне форума  
Непрочитано 14.07.2017, 23:58  
Godzilla82
Почётный гражданин KAZUS.RU
 
Регистрация: 29.10.2006
Сообщений: 1,447
Сказал спасибо: 96
Сказали Спасибо 318 раз(а) в 233 сообщении(ях)
Godzilla82 на пути к лучшему
Сообщение Re: USB HID.Помогите разобраться с дескрипторами.

Сообщение от RECTO Посмотреть сообщение
В дескрипторе устройства параметр bcdUSB нужно указать = 1.10 вместо 1.0 ("10, 01" вместо "00, 01").

В дескрипторе Device_Qualifier параметр bcdUSB - то же самое.
Если устройство не поддерживает High-speed, а версия USB 1.1 подразумевает это, на запрос о получении DEVICE_QUALIFIER дескриптора устройство должно отвечать REQUEST_ERROR.

Сообщение от RECTO Посмотреть сообщение
В дескрипторе класса параметр bcdHID - то же самое.
Вроде как версия HID не имеет отношения к версии USB. Другими словами, низкоскоростное устройство USB 1.0 может соответствовать спецификации HID 1.11.
Godzilla82 вне форума  
Непрочитано 15.07.2017, 04:32  
RECTO
Супер-модератор
 
Регистрация: 09.06.2011
Сообщений: 2,633
Сказал спасибо: 73
Сказали Спасибо 1,793 раз(а) в 647 сообщении(ях)
RECTO на пути к лучшему
По умолчанию Re: USB HID.Помогите разобраться с дескрипторами.

Сообщение от Godzilla82 Посмотреть сообщение
Если устройство не поддерживает High-speed, а версия USB 1.1 подразумевает это, на запрос о получении DEVICE_QUALIFIER дескриптора устройство должно отвечать REQUEST_ERROR.
К сожалению, ТС не указал, что же имелось ввиду под "реализацией полноскоростных (FS) соединений" в его случае... Просто USB версии 1.1 или же USB версии 2.0 с ограничением по скорости обмена не более 12 МБит/сек. Скорее всего, всё-таки второе. Причём, в этом случае в дескрипторе устройства стоит указать значение bcdUSB = 2.0. Кстати, я проверял: оба варианта работают нормально (и с bcdUSB = 2.0, и с bcdUSB = 1.10).

Сообщение от Godzilla82 Посмотреть сообщение
Вроде как версия HID не имеет отношения к версии USB. Другими словами, низкоскоростное устройство USB 1.0 может соответствовать спецификации HID 1.11.
Возможно, Вы правы... Ну, я просто всегда указываю bcdHID тоже = 1.10.
RECTO вне форума  
Непрочитано 15.07.2017, 14:06  
alex 54
Временная регистрация
 
Регистрация: 10.03.2017
Сообщений: 69
Сказал спасибо: 77
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
alex 54 на пути к лучшему
По умолчанию Re: USB HID.Помогите разобраться с дескрипторами.

Здравствуйте,регистр управления режимом FS нашел,устанавливаем Бит 6 и режим
FS установлен.Все так?http://my-files.ru/8qetmv
В конце файла есть конфигурация: USB Device Configuration Descriptor filled for FS and HS
ее не трогать?

А вот с параметром bcdUSB непонятки,в моем примере он везде указан как LE16(USB_VERSION),
Что это значит,пока не смог выяснить.


//! Only one interface for this device
#define USB_DEVICE_NB_INTERFACE 1

#ifdef USB_DEVICE_LPM_SUPPORT
# define USB_VERSION USB_V2_1
#else
# define USB_VERSION USB_V2_0
#endif

//! USB Device Descriptor
COMPILER_WORD_ALIGNED
UDC_DESC_STORAGE usb_dev_desc_t udc_device_desc = {
.bLength = sizeof(usb_dev_desc_t),
.bDescriptorType = USB_DT_DEVICE,
.bcdUSB = LE16(USB_VERSION),
.bDeviceClass = 0,
.bDeviceSubClass = 0,
.bDeviceProtocol = 0,
.bMaxPacketSize0 = USB_DEVICE_EP_CTRL_SIZE,
.idVendor = LE16(USB_DEVICE_VENDOR_ID),
.idProduct = LE16(USB_DEVICE_PRODUCT_ID),
.bcdDevice = LE16((USB_DEVICE_MAJOR_VERSION ‹‹
| USB_DEVICE_MINOR_VERSION),
#ifdef USB_DEVICE_MANUFACTURE_NAME
.iManufacturer = 1,
#else
.iManufacturer = 0, // No manufacture string
#endif
#ifdef USB_DEVICE_PRODUCT_NAME
.iProduct = 2,
#else
.iProduct = 0, // No product string
#endif
#if (defined USB_DEVICE_SERIAL_NAME || defined USB_DEVICE_GET_SERIAL_NAME_POINTER)
.iSerialNumber = 3,
#else
.iSerialNumber = 0, // No serial string
#endif
.bNumConfigurations = 1
};


#ifdef USB_DEVICE_HS_SUPPORT
//! USB Device Qualifier Descriptor for HS
COMPILER_WORD_ALIGNED
UDC_DESC_STORAGE usb_dev_qual_desc_t udc_device_qual = {
.bLength = sizeof(usb_dev_qual_desc_t),
.bDescriptorType = USB_DT_DEVICE_QUALIFIER,
.bcdUSB = LE16(USB_VERSION),
.bDeviceClass = 0,
.bDeviceSubClass = 0,
.bDeviceProtocol = 0,
.bMaxPacketSize0 = USB_DEVICE_EP_CTRL_SIZE,
.bNumConfigurations = 1
};
#endif

#ifdef USB_DEVICE_LPM_SUPPORT
//! USB Device Qualifier Descriptor
COMPILER_WORD_ALIGNED
UDC_DESC_STORAGE usb_dev_lpm_desc_t udc_device_lpm = {
.bos.bLength = sizeof(usb_dev_bos_desc_t),
.bos.bDescriptorType = USB_DT_BOS,
.bos.wTotalLength = LE16(sizeof(usb_dev_bos_desc_t) + sizeof(usb_dev_capa_ext_desc_t)),
.bos.bNumDeviceCaps = 1,
.capa_ext.bLength = sizeof(usb_dev_capa_ext_desc_t),
.capa_ext.bDescriptorType = USB_DT_DEVICE_CAPABILITY,
.capa_ext.bDevCapabilityType = USB_DC_USB20_EXTENSION,
.capa_ext.bmAttributes = USB_DC_EXT_LPM,
};
#endif

//! Structure for USB Device Configuration Descriptor
COMPILER_PACK_SET(1)
typedef struct {
usb_conf_desc_t conf;
udi_hid_mouse_desc_t hid_mouse;
} udc_desc_t;
COMPILER_PACK_RESET()

//! USB Device Configuration Descriptor filled for FS and HS
COMPILER_WORD_ALIGNED
UDC_DESC_STORAGE udc_desc_t udc_desc = {
.conf.bLength = sizeof(usb_conf_desc_t),
.conf.bDescriptorType = USB_DT_CONFIGURATION,
.conf.wTotalLength = LE16(sizeof(udc_desc_t)),
.conf.bNumInterfaces = USB_DEVICE_NB_INTERFACE,
.conf.bConfigurationValue = 1,
.conf.iConfiguration = 0,
.conf.bmAttributes = USB_CONFIG_ATTR_MUST_SET | USB_DEVICE_ATTR,
.conf.bMaxPower = USB_CONFIG_MAX_POWER(USB_DEVICE_POWER),
.hid_mouse = UDI_HID_MOUSE_DESC,
};

Последний раз редактировалось alex 54; 15.07.2017 в 14:20.
alex 54 вне форума  
Непрочитано 15.07.2017, 18:26  
RECTO
Супер-модератор
 
Регистрация: 09.06.2011
Сообщений: 2,633
Сказал спасибо: 73
Сказали Спасибо 1,793 раз(а) в 647 сообщении(ях)
RECTO на пути к лучшему
По умолчанию Re: USB HID.Помогите разобраться с дескрипторами.

Сообщение от alex 54 Посмотреть сообщение
Здравствуйте,регистр управления режимом FS нашел,устанавливаем Бит 6 и режим FS установлен.Все так?
Бит 6 нужно установить, но всё это или нет - не подскажу. С этими МК не работаю... Могу подсказать только по дескрипторам и общим моментам реализации USB-HID.

Сообщение от alex 54 Посмотреть сообщение
А вот с параметром bcdUSB непонятки,в моем примере он везде указан как LE16(USB_VERSION), Что это значит,пока не смог выяснить.
Это переменная или константа, значение которой присвоено где-то в другом месте. Ищите, чему равен "LE16(USB_VERSION)"...

Кстати, в дескрипторе класса не забудьте также изменить значение "wItemLength", он указывает длину репорт-дескриптора. Поскольку репорт Вы перепишете, этот параметр изменится.
RECTO вне форума  
Сказали "Спасибо" RECTO
alex 54 (16.07.2017)
Непрочитано 17.07.2017, 22:49  
alex 54
Временная регистрация
 
Регистрация: 10.03.2017
Сообщений: 69
Сказал спасибо: 77
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
alex 54 на пути к лучшему
По умолчанию Re: USB HID.Помогите разобраться с дескрипторами.

Здравствуйте,всем спасибо за вразумление,много чего стало понятно,но по одному вопросу хотелось бы не чтобы получить готовое решение,а хотя бы пинок в нужном направлении.Как я упоминал я летаю на серьезной виртуальной машине,используя
в качестве основного управления мышь эмулированную в джойстик.
Разгоном мыши я менял частоту опроса,и скажу что летать на 1 или 10 мс-
земля и небо.
Теперь я озадачилсяследуеющим вопросом:мышь или джойстик принадлежат к LS
классу USB,следовательно больше 10 мс с них не выжмешь.
FS в геймерских мышах и джойстиках как я понимаю устанавливается драйверами,
но при этом LS USB устройство остается LS USB устройством.
Может мне оставить мышь в покое,сомневаюсь чтобы режим FS можно установить
средствами микроконтроллера,хотя эти опции там есть,но они видимо для USB
устройств другого класса,и поискать другое решение,скажем как то подкорректировать
usbport.sys,как я думаю,драйверы геймерских мышей и джойстиков что то меняют в этом файле и устройство работает в режиме FS.
Если есть какие то соображения по этому поводу,поделитесь пожалуйста.

С уважением. Alex 54.
alex 54 вне форума  
Непрочитано 17.07.2017, 23:29  
RECTO
Супер-модератор
 
Регистрация: 09.06.2011
Сообщений: 2,633
Сказал спасибо: 73
Сказали Спасибо 1,793 раз(а) в 647 сообщении(ях)
RECTO на пути к лучшему
По умолчанию Re: USB HID.Помогите разобраться с дескрипторами.

Сообщение от alex 54 Посмотреть сообщение
следуеющим вопросом:мышь или джойстик принадлежат к LS классу USB, следовательно больше 10 мс с них не выжмешь.
Кажется, мы ходим по кругу... А почему не сделать так, как Вам уже здесь советовали не один раз:
1) Сконфигурировать устройство как FS;
2) Установить в дескрипторе значение bInterval = 1, bcdUSB = 1.10 (или 2.0);
3) PROFIT...

Сообщение от alex 54 Посмотреть сообщение
FS в геймерских мышах и джойстиках как я понимаю устанавливается драйверами, но при этом LS USB устройство остается LS USB устройством. Может мне оставить мышь в покое,сомневаюсь чтобы режим FS можно установить средствами микроконтроллера
Это устанавливается именно "средствами микроконтроллера". Точнее, передаётся через дескрипторы в процессе энумерации. Разумеется, конфигурация "железа" также должна соответствовать тому, что передаётся.

Сообщение от alex 54 Посмотреть сообщение
как я думаю,драйверы геймерских мышей и джойстиков что то меняют в этом файле и устройство работает в режиме FS.
Если устройство изначально работает в режиме LS (сброшен бит Speed Select), то никакие манипуляции с драйверами на компе не переключат его в FS.
RECTO вне форума  
Непрочитано 18.07.2017, 22:26  
alex 54
Временная регистрация
 
Регистрация: 10.03.2017
Сообщений: 69
Сказал спасибо: 77
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
alex 54 на пути к лучшему
По умолчанию Re: USB HID.Помогите разобраться с дескрипторами.

Спасибо,мне все это надо утрясти в голове,буду изучать дополнительно теорию по этому вопросу.
alex 54 вне форума  
Непрочитано 24.07.2017, 00:49  
Zork
Прохожий
 
Регистрация: 24.07.2017
Сообщений: 1
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Zork на пути к лучшему
По умолчанию Re: USB HID.Помогите разобраться с дескрипторами.

Здравствуйте уважаемые форумчане. Простите, что влезаю, но очень нужен совет. Реализовал HID устройство. Есть небольшая программка на ПК которая шлет и принимает данные на устройство (с устройства). Данные шлются буферами длиной по 64 байта. binterval установлен 1 мс. Все работает отлично. Проверял на всех компах, что были у меня под рукой. Различные ОС и разрядности машин. Передал устройство и программку заказчику. А у него на компах где ОС Win7 32 бита не работает (хотя у меня такой же комп). Смотрел отладчиком и программу на ПК и на МК. Например данные с ПК ушли а до МК не доходят или наоборот. Это происходит через неодинаковое количество переданных или принятых пакетов (буферов) каждый раз через разное количество. Может заткнуться на первом, а может и на 15-ом.Данные теряются где то в недрах ОС. А иногда в ходе передачи (приема) устройство просто отваливается из диспетчера устройств и пишет различные ошибки (от неопознанного устройства до таймаута). Опять повторюсь, это происходит не на всех компах. Если устройство подключать к "нерабочему" компу через внешних хаб, то все работает нормально. Подскажите куда копать?

Последний раз редактировалось Zork; 24.07.2017 в 01:08.
Zork вне форума  
Непрочитано 05.08.2017, 01:31  
Godzilla82
Почётный гражданин KAZUS.RU
 
Регистрация: 29.10.2006
Сообщений: 1,447
Сказал спасибо: 96
Сказали Спасибо 318 раз(а) в 233 сообщении(ях)
Godzilla82 на пути к лучшему
Сообщение Re: USB HID.Помогите разобраться с дескрипторами.

Сообщение от Zork Посмотреть сообщение
Подскажите куда копать?
копать в сторону корректной реализации всех стандартных запросов USB и HID. в частности засыпания / пробуждения / ресета на шине.

Возможно некорректная передача данных (буфера в 64 байта).
Например, шина не готова к приёму, нужно остановиться и подождать, когда шина освободится, а вы пихаете ей новые 64 байта.

Также возможно некорректно сделан протокол, который зависает при потере байтов при приёме. Пришло 63 байта. А вы ждёте 64-й, которого не будет.

Возможен банальный неконтакт в разъёме.

Ну и ещё куча ошибок, вплоть до неинициализированного указателя / структуры.

Короче, масса вариантов, которые только вы можете проверить и исключить.
Godzilla82 вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Печатная плата USBee AX picavr Барахолка электронных компонентов 950 20.08.2023 17:11
Ускорить компьютер 7Fantomas7 Ремонт оргтехники 111 08.08.2018 05:27
Не могу запустить USB контроллер ATMega32U4 Slava1355 AVR 12 29.09.2014 14:58
usb cdc pic18f14k50 gromovi Proteus, KiCAD и другие ECAD 9 21.04.2013 15:31
Помогите разобраться с PIC18F4550 и USB john2103 Микроконтроллеры, АЦП, память и т.д 26 02.08.2011 11:52


Часовой пояс GMT +4, время: 04:19.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot