s_black 0 14 октября, 2022 Опубликовано 14 октября, 2022 (изменено) · Жалоба Уважаемые коллеги! Собственно в названии топика есть суть вопроса. Не приходилось ли кому-то реализовывать самому или встречать подобный пример в интернете? Хотелось бы к F746 или H743 прикрутить хаб, чтобы работать одновременно с мышкой и клавиатурой, и, если возможно, ещё и с флешкой. Спасибо. Изменено 14 октября, 2022 пользователем s_black Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 235 14 октября, 2022 Опубликовано 14 октября, 2022 · Жалоба Посмотрите в IAR - там среди различных примеров, идущих в комплекте к "IAR for ARM", есть и хорошие примеры по работе с USB. USB-host не пробовал, но USB-device - вполне годно реализованы, со всеми исходниками и достаточно грамотно написаны. Под разные МК. Даже если нет примера под конкретно ваш МК, то можно портировать от другого, близкого по семейству. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
s_black 0 14 октября, 2022 Опубликовано 14 октября, 2022 · Жалоба Спасибо, jcxz! Однако, я наверное, не совсем чётко обозначил свою цель. Подключение отдельных девайсов (мышь, клавиатура, флешка) уже освоены. Сейчас же я хочу подключить их все сразу через хаб. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex11 5 14 октября, 2022 Опубликовано 14 октября, 2022 · Жалоба Непонятно в чем проблема. Hub вещь тривиальная, ставите - он работает. Можете проверить Ваш софт, подключив внешний hub из магазина. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 15 октября, 2022 Опубликовано 15 октября, 2022 (изменено) · Жалоба Задача не решена в текущем варианте HSB HOST стека от ST. В том числе требуются модификации HAL (добавление пары параметров одной из функций для указания порта и адреса за ним). И повторной енумерации ЗА хабом. Я делал, под единственное устройство за хабом. В текущей версии не обрабатываются нотификации от хаба о подключении устройств - т.е. опознает только после запуска. НО говорят легко вернуть. Поддерживается один хаб в цепочке устройств. https://github.com/ua1arn/hftrx/tree/develop/lib/Middlewares/ST/STM32_USB_Host_Library/Class/HUB Тестировалось на H7 F7 и MP1 с его EHCI. Изменено 15 октября, 2022 пользователем GenaSPB Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
s_black 0 15 октября, 2022 Опубликовано 15 октября, 2022 · Жалоба Спасибо, GenaSPB. Теперь есть от чего можно оттолкнутся. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
s_black 0 17 октября, 2022 Опубликовано 17 октября, 2022 (изменено) · Жалоба Вопрос немного не по теме топика... По какой причине мышь может отвечать 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" Изменено 17 октября, 2022 пользователем s_black Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 17 октября, 2022 Опубликовано 17 октября, 2022 · Жалоба А что мыша отдала по запросу config descriptor ? Попробуйте посмотреть что при подключении к windows происходит с помощью USBLyzer (качать с родного сайта). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
s_black 0 17 октября, 2022 Опубликовано 17 октября, 2022 · Жалоба При подключении к компу эта мышь работает нормально, вообще без замечаний. Нет под рукой переходника, чтобы посмотреть обмен мыши с ПК. Обмен смотрю логическим анализатором. Меня в логе кое-что смущает. Пометка (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" Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 134 17 октября, 2022 Опубликовано 17 октября, 2022 · Жалоба 24 минуты назад, s_black сказал: Обмен смотрю логическим анализатором поставьте Wireshark и смотрите обмен прямо в компьютере без дополнительных железок. 20 минут назад, s_black сказал: Что является незавершённым? Этот ответ является незавершенным дескриптором. Размер дескриптора (wDescriptorLength) передается в начале ответа и заранее приемной стороне неизвестен. Поэтому сначала запрашивается ответ размером 8 байт, из него добывается реальный размер дескриптора и вторым запросом читается этот же дескриптор, но уже реального размера. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 17 октября, 2022 Опубликовано 17 октября, 2022 · Жалоба Не знаю Более читабельно диагностику дает USBLyzer Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
s_black 0 17 октября, 2022 Опубликовано 17 октября, 2022 (изменено) · Жалоба Спасибо. Попробую. Изменено 17 октября, 2022 пользователем s_black Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
s_black 0 18 октября, 2022 Опубликовано 18 октября, 2022 (изменено) · Жалоба Снял лог инициализации указанной выше мыши ноутбуком. Так там, после получения HID-дескриптора, хост каждые 10 мс выдает на мышь запросы PID IN на EP1 и считывает выданные мышью 4 байта. А моя плата STM32H743 с примером из репозитария после получения HID-дескриптора выдает на мышь SET_IDLE, SET_PROTOCOL, GET_REPORT и после получает PID_STALL. Интересно, что оптическая мышь , которая у меня в комплекте с ноутбуком, на запросы PID IN отвечает NAK, если не было нажата ни одна кнопка или изменены координаты, а китайская, как указано абзацом выше - нулями в четырех байтах. Изменено 18 октября, 2022 пользователем s_black Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
s_black 0 20 октября, 2022 Опубликовано 20 октября, 2022 · Жалоба Анализ HAL-овского кода для USB, его недопонимание не позволяет мне делать в нём правки, которые изменят структуру обмена( Короче говоря - все равно придётся "изобретать велосипед" и писать свою реализацию. Только так можно разобраться. Но, чёрт возьми, не могу нигде в сети найти пример реализации хоста на регистрах. Коллеги, посоветуйте ссылку. Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 20 октября, 2022 Опубликовано 20 октября, 2022 · Жалоба usb host HAL он весь в себе - на регистрах. Инициализация отдельно. Но Вам надо более высокий уроверь. А из поддержки стека - все держится на единственной функции USBH_LL_SubmitURB (и еще пяток манипуляции с pipe). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться