USB

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

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

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

Re: USB

Сообщение Кирилл »

При запуске примера на МК 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

Сообщение Кирилл »

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

Re: USB

Сообщение Кирилл »

На hardFault попадает после выполнения команды USB device.class_cb->EP0_TxSend(); походу что то не то со структурой USBDev_ClassCB. Потому что та же проблема возникает при обработке команды USB device.class_cb->SOF();
Сергей
Сообщения: 20
Зарегистрирован: 25 янв 2018, 15:10
Предприятие: АО "Корпорация "ВНИИЭМ"

Re: USB

Сообщение Сергей »

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

Re: USB

Сообщение Кирилл »

Прикрепляю рабочий проект для Keil. Проблема была в инициализация структур, поэтому объявил дескрипторы через массив. Исправил инициализацию device descriptor и hid gamepad descriptor, насчет USB cdc не уверен. главной целью было запустить проект, поэтому код плохой :( но зато он работает :)
тестировал на плате MBS-K1921BK01T.
Среда разработки - Keil uVision V5.14.0.0
Вложения
USB_working_Keil.rar
(1.46 МБ) 117 скачиваний
Кирилл
Сообщения: 11
Зарегистрирован: 03 окт 2018, 09:45
Предприятие: ООО НПП "ЭКРА"

Re: USB

Сообщение Кирилл »

Здравствуйте еще раз.
Удалось запустить и CDC и HID, но возник вопрос: сколько конечных точек поддерживает МК? если, например, хочется сделать составное устройство. и где в примере по USB поменять максимальное количество поддерживаемых конечных точек? там все настроено на 4 конечные точки, 3 и 4 из которых нельзя использовать (errata_K1921VK01T).
Роман
Сообщения: 28
Зарегистрирован: 26 янв 2018, 12:01
Предприятие: ВНИИЭМ

Re: USB

Сообщение Роман »

>плохой :( но зато он работает :)
Что-то не получается воспроизвести - если верить wiresharkу работает он миллисекунд 100, далее на запрос IN от hosta контроллер отвечает пакетом без данных с таким статусом "URB status: No such file or directory (-ENOENT) (-2)" после чего host запросы не шлёт, что бы это могло быть?
bkolbov
Сообщения: 248
Зарегистрирован: 14 дек 2015, 11:37
Предприятие: АО НИИЭТ
Откуда: Воронеж

Re: USB

Сообщение bkolbov »

Добрый день!

Исправили некоторые баги в тех примерах USB, что уже были в открытом доступе. Обновленные версии выложили в репозиторий K1921VKx_SDK - проекты usb_hid_gamepad и usb_cdc_vcp.
Роман
Сообщения: 28
Зарегистрирован: 26 янв 2018, 12:01
Предприятие: ВНИИЭМ

Re: USB

Сообщение Роман »

Спасибо за ответ, но похоже поведение не изменилось (точно не пока скажу т.к. копи-пастил интересующие куски в свой проект),
хочу собрать как-есть, в репозитории присутствуют файлы build_all.sh build_debug.sh build_release.sh clean.sh, но
при запуске ругается на старый cmake - проверю позже.
Поведение HID в принципе не похоже на корректное, т.к. в примере данные отправляются каждый интервал опроса, а данных у устройства может не быть и в ответ на IN token должен отправлятся NAK, не понял из описания как это сделать, или аппаратно так отвечает если не класть данные в буфер?
bkolbov
Сообщения: 248
Зарегистрирован: 14 дек 2015, 11:37
Предприятие: АО НИИЭТ
Откуда: Воронеж

Re: USB

Сообщение bkolbov »

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

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