Миландр

Ключевым подразделением нашей компании
является Центр Проектирования интегральных микросхем
Текущее время: 2021-окт-23 17:15

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 32 сообщения ]  На страницу « 1 2 3 »
Автор Сообщение
 Заголовок сообщения: Re: USB HID - Keil 5
СообщениеДобавлено: 2017-май-10 15:45 
Не в сети

Зарегистрирован: 2014-мар-17 18:18
Сообщения: 38
A_D писал(а):

Посмотрите, пропаяно ли всё нормально в части USB. И по поводу кварца на 16Мгц, помню что тоже пробовал давно как то и так и не завелось, на 8 Мгц никогда проблем не было. На LDM плате как раз пробовал эту прошивку - работало нормально.
Поменял дескриптор репорта, вроде добился того чтоб определялась как клавиатура (с косяками конечно).
Но никак не пойму как отправить нажатие на клавишу.

В цикле с задержкой начал отправлять, но видимо это не правильно.

Не посмотрите мой проект, где там ошибка.


Вложения:
Firmware_HID.7z [333.77 КБ]
313 скачиваний
Вернуться к началу
 Заголовок сообщения: Re: USB HID - Keil 5
СообщениеДобавлено: 2017-май-11 13:41 
Не в сети

Зарегистрирован: 2014-авг-11 19:26
Сообщения: 124
Попробую на днях посмотреть, но не обещаю, что скоро выйдет... приболел неожиданно, да и с нашими МК уже работы фактически давно у меня нет - как то скатилась контора, где я по отечественной комплектухе плотно разрабатывал схемы\платы.

_________________
https://adelectronics.ru
Заходи, не стесняйся! ;)


Вернуться к началу
 Заголовок сообщения: Re: USB HID - Keil 5
СообщениеДобавлено: 2017-май-12 09:17 
Не в сети

Зарегистрирован: 2010-авг-30 19:12
Сообщения: 544
постараюсь посмотреть в выходные.
Предлагаю для изучения файл.особенно приложение B и F. Может что сами проясните.
Вложение:
HID1_11.pdf [659.85 КБ]
481 скачивание


Вернуться к началу
 Заголовок сообщения: Re: USB HID - Keil 5
СообщениеДобавлено: 2017-май-12 16:36 
Не в сети

Зарегистрирован: 2010-авг-30 19:12
Сообщения: 544
Это теоретические изыскания. Код не компилился и не проверялся.
Паузу нужно вставить МЕЖДУ командами "нажатия и отпускания клавиши
иначе код кнопки находится в буфере только пока выполняется функция USB_WriteEP()
функция НЕ ГАРАНТИРУЕТ отправку сообщения, просто копирует его в буфер EP. таким образом в буфере оказывается 2 собщения вместо 1.
Ну и соответственно GetInReport() ВСЕГДА копирует пустой буфер (отсутствие нажатых кнопок)
  OutReport[2] =0x09;
	    USB_WriteEP(0x80,OutReport,8);
           
            for(i=0; i<100000000; i++); // обязательная пауза
	    
           OutReport[2] =0x00;
	    USB_WriteEP(0x80,OutReport,8);

            for(i=0; i<100000000; i++);


Вернуться к началу
 Заголовок сообщения: Re: USB HID - Keil 5
СообщениеДобавлено: 2017-май-15 11:00 
Не в сети

Зарегистрирован: 2014-мар-17 18:18
Сообщения: 38
редактор писал(а):
Это теоретические изыскания. Код не компилился и не проверялся.
Паузу нужно вставить МЕЖДУ командами "нажатия и отпускания клавиши
иначе код кнопки находится в буфере только пока выполняется функция USB_WriteEP()
функция НЕ ГАРАНТИРУЕТ отправку сообщения, просто копирует его в буфер EP. таким образом в буфере оказывается 2 собщения вместо 1.
Ну и соответственно GetInReport() ВСЕГДА копирует пустой буфер (отсутствие нажатых кнопок)
  OutReport[2] =0x09;
	    USB_WriteEP(0x80,OutReport,8);
           
            for(i=0; i<100000000; i++); // обязательная пауза
	    
           OutReport[2] =0x00;
	    USB_WriteEP(0x80,OutReport,8);

            for(i=0; i<100000000; i++);
Пробовал. Проблема не в этом.
Вроде endpoint правильно написал. Не могу понять в чем проблема.
Либо вообще не там шлю эти данные.


