USB

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

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

Кирилл
Сообщения: 11
Зарегистрирован: 03 окт 2018, 09:45
Предприятие: ООО НПП "ЭКРА"

Re: USB

Сообщение Кирилл » 24 окт 2018, 16:55

При запуске примера на МК mbs-k1921bk01t Windows 7 выводит сообщение что "устройство USB не опознано". Запускаю пример HID_Gamepad.
Начав разбираться в коде, обнаружил что после первого прерывания на шину в функции USBDev_IntHandler, при обработке SOF (функция USBDev_SOF_Handler(), а именно при обработке команды USBDevice.class_cb->SOF()) возникает ошибка HardFault. Тут возникают вопросы: почему? Как исправить? И вроде можно же и без этой функции обойтись (USBDev_SOF_Handler())? (Только начал изучать USB, так что не ругайте:) я многое не понимаю)
Ок, закомментил SOF функцию. Т.е сейчас при обработке прерывания от SOF мы просто сбрасываем этот регистр (NT_USBDevice->USB_IRQ_STAT = ( 1<<0 );) и двигаемся дальше, к reset. После этого программа даже заходит на обработку от конечных точек ( цикл while (ep_irqs) ), но после первого прохождения снова попадаю на HardFault. В чем могут быть попроблемы предложительно?
Работаю на Keil v5.14

Кирилл
Сообщения: 11
Зарегистрирован: 03 окт 2018, 09:45
Предприятие: ООО НПП "ЭКРА"

Re: USB

Сообщение Кирилл » 25 окт 2018, 11:08

Ошибка: Вместо "первого прохождения снова попадаю на HardFault"
*Во время второго прохождения снова попадаю на HardFault

Кирилл
Сообщения: 11
Зарегистрирован: 03 окт 2018, 09:45
Предприятие: ООО НПП "ЭКРА"

Re: USB

Сообщение Кирилл » 25 окт 2018, 12:27

На hardFault попадает после выполнения команды USB device.class_cb->EP0_TxSend(); походу что то не то со структурой USBDev_ClassCB. Потому что та же проблема возникает при обработке команды USB device.class_cb->SOF();

Сергей
Сообщения: 8
Зарегистрирован: 25 янв 2018, 15:10
Предприятие: АО "Корпорация "ВНИИЭМ"

Re: USB

Сообщение Сергей » 26 окт 2018, 12:19

Кирилл писал(а):
24 окт 2018, 16:11
А вообще запустить usb? Без примера.
В принципе USB запустить удалось. Обмен через контрольную точку ведется. Устройство распознается. Но определяется с ошибкой, код 10.
Host запрашивает дескриптор устройства, конфигурации, строковые дескрипторы, выставляет адрес, но не запрашивает дескриптор репорта и устройство определяется с ошибкой. Может где-то нужно делать reset usb? И как это делать?

Кирилл
Сообщения: 11
Зарегистрирован: 03 окт 2018, 09:45
Предприятие: ООО НПП "ЭКРА"

Re: USB

Сообщение Кирилл » 01 ноя 2018, 09:45

Прикрепляю рабочий проект для Keil. Проблема была в инициализация структур, поэтому объявил дескрипторы через массив. Исправил инициализацию device descriptor и hid gamepad descriptor, насчет USB cdc не уверен. главной целью было запустить проект, поэтому код плохой :( но зато он работает :)
тестировал на плате MBS-K1921BK01T.
Среда разработки - Keil uVision V5.14.0.0
Вложения
USB_working_Keil.rar
(1.46 МБ) 12 скачиваний

Кирилл
Сообщения: 11
Зарегистрирован: 03 окт 2018, 09:45
Предприятие: ООО НПП "ЭКРА"

Re: USB

Сообщение Кирилл » 09 ноя 2018, 16:37

Здравствуйте еще раз.
Удалось запустить и CDC и HID, но возник вопрос: сколько конечных точек поддерживает МК? если, например, хочется сделать составное устройство. и где в примере по USB поменять максимальное количество поддерживаемых конечных точек? там все настроено на 4 конечные точки, 3 и 4 из которых нельзя использовать (errata_K1921VK01T).

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

Re: USB

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

>плохой :( но зато он работает :)
Что-то не получается воспроизвести - если верить wiresharkу работает он миллисекунд 100, далее на запрос IN от hosta контроллер отвечает пакетом без данных с таким статусом "URB status: No such file or directory (-ENOENT) (-2)" после чего host запросы не шлёт, что бы это могло быть?

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

Re: USB

Сообщение bkolbov » 21 фев 2019, 17:50

Добрый день!

Исправили некоторые баги в тех примерах USB, что уже были в открытом доступе. Обновленные версии выложили в репозиторий K1921VKx_SDK - проекты usb_hid_gamepad и usb_cdc_vcp.

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

Re: USB

Сообщение Роман » 22 фев 2019, 15:59

Спасибо за ответ, но похоже поведение не изменилось (точно не пока скажу т.к. копи-пастил интересующие куски в свой проект),
хочу собрать как-есть, в репозитории присутствуют файлы build_all.sh build_debug.sh build_release.sh clean.sh, но
при запуске ругается на старый cmake - проверю позже.
Поведение HID в принципе не похоже на корректное, т.к. в примере данные отправляются каждый интервал опроса, а данных у устройства может не быть и в ответ на IN token должен отправлятся NAK, не понял из описания как это сделать, или аппаратно так отвечает если не класть данные в буфер?

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

Re: USB

Сообщение bkolbov » 25 фев 2019, 09:08

хочу собрать как-есть, в репозитории присутствуют файлы build_all.sh build_debug.sh build_release.sh clean.sh, но
при запуске ругается на старый cmake - проверю позже.
Можете попробовать закомментировать проверку версии Cmake в самом верху CMakeLists. Вероятно, соберется.
Поведение HID в принципе не похоже на корректное, т.к. в примере данные отправляются каждый интервал опроса, а данных у устройства может не быть и в ответ на IN token должен отправлятся NAK, не понял из описания как это сделать, или аппаратно так отвечает если не класть данные в буфер?
Когда в точке нет данных, то во время транзакции NAK отправляется аппаратно.

Ответить

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

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

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