USB

32-разрядные микроконтроллеры разработки ОАО "НИИЭТ"

Модераторы: dav, bkolbov, pip, _sva_

Роман
Сообщения: 28
Зарегистрирован: 26 янв 2018, 12:01
Предприятие: ВНИИЭМ

Re: USB

Сообщение Роман » 26 фев 2019, 12:35

В общем один в один запустить не получилось (вернее не работает), но с такими изменениями:
diff -urN K1921VKx_SDK.orig/hardware/bsp/NIIET-EVAL-K1921VK01T/bsp.c K1921VKx_SDK/hardware/bsp/NIIET-EVAL-K1921VK01T/bsp.c
--- K1921VKx_SDK.orig/hardware/bsp/NIIET-EVAL-K1921VK01T/bsp.c 2019-02-25 15:59:41.062998033 +0300
+++ K1921VKx_SDK/hardware/bsp/NIIET-EVAL-K1921VK01T/bsp.c 2019-02-26 11:25:02.402515832 +0300
@@ -161,7 +161,7 @@

void BSP_USB_Init()
{
- NT_COMMON_REG->USB_CTRL = (0 << COMMON_REG_USB_CTRL_FSEL_Pos) | // 12 MHz
+ NT_COMMON_REG->USB_CTRL = (1 << COMMON_REG_USB_CTRL_FSEL_Pos) | // 24 MHz
(1 << COMMON_REG_USB_CTRL_CLKEN_Pos) | // clk en
(1 << COMMON_REG_USB_CTRL_CLKSEL_Pos); // xtal
NT_COMMON_REG->PER_RST0_bit.USBPHYRST = 1; // clear reset from usb phy
diff -urN K1921VKx_SDK.orig/platform/Device/NIIET/K1921VK01T/Source/system_K1921VK01T.c K1921VKx_SDK/platform/Device/NIIET/K1921VK01T/Source/system_K1921VK01T.c
--- K1921VKx_SDK.orig/platform/Device/NIIET/K1921VK01T/Source/system_K1921VK01T.c 2019-02-25 15:59:41.110994305 +0300
+++ K1921VKx_SDK/platform/Device/NIIET/K1921VK01T/Source/system_K1921VK01T.c 2019-02-26 11:16:37.258939007 +0300
@@ -145,9 +145,9 @@
NT_COMMON_REG->PLL_NF = 98;
NT_COMMON_REG->PLL_NR = 3;
#elif (OSECLK_VAL == 24000000)
- NT_COMMON_REG->PLL_CTRL_bit.REFSEL = COMMON_REG_PLL_CTRL_REFSEL_ExtOsc;
- NT_COMMON_REG->PLL_OD = 3;
- NT_COMMON_REG->PLL_NF = 98;
+ NT_COMMON_REG->PLL_CTRL = 0;
+ NT_COMMON_REG->PLL_OD = 2;
+ NT_COMMON_REG->PLL_NF = 48;
NT_COMMON_REG->PLL_NR = 4;
#else
#error "Please define OSECLK_VAL with correct value!"
diff -urN K1921VKx_SDK.orig/projects/NIIET-EVAL-K1921VK01T/usb_hid_gamepad/GCC/CMakeLists.txt K1921VKx_SDK/projects/NIIET-EVAL-K1921VK01T/usb_hid_gamepad/GCC/CMakeLists.txt
--- K1921VKx_SDK.orig/projects/NIIET-EVAL-K1921VK01T/usb_hid_gamepad/GCC/CMakeLists.txt 2019-02-25 15:59:39.751099927 +0300
+++ K1921VKx_SDK/projects/NIIET-EVAL-K1921VK01T/usb_hid_gamepad/GCC/CMakeLists.txt 2019-02-26 11:07:29.294105433 +0300
@@ -1,7 +1,7 @@
#-- Service --------------------------------------------------------------------
SET(CMAKE_TOOLCHAIN_FILE ../../../../tools/gcc_cm4f.cmake)
ENABLE_LANGUAGE(ASM)
-CMAKE_MINIMUM_REQUIRED(VERSION 3.8.0)
+#CMAKE_MINIMUM_REQUIRED(VERSION 3.8.0)
IF(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR})
MESSAGE(FATAL_ERROR "In-source builds not allowed. Please make a new directory (called a build directory) and run CMake from there. You may need to remove CMakeCache.txt." )
ENDIF()
@@ -11,7 +11,7 @@
PROJECT(usb_hid_gamepad) # Project name
SET(MCUNAME K1921VK01T) # MCU name
SET(BOARDNAME NIIET-EVAL-K1921VK01T) # Board name
-SET(OSECLK_VAL 12000000) # OSECLK value in Hz (0 if disconnected)
+SET(OSECLK_VAL 24000000) # OSECLK value in Hz (0 if disconnected)
SET(SYSCLK PLL) # SYSCLK source: PLL, OSI, OSE
SET(CKO NONE) # Clockout source: PLL, NONE (no clockout)
SET(RETARGET 1) # Enable(1) or disable(0) printf retarget

