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

Привет всем! Понадобилось мне тут сделать девайс на STM32F407 и подключить его к хосту через USB. Но только чтобы контрольную точку содержал и конечные точки типа bulk. Помогите разобраться с чего начать и может есть какието примеры.

Спасибо!

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


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

Скачайте с сайта ST CubeMX и будет Вам счастье. На 407 Работает из коробки. На других может не заработать.

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


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

http://microsin.net USB in a NutShell

Чтение информации из интернета вслух - 100 евро в час

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

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


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

Для Bulk лучше использовать класс WinUSB. Тогда можно использовать драйвер winusb в Windows и linusb в Linux, и работать уже из пользовательского режима.

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


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

а какой класс необходимо выбрать при конфигкрации (CDC, HID, MSC...)?

Я брал MSC, выбрасывал реализацию SCSI, оставляя только две точки IN/OUT

Под Win можно и libusb использовать, драйвер генерится утилитой Zadig на счёт раз

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


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

Я брал MSC, выбрасывал реализацию SCSI, оставляя только две точки IN/OUT

Под Win можно и libusb использовать, драйвер генерится утилитой Zadig на счёт раз

Спасибо за наводку. Тут дело вот в чём... мне необходимо сделать клон некоего девайса. Сей девайс работает на булках (судя по перехвату пакетов дескрипторов) и не является каким либо стандартным устройством (устанавливается свой хитрый драйвер)... Есть небольшой опыт работы с HID и VCP, а вот с таким устройством впервые сталкиваюсь. По сути необходимо сделать реверс инжиниринг...

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


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

Если идентичные дескрипторы, устройство одинаково реагирует на пакеты в булке OUT, то целевая программа и не заметит подмены, причём на любом контроллере, не только F407

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


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

Скачайте с сайта ST CubeMX и будет Вам счастье. На 407 Работает из коробки. На других может не заработать.

Прекрасный совет! Но там совершенно адский USB-стек. Мухи, котлеты активно замешаны с индусским рисом и карри в единое трудноделимое нечто.

Отрывать от него лишнее и подсовывать своё очень неудобно.

Я делал на основе LibOpenCM3 - пишем дескриптор (да, предварительно надо покурить USB in Nutshell), инициализируем нужные endpoint'ы - и всё, готово, можно обмениваться данными.

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


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

LibUSB32 под винду. И полная кастрация MSC реализации (как toweroff советовал)с STM32 Stdlib, чтоб осталось только 3 usb функции ;). Собственно один раз чик и на долгое время хватит.

Изменено пользователем картошка

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


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

Вроде что-то начало получаться. Демоплата встала под драйвера libusb... но вот новая напасть, ктонить знает чем отлаживать всё это дело? В смысле есть ли в природе что-то типа терминалок, чтобы принимать/отправлять bulk-пакеты? Я в сети ничего подобного найти не смог.

Заранее спасибо!

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


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

Вроде что-то начало получаться. Демоплата встала под драйвера libusb... но вот новая напасть, ктонить знает чем отлаживать всё это дело? В смысле есть ли в природе что-то типа терминалок, чтобы принимать/отправлять bulk-пакеты? Я в сети ничего подобного найти не смог.

Заранее спасибо!

Так в примерах libusb было же. Открываем устройство, интерфейс и шлем в булку

Строк на сях работы с девайсом десятка два

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


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

Так в примерах libusb было же. Открываем устройство, интерфейс и шлем в булку

Строк на сях работы с девайсом десятка два

В примерах да, исходники есть. Я надеялся, что есть уже собраные утилитки для этого, как для ком-порта.

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


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

И вновь здрасти!!! Воюю с булками с переменным успехом... утилитку для приёма / отправки сообщений собрал в Qt, вроде работает... По ходу пьесы возникло вот такое наблюдение, если я посылаю с компа пакет OUT и в обработчике пакета OUT на стороне микроконтроллера выкладываю в буфер IN данные для передачи на комп, то всё работает как часы. Но если я просто хочу забрать пакет с контроллера (читаю конечную точку IN ), то ничего не читается. Изучая материалы по USB я понял что хост может просто читать конечную точку IN без предварительной записи точки OUT... Подскажите где я ошибаюсь? Спасибо!

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

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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