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

Здравствуйте. Впервые на этом форуме, решил все таки зарегистрироваться, похоже самостоятельно мне не разобраться в этот раз. Хочу впервые заюзать аппаратный модуль USB в STM32F407. была скачана соответствующая библиотека (STM32_USB-Host-Device_Lib_V2.1.0 с ней в комплекте идет и STM32F4xx_StdPeriph_Driver) с сайта www.st.com и примеры работы с того же сайта. Ни один пример не удалось запустить, т.е. хоть и компилируется все, но ничего не хочет работать. К тому же в примерах используются StdPeriph_Lib. Что что, а именно эта библиотека вводит меня в состояние, насыщенное негативными эмоциями. Поэтому не хочется мне ее использовать. без нее же библиотеку USB никак не могу подключить и даже найти толковое описание этой библиотеки не получается. Т.к. скорость не нужна большая и не хочется иметь кучу виртуальный com портов, решено было изучить класс USB HID Device. Поэтому есть несколько вопросов:

1. Может все таки найдутся рабочие примеры без использования StdPeriph_Lib?

2. Какие именно файлы(исходники и хедеры) нужно подключать к проекту из библиотеки для этого класса устройств?

3. Есть ли толковое описание библиотеки USB?

С самой шиной никогда не работал. Язык Си знаю более менее, но до профи далеко, поэтому разобраться с библиотеками без помощи пока не могу. Работа с устройством со стороны хоста это уже другой вопрос и следующий этап.

 

P.S. Прошерстил поиском весь форум, нашел и скачал много примеров, но либо не рабочие, либо шибко навороченные и без комментариев в основном. Может кто вкратце распишет что к чему? Т.е. задача заюзать usb hid device, хотелось бы для начала просто знать, какие файлы необходимы в проекте из библиотеки STM32_USB-Host-Device_Lib_V2.1.0, STM32F4xx_StdPeriph_Driver использовать не собираюсь. Ну и минимум функций, которые будут нужны для обмена данными с хостом.

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


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

Боюсь, модуль USB у STM32F4xx очень плохо подходит для первого самостоятельного знакомства с шиной.

Если стоит цель освоить работу с USB, то лучше взять другой МК.

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


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

Примеры для STM32F4DISCOVERY запускались без каких-либо проблем.

Например, обновление прошивки с USB-флешки.

Или проигрывание wav-файла с USB-флеш.

Пробовал модифицировать, добавил управление громкостью с акселерометра.

Не заработал только цифровой микрофон (видимо связано с использованием плавучки, которое на тот момент было не актуально - поэтому дальше не копал).

У Вас собственное железо или используете указанную выше отладочную плату?

PS. Дальше запуска примеров не разбирался с комплектом поставки (либы), поскольку не сторонник "чужих велосипедов", а изобретаю потихоньку свои)

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


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

А почему USB_Host? Цель была - изучить HID-устройство, подключаемый к компьютеру, правильно?

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


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

У меня отладочная плата STM32F4Discovery, приобретенная мной пару дней назад. На ней запускается один единственный проект, тот который идет с завода, остальные либо не компилятся, либо компилятся не работают. Пытался создать новый чистый проект, без использования SPL, не получается. Осложняется дело тем, что на эту библиотеку вообще нет никакого описания.

 

USB_Host
Чего то я не припомню где это я писал про хост??? Нужен USB HID Device.

 

Если стоит цель освоить работу с USB, то лучше взять другой МК.
Как то пропустил вторую часть сообщения. Я написал впервые заюзать модуль USB STM32, а не впервые заюзать шину USB. Разница принципиальна, так как на других МК уже юзал эту шину. Здесь же затык из за полного отсутствия документации, да и с примерами разобраться не так то просто.
Изменено пользователем TrampX

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


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

Так Вы же сами писали:

С самой шиной никогда не работал.

 

Если опыт есть, то достаточно User Manual'а для написания своего драйвера. Но STM'овский USB весьма своеобразен, скажем прямо.

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


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

насколько глубоко хотите заюзать?

до уровня стандарта и полного понимания что происходит, или библиотеку приколотить костылями и успокоиться?

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


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

Чего то я не припомню где это я писал про хост??? Нужен USB HID Device.

была скачана соответствующая библиотека (STM32_USB-Host-Device_Lib_V2.1.0

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


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

Для использования USB в своих проектах документации хватает (Reference Manual).

Для изучения USB конечно же не хватит. Нужны спецификации USB классов (я использовал только HID и CDC) + книжка по самому USB (часть вопросов снял труд Агурова).

Модуль USB в STM32 мягко говоря "нетривиальный")) Например, чтобы установить какое-нить значение бита в регистре нужно его считать и если значение устраивает, то записать в эту позицию "0", а если нужно изменить на противоположенное - то "1". Где-то так...

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


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

для написания своего драйвера.
Зачем HID нужен драйвер??? Он уже есть в виндоус, нужно только приложение для работы с устройством.

Скажем так: Хотелось бы разобраться в самой бибилиотеке, как ее юзать, общие принципы. Знание и понимание что происходит на шине на самом низком уровне мало кому нужно, мне и подавно. Для меня представляет интерес сопряжения МК по шине USB с компьютером, в частности работа как hid device, а так же хотелось попробовать работать на уровне эндпойнтов, но это уже потом. Также представляет интерес usb host, но это ужже как нибудь потом, с этим вообще еще не имел дела.

