реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> STM32F407 и USB с BULK, Нужна помощь от бывалых
mic_arm
сообщение Feb 16 2018, 08:27
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 20
Регистрация: 26-01-11
Пользователь №: 62 484



Привет всем! Понадобилось мне тут сделать девайс на STM32F407 и подключить его к хосту через USB. Но только чтобы контрольную точку содержал и конечные точки типа bulk. Помогите разобраться с чего начать и может есть какието примеры.
Спасибо!
Go to the top of the page
 
+Quote Post
mcheb
сообщение Feb 16 2018, 08:46
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 326
Регистрация: 30-05-06
Пользователь №: 17 602



Скачайте с сайта ST CubeMX и будет Вам счастье. На 407 Работает из коробки. На других может не заработать.
Go to the top of the page
 
+Quote Post
mic_arm
сообщение Feb 16 2018, 09:10
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 20
Регистрация: 26-01-11
Пользователь №: 62 484



а какой класс необходимо выбрать при конфигкрации (CDC, HID, MSC...)?
Go to the top of the page
 
+Quote Post
mcheb
сообщение Feb 16 2018, 09:20
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 326
Регистрация: 30-05-06
Пользователь №: 17 602



http://microsin.net USB in a NutShell
Чтение информации из интернета вслух - 100 евро в час

Сообщение отредактировал mcheb - Feb 16 2018, 09:21
Go to the top of the page
 
+Quote Post
DeNi
сообщение Feb 16 2018, 09:24
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 36
Регистрация: 18-10-06
Из: Москва
Пользователь №: 21 459



Для Bulk лучше использовать класс WinUSB. Тогда можно использовать драйвер winusb в Windows и linusb в Linux, и работать уже из пользовательского режима.
Go to the top of the page
 
+Quote Post
toweroff
сообщение Feb 16 2018, 14:40
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(mic_arm @ Feb 16 2018, 12:10) *
а какой класс необходимо выбрать при конфигкрации (CDC, HID, MSC...)?

Я брал MSC, выбрасывал реализацию SCSI, оставляя только две точки IN/OUT
Под Win можно и libusb использовать, драйвер генерится утилитой Zadig на счёт раз
Go to the top of the page
 
+Quote Post
mic_arm
сообщение Feb 16 2018, 15:36
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 20
Регистрация: 26-01-11
Пользователь №: 62 484



Цитата(toweroff @ Feb 16 2018, 17:40) *
Я брал MSC, выбрасывал реализацию SCSI, оставляя только две точки IN/OUT
Под Win можно и libusb использовать, драйвер генерится утилитой Zadig на счёт раз

Спасибо за наводку. Тут дело вот в чём... мне необходимо сделать клон некоего девайса. Сей девайс работает на булках (судя по перехвату пакетов дескрипторов) и не является каким либо стандартным устройством (устанавливается свой хитрый драйвер)... Есть небольшой опыт работы с HID и VCP, а вот с таким устройством впервые сталкиваюсь. По сути необходимо сделать реверс инжиниринг...
Go to the top of the page
 
+Quote Post
toweroff
сообщение Feb 16 2018, 19:35
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Если идентичные дескрипторы, устройство одинаково реагирует на пакеты в булке OUT, то целевая программа и не заметит подмены, причём на любом контроллере, не только F407
Go to the top of the page
 
+Quote Post
dachny
сообщение Feb 17 2018, 08:59
Сообщение #9


Частый гость
**

Группа: Свой
Сообщений: 82
Регистрация: 7-07-04
Пользователь №: 284



QUOTE (mic_arm @ Feb 16 2018, 13:10) *
а какой класс необходимо выбрать при конфигкрации (CDC, HID, MSC...)?

WinUSB
Go to the top of the page
 
+Quote Post
esaulenka
сообщение Feb 17 2018, 09:07
Сообщение #10


Профессионал
*****

Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877



Цитата(mcheb @ Feb 16 2018, 11:46) *
Скачайте с сайта ST CubeMX и будет Вам счастье. На 407 Работает из коробки. На других может не заработать.

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


--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
Go to the top of the page
 
+Quote Post
картошка
сообщение Feb 20 2018, 12:58
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 28-12-05
Из: Odessa
Пользователь №: 12 673



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

Сообщение отредактировал картошка - Feb 20 2018, 13:00
Go to the top of the page
 
+Quote Post
mic_arm
сообщение Feb 28 2018, 14:50
Сообщение #12


Участник
*

Группа: Участник
Сообщений: 20
Регистрация: 26-01-11
Пользователь №: 62 484



Вроде что-то начало получаться. Демоплата встала под драйвера libusb... но вот новая напасть, ктонить знает чем отлаживать всё это дело? В смысле есть ли в природе что-то типа терминалок, чтобы принимать/отправлять bulk-пакеты? Я в сети ничего подобного найти не смог.
Заранее спасибо!
Go to the top of the page
 
+Quote Post
toweroff
сообщение Feb 28 2018, 14:56
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(mic_arm @ Feb 28 2018, 17:50) *
Вроде что-то начало получаться. Демоплата встала под драйвера libusb... но вот новая напасть, ктонить знает чем отлаживать всё это дело? В смысле есть ли в природе что-то типа терминалок, чтобы принимать/отправлять bulk-пакеты? Я в сети ничего подобного найти не смог.
Заранее спасибо!

Так в примерах libusb было же. Открываем устройство, интерфейс и шлем в булку
Строк на сях работы с девайсом десятка два
Go to the top of the page
 
+Quote Post
mic_arm
сообщение Feb 28 2018, 15:55
Сообщение #14


Участник
*

Группа: Участник
Сообщений: 20
Регистрация: 26-01-11
Пользователь №: 62 484



Цитата(toweroff @ Feb 28 2018, 17:56) *
Так в примерах libusb было же. Открываем устройство, интерфейс и шлем в булку
Строк на сях работы с девайсом десятка два

В примерах да, исходники есть. Я надеялся, что есть уже собраные утилитки для этого, как для ком-порта.
Go to the top of the page
 
+Quote Post
mic_arm
сообщение Mar 4 2018, 12:59
Сообщение #15


Участник
*

Группа: Участник
Сообщений: 20
Регистрация: 26-01-11
Пользователь №: 62 484



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

Сообщение отредактировал mic_arm - Mar 4 2018, 13:01
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th June 2025 - 20:29
Рейтинг@Mail.ru


Страница сгенерированна за 0.01483 секунд с 7
ELECTRONIX ©2004-2016