Миландр

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

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




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

Зарегистрирован: 2014-авг-11 19:26
Сообщения: 124
Приветствую!
Т.к. не нашел внятных примеров для Keil - в основном были проекты какие то непонятные, которые вроде и компилировались даже - но что то толком не работали или работали не корректно, привожу ниже пример для Keil 5.15 с использованием модифицированного пака SPL. За основу взят пример, не до конца работающий с этого же форума и доработан.
Возможности:
-Поддержка Feature, Input, Output Reports.
-Используются массивы по 8 байт для обмена.
-Используется ядро Keil'a для реализации HID устройства и чуть исправленный драйвер железного уровня, написанный R Max.

Текущие проблемы:
-При первом подключении после установки драйвера или при подключенном к ПК и включении ПК - устройство не верно определяется (ошибка дескриптора) - если переподключить устройство, то всё корректно работает.
-Не было надобности - поэтому не вникал почему так, но пару попыток увеличить размер пакета >8байт - не дали успеха (устройство не определялось), скорей всего дело в том, что я забыл Low Speed переключить на High Speed.
-Используется Endpoint 0 для всего - по хорошему бы передачу данных перенести на другую Endpoint...

В паке применены мелкие правки и файл MDR32F9Qx_usb_device.c перенесён из категории USB Library в USB для отвязки от CDC примера и корректной компиляции.
Milandr.MDR1986BExx.1.4.0U.pack.zip - уберите расширение .zip и пакет поставится стандартными средствами Keil (ограничение форума на расширения файлов).

Может кому пригодится :) Проект вычищен более менее. Так же, может кто разберётся с указанными проблемами или найдет какие либо ошибки - просьба, отпишитесь тут! ;)


Вложения:
Milandr.MDR1986BExx.1.4.0U.pack.zip [2.39 МБ]
754 скачивания
Firmware_HID.zip [1.22 МБ]
810 скачиваний

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

Зарегистрирован: 2014-авг-14 23:01
Сообщения: 3
Спасибо. Это хорошая новость.
A_D писал(а):
-При первом подключении после установки драйвера или при подключенном к ПК и включении ПК - устройство не верно определяется (ошибка дескриптора) - если переподключить устройство, то всё корректно работает.
- То же самое и с CDC.


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

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


Так же к слову о паке - не так давно поднималась тема где то рядом о RTOS - так вот, с этим паком в 5м кейле его встроенная RTOS с нуля создается в течении минуты... вчера ради интереса попробовал создать проект и подключить к нему минимум всего и в 2х задачах помигать светодиодами на встроенном тактовом генераторе. И оно сразу без запинок заработало!
Пример прилагаю.
Использовал 5.15 кейл и последнее актуальное описание операционки с офф сайта кейл - очень просто всё. Пока что не было возможности проверить всё хорошо - может есть подводные камни, о которых пока не знаю.


Вложения:
RTX Test.zip [36.09 КБ]
560 скачиваний

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

Зарегистрирован: 2014-сен-09 07:21
Сообщения: 26
Спасибо большое за рабочий пример!

Хочется только понимать, насколько это полноценный код? Т. е. реально на его основе написать рабочую прошивку usb мыши, например?


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

Зарегистрирован: 2014-сен-09 07:21
Сообщения: 26
Раскомментировал строки
      GetInReport();
      USB_WriteEP(HID_EP_IN, InReport, sizeof(InReport));
в функции USB_EndPoint1:
/*
 *  USB Endpoint 1 Event Callback
 *   Called automatically on USB Endpoint 1 Event
 *    Parameter:       event
 */

void USB_EndPoint1 (U32 event) 
{
  switch (event) 
	{
    case USB_EVT_IN: 
      GetInReport();
      USB_WriteEP(HID_EP_IN, InReport, sizeof(InReport));
      break;
		
		default:
			
      break;
  }
}
в итоге получил циклически отправляющуюся посылку от устройства.


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

Зарегистрирован: 2014-авг-11 19:26
Сообщения: 124
Получили в итоге почти стандартный пример от Keil'a :)

А по вопросу выше - как по мне, реализовать мышь или клавиатуру можно. Нужно только Endpoint 1 протестировать и скорректировать дескриптор. К примеру бегло пробежавшись по одному из примеров реализации клавиатуры, вроде ничего особенного не потребуется.