Т.е. получается просто приколотить костылями, но разобраться в самой библиотеке что к чему, чтобы самостоятельно изучать потихоньку дальше...

 

Цитата(TrampX @ Apr 9 2013, 19:41) *

Чего то я не припомню где это я писал про хост??? Нужен USB HID Device.

 

Цитата

была скачана соответствующая библиотека (STM32_USB-Host-Device_Lib_V2.1.0

Ну дык в этой библе есть разные классы. Это всего лишь название. Есть и хост, и HID Device, и CDC и все остальное.

Для изучения USB конечно же не хватит
Хорошо, если так принципиально, можно переименовать тему с изучения модуля USB в использование модуля USB или изучение бибилиотеки .... от ST.
Изменено пользователем TrampX

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


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

Скажем так: Хотелось бы разобраться в самой бибилиотеке, как ее юзать, общие принципы. Знание и понимание что происходит на шине на самом низком уровне мало кому нужно, мне и подавно. Для меня представляет интерес сопряжения МК по шине USB с компьютером, в частности работа как hid device, а так же хотелось попробовать работать на уровне эндпойнтов, но это уже потом. Также представляет интерес usb host, но это ужже как нибудь потом, с этим вообще еще не имел дела.

Т.е. получается просто приколотить костылями, но разобраться в самой библиотеке что к чему, чтобы самостоятельно изучать потихоньку дальше...

 

Ну дык в этой библе есть разные классы. Это всего лишь название. Есть и хост, и HID Device, и CDC и все остальное.

Без комментариев. Скажу про свой опыт использования этой библиотеки и USB - движка STM. Мне нужно было именно разобраться в исходниках USB Device'ов, поставляемых с этой библиотекой. Опыт работы с шиной и понимание того, как она работает, имелось - я писал свои реализации Device'ов для HID и Mass-Storage для NXP и Atmel, а также писал свою реализацию хоста для Atmel ARM9, т.е., я знал, что делаю, почему и зачем. Так вот, движок от STM и оная библиотека буквально вынесли мне мозги. Ничего сложнее и иррациональнее ни до, ни после этого я не видел. Плюс отвратительно написанная и неполная документация от STM способна довести до психушки кого угодно (не знаю, может, сейчас они ее поправили).

Это мое личное мнение: начинать с STM в части освоения USB есть дело чуть ли не безнадежное. А поверхностное знакомство с ихней библиотекой недопустимо, надо именно вникать в детали, иначе рано или поздно ваш проект встанет колом, а вы окажетесь в этой ситуации совершенно беспомощным.

P.S. Не работать примеры могут из-за того, что они рассчитаны на МК в корпусе X, а у вас МК в корпусе Y, а там линии USB идут на другие GPIO. Именно об эту особенность я и споткнулся в первый же день ...

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


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

Хорошо, если так принципиально, можно переименовать тему с изучения модуля USB в использование модуля USB или изучение бибилиотеки .... от ST.

Предлагается изучение библиотеки оставить для самостоятельной работы, а на форуме начать озвучивать конкретные вопросы. Что именно не получается?

Дело в том, что изучение библиотеки это не такой уж легкий путь с учетом сопровождающей ее документации. Описаны параметры функции, возвращаемый результат, но это и так в большинстве случаев понятно. Как строится логика работы с библиотекой нигде (по крайне мере я) не встречал. Можно подглядеть в примерах, но это лишь частный случай...

Возможно, Вам будет легче плюнуть на эту библиотеку, разобраться с регистрами и написать что-то свое. Я пока так не поступил, тратил очень много времени. Отказавшись от ST-библиотеки, поднял свой USB-стек за несколько дней.

 

Итого: библиотеки рабочие, документация на любителя, реф.мануал читать по-любому придется, конкретные вопросы приветствуются)

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


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

Что именно не получается?
Конкретные вопросы были озвучены в самом начале

1. Может все таки найдутся рабочие примеры без использования StdPeriph_Lib?

2. Какие именно файлы(исходники и хедеры) нужно подключать к проекту из библиотеки для этого класса устройств?

3. Есть ли толковое описание библиотеки USB

Похоже ответ на первый вопрос НЕТ.

Второй пока остается без ответа :(

Третий похоже тоже НЕТ :(

Но вот по 3 вопросу, я вообще не могу найти ни одного! документа на STM32_USB-Host-Device_Lib_V2.1.0.

Вот написать что то свое для модуля USB при отсутствии опыта программирования STM32 будет действительно сложно, да и рускоязычной документации или хотя бы его обсуждений на форумах я еще не встречал, а вот изучение модуля USB по англоязычному даташиту может действительно вынести моск...

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

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


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

Зачем HID нужен драйвер???

Драйвер - это не обязательно компонент ПО для ПК. Та часть программы, что обслуживает какую-либо периферию МК тоже имеет полное право так именоваться. Именно её я и имел в виду.

 

В свое время попробовал воспользоваться библиотекой от ST, так как очень не хотелось тратить время ради одного проекта. Заставить себя в результате так и не смог, пришлось потратить несколько дней на написание и отладку своего варианта.

 

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


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

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

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

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

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

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

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

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

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

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