Вернуться к началу
 Заголовок сообщения: Re: USB HID - Keil 5
СообщениеДобавлено: 2017-май-15 17:01 
Не в сети

Зарегистрирован: 2014-авг-11 19:26
Сообщения: 124
Прошу. Рабочий проект клавиатуры.
Проверял на такой плате https://www.ldm-systems.ru/product/19002 кварц 8Мгц.
Задействовал кнопки, вверх\вниз отправляют - а и в символы. Селект (посередине) - переключает капслок. По бокам справа\слева должны по идее отправлять тоже символы а\в но с модификатором - LSHIFT, но что то не работает.... мне в лом уже разбираться честно говоря... (в кейле тем более не дописали для клавиатуры много чего) :)
в качестве рабочего примера - более чем считаю.


Вложения:
Firmware_Keyboard.zip [69.08 КБ]
498 скачиваний

_________________
https://adelectronics.ru
Заходи, не стесняйся! ;)
Вернуться к началу
 Заголовок сообщения: Re: USB HID - Keil 5
СообщениеДобавлено: 2017-май-19 11:14 
Не в сети

Зарегистрирован: 2014-мар-17 18:18
Сообщения: 38
A_D писал(а):
Прошу. Рабочий проект клавиатуры.
Проверял на такой плате https://www.ldm-systems.ru/product/19002 кварц 8Мгц.
Задействовал кнопки, вверх\вниз отправляют - а и в символы. Селект (посередине) - переключает капслок. По бокам справа\слева должны по идее отправлять тоже символы а\в но с модификатором - LSHIFT, но что то не работает.... мне в лом уже разбираться честно говоря... (в кейле тем более не дописали для клавиатуры много чего) :)
в качестве рабочего примера - более чем считаю.
Огромнейшее спасибо. Все работает. Немного переделал и все шикардос.)) Осталось разобраться со string дескрипторами.


Вернуться к началу
 Заголовок сообщения: Re: USB HID - Keil 5
СообщениеДобавлено: 2019-дек-06 17:55 
Не в сети

Зарегистрирован: 2019-ноя-26 08:33
Сообщения: 6
Организация: ООО НПО Горизонт
Подскажите пожалуйста, настроил endpoint1 Out
/* Endpoint, HID Interrupt In */
  USB_ENDPOINT_DESC_SIZE,            /* bLength */
  USB_ENDPOINT_DESCRIPTOR_TYPE,      /* bDescriptorType */
  USB_ENDPOINT_IN(1),                /* bEndpointAddress */
  USB_ENDPOINT_TYPE_INTERRUPT,       /* bmAttributes */
  WBVAL(8),   										/* wMaxPacketSize */
  8,           				           /* bInterval = 1, 2, 4, 8, 16, 32 */
	/* Endpoint, HID Interrupt Out */
  USB_ENDPOINT_DESC_SIZE,            /* bLength */
  USB_ENDPOINT_DESCRIPTOR_TYPE,      /* bDescriptorType */
  USB_ENDPOINT_OUT(1),                /* bEndpointAddress */
  USB_ENDPOINT_TYPE_INTERRUPT,       /* bmAttributes */
  WBVAL(8),   										/* wMaxPacketSize */
  8,           				           /* bInterval = 1, 2, 4, 8, 16, 32 */
/* Terminator */
  0                                  /* bLength */
Где хранится информация о состоянии CAPS LOCK, по идее в endpoint1 Out, т.е. после USB_ReadEP(0x01,OutReport) в OutReport[1] должен появится один из битов о состоянии CAPS LOCK? Но это не работает, где искать состояние LED CAPS LOCK?


Вернуться к началу
 Заголовок сообщения: Re: USB HID - Keil 5
СообщениеДобавлено: 2019-дек-12 13:16 
Не в сети

Зарегистрирован: 2018-апр-27 13:45
Сообщения: 4
Организация: GosNIIAS
A_D писал(а): *
Прошу. Рабочий проект клавиатуры.
Проверял на такой плате https://www.ldm-systems.ru/product/19002 кварц 8Мгц.
Задействовал кнопки, вверх\вниз отправляют - а и в символы. Селект (посередине) - переключает капслок. По бокам справа\слева должны по идее отправлять тоже символы а\в но с модификатором - LSHIFT, но что то не работает.... мне в лом уже разбираться честно говоря... (в кейле тем более не дописали для клавиатуры много чего) :)
в качестве рабочего примера - более чем считаю.
попробовал собрать данный проект под ВЕ1Т для проверки на отладочной плате с этим микроконтроллером.

