USB

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

Модераторы: 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 МБ) 1 скачивание

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

Re: USB

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

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

Ответить

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

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

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