Если у Вас получится - выкладывайте результаты, при возможности! Интересно будет что то новое попробовать на этом МК )

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


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

Зарегистрирован: 2014-сен-09 07:21
Сообщения: 26
Сделал в точности как в примере http://www.soel.ru/cms/f/?/452415.pdf

В диспетчере появилась клавиатура.

Но всё равно постоянно идут сообщения на компьютер. Так точно не должно быть.

Дело в функции
void USB_EndPoint1 (U32 event) 


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

Зарегистрирован: 2014-авг-11 19:26
Сообщения: 124
Так вы же сами добавили постоянную отсылку Input Report - точно так же работает пример USB HID от Keil. Закоментите обратно то, что было закоменчено и не будут приходить Input Report'ы.

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


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

Зарегистрирован: 2014-сен-09 07:21
Сообщения: 26
Тогда вообще никакие сообщения не будут отсылаться.


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

Зарегистрирован: 2014-сен-09 07:21
Сообщения: 26
Переделал дескриптор под мышь. В результате вообще перестала вызываться функция
void USB_EndPoint1 (U32 event) 
. Как следствие, ничего после этого не отправляется на компьютер.


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

Зарегистрирован: 2014-сен-09 07:21
Сообщения: 26
После исправления строчки
#define HID_INPUT_REPORT_BYTES      8  
на
#define HID_INPUT_REPORT_BYTES      4  
всё заработало как раньше


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

Зарегистрирован: 2014-сен-09 07:21
Сообщения: 26
Только сейчас заметил, что написано в первом сообщении. HID устройство не подключается при загрузке системы. Работает только если устройство подключить физически к уже загруженной системе.
Есть какие-нибудь средства, чтобы выявить эту неисправность?


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

Зарегистрирован: 2014-сен-09 07:21
Сообщения: 26
Устройство не определялось при загрузке системы из-за того, что после получения от хоста команды "Сброс", конечная точка 0 переставала отвечать хосту.
Чтобы исправить эту ситуацию, надо в функции
void USB_ResetIRQ(void)
добавить строчки
USB_DeviceContext.Address = 0;
USB_SetSA(USB_DeviceContext.Address);
void USB_ResetIRQ(void)
{
	// Double Buffering is not yet supported 
	MDR_USB->SIS=0x1F; //Clear Interrupt Status
	MDR_USB->SIM=RESET_IE | TDONE_IE | (USB_SOF_EVENT ? SOF_IE : 0); //Enable interrupts
	//Setup Control Endpoint 0
	MDR_USB->USB_SEP_FIFO[0].RXFC=1; //Clear RX FIFO EndPoint 0
	MDR_USB->USB_SEP_FIFO[0].TXFDC=1;	//Clear TX FIFO EndPoint 0
	MDR_USB->USB_SEP[0].CTRL = EP_EN | EP_RDY; //Enable Endpoint 0, go to endpoint redy state
	
	USB_DeviceContext.Address = 0;
	USB_SetSA(USB_DeviceContext.Address);
}


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

Зарегистрирован: 2014-мар-17 18:18
Сообщения: 38
Не меняя ничего прошил свой микроконтроллер.
Неопознанное USB устройство.

Собственно мне нужна простая клавиатура, которая будет посылать код нажатой клавиши, полученной ею по UART.

Подтяжку к 3.3В выставил на D-.
Попробовал поменять LOW_Speed на FULL_Speed, и перенести подтяжку на D+. Никакой разницы.

Плата LDM_Helper K1986BE92QI

Умножители и на USB и общий поменял с 12 на 6. так как на плате стоит HSE на 16МГц.

Устройство либо неопознанно, либо вообще ничего не происходит при подключении.Где копать


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

Зарегистрирован: 2014-авг-11 19:26
Сообщения: 124
Омар писал(а):
Не меняя ничего прошил свой микроконтроллер.
Неопознанное USB устройство.

Собственно мне нужна простая клавиатура, которая будет посылать код нажатой клавиши, полученной ею по UART.

Подтяжку к 3.3В выставил на D-.
Попробовал поменять LOW_Speed на FULL_Speed, и перенести подтяжку на D+. Никакой разницы.

Плата LDM_Helper K1986BE92QI

Умножители и на USB и общий поменял с 12 на 6. так как на плате стоит HSE на 16МГц.

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

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


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

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


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

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


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

Перейти: 

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