При сборке вылезают следующие ошибки:

compiling MDR32F9Qx_usb_CDC.c...
C:\Keil_v5\ARM\PACK\Keil\MDR1986BExx\1.5\Libraries\MDR32F9Qx_StdPeriph_Driver\src\USB_Library\MDR32F9Qx_usb_CDC.c(404): error: #20: identifier "USB_CDC_HANDLE_SEND_ERROR" is undefined
USB_CDC_HANDLE_SEND_ERROR);
C:\Keil_v5\ARM\PACK\Keil\MDR1986BExx\1.5\Libraries\MDR32F9Qx_StdPeriph_Driver\src\USB_Library\MDR32F9Qx_usb_CDC.c(406): error: #20: identifier "USB_CDC_HANDLE_LINE_STATE_REPORT_SEND_ERROR" is undefined
USB_CDC_HANDLE_LINE_STATE_REPORT_SEND_ERROR);
C:\Keil_v5\ARM\PACK\Keil\MDR1986BExx\1.5\Libraries\MDR32F9Qx_StdPeriph_Driver\src\USB_Library\MDR32F9Qx_usb_CDC.c(484): warning: #177-D: variable "wValue" was declared but never referenced
uint16_t wValue = USB_CurrentSetupPacket.wValue,
C:\Keil_v5\ARM\PACK\Keil\MDR1986BExx\1.5\Libraries\MDR32F9Qx_StdPeriph_Driver\src\USB_Library\MDR32F9Qx_usb_CDC.c(485): warning: #177-D: variable "wIndex" was declared but never referenced
wIndex = USB_CurrentSetupPacket.wIndex,
C:\Keil_v5\ARM\PACK\Keil\MDR1986BExx\1.5\Libraries\MDR32F9Qx_StdPeriph_Driver\src\USB_Library\MDR32F9Qx_usb_CDC.c(617): error: #20: identifier "USB_CDC_HANDLE_DATA_SENT" is undefined
return USB_CDC_HANDLE_DATA_SENT;
C:\Keil_v5\ARM\PACK\Keil\MDR1986BExx\1.5\Libraries\MDR32F9Qx_StdPeriph_Driver\src\USB_Library\MDR32F9Qx_usb_CDC.c(680): warning: #177-D: function "USB_CDC_DoDataOut" was declared but never referenced
static USB_Result USB_CDC_DoDataOut(USB_EP_TypeDef EPx, uint8_t* Buffer, uint32_t Length)
C:\Keil_v5\ARM\PACK\Keil\MDR1986BExx\1.5\Libraries\MDR32F9Qx_StdPeriph_Driver\src\USB_Library\MDR32F9Qx_usb_CDC.c: 3 warnings, 3 errors

пошел искать взаимосвязь и наткнулся на следующее, при сборке в файле MDR32F9Qx_usb_default_handlers.h не выполняется условие #if (USB_DEVICE_CLASS == USB_DEVICE_CLASS_CDC) т.к. не объявлен USB_DEVICE_CLASS, хотя на него не ругается компилятор. Поиском не нашел нигде эту константу. Может в моей версии стандартной библиотеки она по другому называется?

Вообще для чего нужна переменная USB_DEVICE_CLASS? По сути это все выполняется когда класс USB устройства объявлен как CDC, нужно ли это для реализации HID клавиатуры?

Прошу не пинать, сильно в проекте не капался.


Вернуться к началу
 Заголовок сообщения: Re: USB HID - Keil 5
СообщениеДобавлено: 2019-дек-12 14:29 
Не в сети

Зарегистрирован: 2019-ноя-26 08:33
Сообщения: 6
Организация: ООО НПО Горизонт
Heupoxupypr писал(а): *
A_D писал(а): *
Прошу. Рабочий проект клавиатуры.
Проверял на такой плате https://www.ldm-systems.ru/product/19002 кварц 8Мгц.
Задействовал кнопки, вверх\вниз отправляют - а и в символы. Селект (посередине) - переключает капслок. По бокам справа\слева должны по идее отправлять тоже символы а\в но с модификатором - LSHIFT, но что то не работает.... мне в лом уже разбираться честно говоря... (в кейле тем более не дописали для клавиатуры много чего) :)
в качестве рабочего примера - более чем считаю.
попробовал собрать данный проект под ВЕ1Т для проверки на отладочной плате с этим микроконтроллером.

