Перейти к содержанию
    

Уважаемые коллеги! Собственно в названии топика есть суть вопроса. Не приходилось ли кому-то реализовывать самому или встречать подобный пример в интернете? Хотелось бы к F746 или H743 прикрутить хаб, чтобы работать одновременно с мышкой и клавиатурой, и, если возможно, ещё и с флешкой. Спасибо.

Изменено пользователем s_black

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Посмотрите в IAR - там среди различных примеров, идущих в комплекте к "IAR for ARM", есть и хорошие примеры по работе с USB. USB-host не пробовал, но USB-device - вполне годно реализованы, со всеми исходниками и достаточно грамотно написаны. Под разные МК. Даже если нет примера под конкретно ваш МК, то можно портировать от другого, близкого по семейству.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо, jcxz! Однако, я наверное, не совсем чётко обозначил свою цель. Подключение отдельных девайсов (мышь, клавиатура, флешка) уже освоены. Сейчас же я хочу подключить их все сразу через хаб.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Непонятно в чем проблема. Hub вещь тривиальная, ставите - он работает. Можете проверить Ваш софт, подключив внешний hub из магазина.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Задача не решена в текущем варианте HSB HOST стека от ST.

В том числе требуются модификации HAL (добавление пары параметров одной из функций для указания порта и адреса за ним).

И повторной енумерации ЗА хабом.

Я делал, под единственное устройство за хабом.

В текущей версии не обрабатываются нотификации от хаба о подключении устройств - т.е. опознает только после запуска.
НО говорят легко вернуть. Поддерживается один хаб в цепочке устройств.

https://github.com/ua1arn/hftrx/tree/develop/lib/Middlewares/ST/STM32_USB_Host_Library/Class/HUB

 

Тестировалось на H7 F7 и MP1 с его EHCI.

Изменено пользователем GenaSPB

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вопрос немного не по теме топика... По какой причине мышь может отвечать STALL при запросе репорта? Кусок лога обмена ниже. Причем инициализация проходит нормально. Мышь такая Промышленная клавиатура с цифровыми клавишами и трекболом IP65 из нержавеющей стали USB клавиатура киоска 24 клавиши металлическая клавиатура | Компьютеры и офис | АлиЭкспресс (aliexpress.ru)

"PID DATA0"
"bmRequestType=0xA1 Data direction=Device to host, Type=Class, Recipient=Interface"
"bRequest=0x01 GET_REPORT (HID class)"
"wValue=0x0100 Report type=Input, Report ID=0x00"
"wIndex=0x0000 Interface=0x00"
"wLength=0x0004"
"CRC OK 0x805B"
"EOP"
"SYNC"
"PID STALL"
"EOP"
Изменено пользователем s_black

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А что мыша отдала по запросу config descriptor ?
Попробуйте посмотреть что при подключении к windows происходит с помощью USBLyzer (качать с родного сайта).

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

При подключении к компу эта мышь работает нормально, вообще без замечаний. Нет под рукой переходника, чтобы посмотреть обмен мыши с ПК. Обмен смотрю логическим анализатором. Меня в логе кое-что смущает. Пометка (incomlete) после  размера пакета wMaxPacketSize - что она означает? Что является незавершённым?

"PID DATA0"
"bDescriptorType=0x22 HID Report Descriptor"
"wDescriptorLength=0x0034"
"bLength=0x07"
"bDescriptorType=0x05 ENDPOINT"
"bEndpointAddress=0x81 Endpoint=1, Direction=IN"
"bmAttributes=0x03 Interrupt"
"wMaxPacketSize=0x04 (incomplete)"
"CRC OK 0xE1AD"
"EOP"

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

24 минуты назад, s_black сказал:

Обмен смотрю логическим анализатором

поставьте Wireshark и смотрите обмен прямо в компьютере без дополнительных железок.

20 минут назад, s_black сказал:

Что является незавершённым?

Этот ответ является незавершенным дескриптором. Размер дескриптора (wDescriptorLength) передается в начале ответа и заранее приемной стороне неизвестен. Поэтому сначала запрашивается ответ размером 8 байт, из него добывается  реальный размер дескриптора и вторым запросом читается этот же дескриптор, но уже реального размера.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не знаю
Более читабельно диагностику дает USBLyzer

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо. Попробую.

Изменено пользователем s_black

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Снял лог инициализации указанной выше мыши ноутбуком. Так там, после получения HID-дескриптора, хост каждые 10 мс выдает на мышь запросы PID IN на EP1 и считывает выданные мышью 4 байта. А моя плата STM32H743 с примером из репозитария после получения HID-дескриптора выдает на мышь SET_IDLE, SET_PROTOCOL, GET_REPORT и после получает PID_STALL.

Интересно, что оптическая мышь , которая у меня в комплекте с ноутбуком, на запросы PID IN отвечает NAK, если не было нажата ни одна кнопка или изменены координаты, а китайская, как указано абзацом выше - нулями в четырех байтах.

Изменено пользователем s_black

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Анализ HAL-овского кода для USB, его недопонимание не позволяет мне делать в нём правки, которые изменят структуру обмена( Короче говоря - все равно придётся "изобретать велосипед" и писать свою реализацию. Только так можно разобраться. Но, чёрт возьми, не могу нигде в сети найти пример реализации хоста на регистрах. Коллеги, посоветуйте ссылку. Спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

usb host HAL он весь в себе - на регистрах. Инициализация отдельно. Но Вам надо более высокий уроверь.
А из поддержки стека - все держится на единственной функции USBH_LL_SubmitURB (и еще пяток манипуляции с pipe).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...