Устройство нормально определяется, но обмен обмен быстро прекращается.
Пример точно живой, тогда 24мГц на USB много?

bkolbov
Сообщения: 223
Зарегистрирован: 14 дек 2015, 11:37
Предприятие: АО НИИЭТ
Откуда: Воронеж

Re: USB

Сообщение bkolbov » 26 фев 2019, 12:53

Насколько я понял из диффа, вся разница лишь в том, что у вас 24 МГц внешний осциллятор. Верно?

Опишите подробнее как не работает пример, что значит обмен прекращается?

Роман
Сообщения: 28
Зарегистрирован: 26 янв 2018, 12:01
Предприятие: ВНИИЭМ

Re: USB

Сообщение Роман » 26 фев 2019, 13:16

Да, на плате кварц 24мГц, приложил лог обмена из wireshark. После определения устройства от hosta идут запросы на которые контроллер отвечает 65-и байтным пакетом в котором последний байт - данные hid, в какой-то момент от контроллера приходит ответ 64 байта (wireshark расшифровывает его статус как: URB status: No such file or directory (-ENOENT) (-2) ) и далее данные контроллер не отправляет (или хост не шлёт IN token).
Вложения
K1921VK01T-hid-example.pcapng.gz
(1.9 КБ) 11 скачиваний

bkolbov
Сообщения: 223
Зарегистрирован: 14 дек 2015, 11:37
Предприятие: АО НИИЭТ
Откуда: Воронеж

Re: USB

Сообщение bkolbov » 26 фев 2019, 14:47

Лог посмотрим.

Сейчас попробовали запустить пример с 24 Мгц тактированием, внеся те же самые изменения что и вы - всё работает. Проверяли в Win7 и CentOS7.
Кстати, у вас какая ОС? Мк через хаб подключаете или напрямую?

Роман
Сообщения: 28
Зарегистрирован: 26 янв 2018, 12:01
Предприятие: ВНИИЭМ

Re: USB

Сообщение Роман » 26 фев 2019, 16:41

Контороллер подключен напрямую, ОС ubuntu-16.04 с ядром 4.16.18 (дефолтное вроде тоже пробовал).

Роман
Сообщения: 28
Зарегистрирован: 26 янв 2018, 12:01
Предприятие: ВНИИЭМ

Re: USB

Сообщение Роман » 26 фев 2019, 17:17

На другом компе поведение такое же, пока единственная гипотеза - влияние usbmon (wireshark), хотя мышке и hid от stm32 он не мешает. Как без сниффера проверить работоспособность (этот gamepad курсором мыши в win7 должен управлять)?

bkolbov
Сообщения: 223
Зарегистрирован: 14 дек 2015, 11:37
Предприятие: АО НИИЭТ
Откуда: Воронеж

Re: USB

Сообщение bkolbov » 26 фев 2019, 17:35

На Вин7 должно появиться новое устройство. На linux я использовал такую утилиту: https://gitlab.com/evtest-qt/evtest-qt
Там должно быть пять кнопок.
Вложения
Screenshot_centos7.png
Screenshot_centos7.png (20.32 КБ) 2378 просмотров
скрин_вин7.png
скрин_вин7.png (151.85 КБ) 2378 просмотров

bkolbov
Сообщения: 223
Зарегистрирован: 14 дек 2015, 11:37
Предприятие: АО НИИЭТ
Откуда: Воронеж

Re: USB

Сообщение bkolbov » 27 фев 2019, 11:36

Роман писал(а):
26 фев 2019, 17:17
На другом компе поведение такое же, пока единственная гипотеза - влияние usbmon (wireshark), хотя мышке и hid от stm32 он не мешает.
Запустили со сниффером USBPcap на Вин7 и логи смотрели Wireshark - нигде не затыкается, всё работает.

Единственное, чтобы исключить какие-то программные вещи - могу предложить вам скинуть hex файл, чтобы мы зашили у себя.

Роман
Сообщения: 28
Зарегистрирован: 26 янв 2018, 12:01
Предприятие: ВНИИЭМ

Re: USB

Сообщение Роман » 27 фев 2019, 11:54

В общем пример hid работает! (и вызов HID_SendReport только по изменению состояния его не ломает), по всей видимости host не шлёт in token если данные никому не нужны (до этого смотрел hid на stm32, но там мышь и его опрашивает драйвер мыши), а данные от джойстика, по видимому, системе не нужны. Как-только запускаю evtest-qt (и открываю устройство) - появляется обмен в wireshark, прошу прощения за шум.
Кстати, похоже на ошибку: HID_IN_PACKET 4, а размер hid_report_t 1?

Роман
Сообщения: 28
Зарегистрирован: 26 янв 2018, 12:01
Предприятие: ВНИИЭМ

Re: USB

Сообщение Роман » 27 фев 2019, 12:31

Да, и спасибо за помощь - могло ещё долго доходить.

Ответить

Вернуться в «32-разрядные микроконтроллеры на ядре ARM Cortex»

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

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