При сборке вылезают следующие ошибки:

compiling MDR32F9Qx_usb_CDC.c...
C:\Keil_v5\ARM\PACK\Keil\MDR1986BExx\1.5\Libraries\MDR32F9Qx_StdPeriph_Driver\src\USB_Library\MDR32F9Qx_usb_CDC.c(404): error: #20: identifier "USB_CDC_HANDLE_SEND_ERROR" is undefined
USB_CDC_HANDLE_SEND_ERROR);
C:\Keil_v5\ARM\PACK\Keil\MDR1986BExx\1.5\Libraries\MDR32F9Qx_StdPeriph_Driver\src\USB_Library\MDR32F9Qx_usb_CDC.c(406): error: #20: identifier "USB_CDC_HANDLE_LINE_STATE_REPORT_SEND_ERROR" is undefined
USB_CDC_HANDLE_LINE_STATE_REPORT_SEND_ERROR);
C:\Keil_v5\ARM\PACK\Keil\MDR1986BExx\1.5\Libraries\MDR32F9Qx_StdPeriph_Driver\src\USB_Library\MDR32F9Qx_usb_CDC.c(484): warning: #177-D: variable "wValue" was declared but never referenced
uint16_t wValue = USB_CurrentSetupPacket.wValue,
C:\Keil_v5\ARM\PACK\Keil\MDR1986BExx\1.5\Libraries\MDR32F9Qx_StdPeriph_Driver\src\USB_Library\MDR32F9Qx_usb_CDC.c(485): warning: #177-D: variable "wIndex" was declared but never referenced
wIndex = USB_CurrentSetupPacket.wIndex,
C:\Keil_v5\ARM\PACK\Keil\MDR1986BExx\1.5\Libraries\MDR32F9Qx_StdPeriph_Driver\src\USB_Library\MDR32F9Qx_usb_CDC.c(617): error: #20: identifier "USB_CDC_HANDLE_DATA_SENT" is undefined
return USB_CDC_HANDLE_DATA_SENT;
C:\Keil_v5\ARM\PACK\Keil\MDR1986BExx\1.5\Libraries\MDR32F9Qx_StdPeriph_Driver\src\USB_Library\MDR32F9Qx_usb_CDC.c(680): warning: #177-D: function "USB_CDC_DoDataOut" was declared but never referenced
static USB_Result USB_CDC_DoDataOut(USB_EP_TypeDef EPx, uint8_t* Buffer, uint32_t Length)
C:\Keil_v5\ARM\PACK\Keil\MDR1986BExx\1.5\Libraries\MDR32F9Qx_StdPeriph_Driver\src\USB_Library\MDR32F9Qx_usb_CDC.c: 3 warnings, 3 errors

пошел искать взаимосвязь и наткнулся на следующее, при сборке в файле MDR32F9Qx_usb_default_handlers.h не выполняется условие #if (USB_DEVICE_CLASS == USB_DEVICE_CLASS_CDC) т.к. не объявлен USB_DEVICE_CLASS, хотя на него не ругается компилятор. Поиском не нашел нигде эту константу. Может в моей версии стандартной библиотеки она по другому называется?

Вообще для чего нужна переменная USB_DEVICE_CLASS? По сути это все выполняется когда класс USB устройства объявлен как CDC, нужно ли это для реализации HID клавиатуры?

Прошу не пинать, сильно в проекте не капался.
У меня на 1986ВЕ92У все норм собралось. Тут для HID, CDC и не должен выполняться.
Из википедии:
Описание кодов классов:
Код Название Примеры использования/примечание
00h N/A Не задано
01h Audio Звуковая карта, MIDI
02h Communication Device (CDC) Модем, сетевая карта, COM-порт
03h Human Interface Device (HID) Клавиатура, мышь, джойстик


Вернуться к началу
 Заголовок сообщения: Re: USB HID - Keil 5
СообщениеДобавлено: 2019-дек-12 15:02 
Не в сети

Зарегистрирован: 2018-апр-27 13:45
Сообщения: 4
Организация: GosNIIAS
Kremen писал(а): *

У меня на 1986ВЕ92У все норм собралось. Тут для HID, CDC и не должен выполняться.
Из википедии:
Описание кодов классов:
Код Название Примеры использования/примечание
00h N/A Не задано
01h Audio Звуковая карта, MIDI
02h Communication Device (CDC) Модем, сетевая карта, COM-порт
03h Human Interface Device (HID) Клавиатура, мышь, джойстик
Ну в файле MDR32F9Qx_lib.h есть строки

/* Supported USB Device Classes */
#define USB_DEVICE_CLASS_CDC 2

это меня и ввело в ступор.

И по ходу для ВЕ1Т все таки есть существенные отличия, т.к. даже в стандартной библиотеке драйвер USB для ВЕ9х отличается от набора библиотек драйвера для ВЕхх.


Вернуться к началу
 Заголовок сообщения: Re: USB HID - Keil 5
СообщениеДобавлено: 2019-дек-18 18:36 
Не в сети

Зарегистрирован: 2014-сен-09 07:21
Сообщения: 26
Может, интересно будет, выкладываю проект примера USB HID Mouse на отладочной плате 1986ВЕ93У с использованием драйвера CMSIS.


Вложения:
Комментарий к файлу: Проект Keil
USB_HID_Mouse_Example.zip [73.53 КБ]
254 скачивания
Вернуться к началу
 Заголовок сообщения: Re: USB HID - Keil 5
СообщениеДобавлено: 2021-сен-09 11:36 
Не в сети

Зарегистрирован: 2021-сен-08 10:03
Сообщения: 4
Организация: АО Горизонт
Добрый день! Подскажите у кого получилось на основе проекта USB_HID_Mouse_Example собрать рабочее USB HID устройство.
Столкнулся с проблемой. В данном проекте не получается принять данные от хоста. Проверял ли кто возможность приема данных от хоста.


Вложения:
USB_HID_Mouse_Example.zip [73.53 КБ]
7 скачиваний
Вернуться к началу
 Заголовок сообщения: Re: USB HID - Keil 5
СообщениеДобавлено: 2021-сен-10 09:30 
Не в сети

Зарегистрирован: 2014-сен-09 07:21
Сообщения: 26
Александр_34 писал(а): *
Добрый день! Подскажите у кого получилось на основе проекта USB_HID_Mouse_Example собрать рабочее USB HID устройство.
Столкнулся с проблемой. В данном проекте не получается принять данные от хоста. Проверял ли кто возможность приема данных от хоста.
HID Mouse имеет только endpoint IN. Т. е. напрямую данные не принимает с хоста, данные передаются от устройства к хосту.


Вернуться к началу
 Заголовок сообщения: Re: USB HID - Keil 5
СообщениеДобавлено: 2021-сен-10 10:25 
Не в сети

Зарегистрирован: 2021-сен-08 10:03
Сообщения: 4
Организация: АО Горизонт
transformator писал(а): *
Александр_34 писал(а): *
Добрый день! Подскажите у кого получилось на основе проекта USB_HID_Mouse_Example собрать рабочее USB HID устройство.
Столкнулся с проблемой. В данном проекте не получается принять данные от хоста. Проверял ли кто возможность приема данных от хоста.
HID Mouse имеет только endpoint IN. Т. е. напрямую данные не принимает с хоста, данные передаются от устройства к хосту.
Это я понимаю. Я переделал устройство и задействовал endpoint OUT (переделал репорт и конфигурацию) поскольку мне требуется принимать пакеты данных от хоста. Однако столкнулся с проблемой приема. Передачу прослеживаю через Wireshark, вижу что данные направлены в endpoint OUT с адресом 0x01. Когда данные приходят в устройство я прослеживаю свои переданные данные в регистре SEP_FIFIO2_TXFDC. Мне совершенно непонятно почему именно в FIFO2, он не относится к моей endpoint OUT (или я просто чего то не понимаю ). Endpoint OUT с адресом 0x02 у меня вообще не настроена и неактивна. Endpoint IN имеет адрес 0x81, endpoint OUT имеет адрес 0x01. Очевидно что в функции USBD_HID0_SetReport в *buf данные не поступаю. Начал искать ответ в файле Driver_USBD.c на вероятные ошибки, но пока что безуспешно.


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 32 сообщения ]  На страницу « 1 2 3 »

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 10 гостей


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

Перейти: 

Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB