TrampX 0 9 апреля, 2013 Опубликовано 9 апреля, 2013 · Жалоба Здравствуйте. Впервые на этом форуме, решил все таки зарегистрироваться, похоже самостоятельно мне не разобраться в этот раз. Хочу впервые заюзать аппаратный модуль 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 использовать не собираюсь. Ну и минимум функций, которые будут нужны для обмена данными с хостом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 9 апреля, 2013 Опубликовано 9 апреля, 2013 · Жалоба Боюсь, модуль USB у STM32F4xx очень плохо подходит для первого самостоятельного знакомства с шиной. Если стоит цель освоить работу с USB, то лучше взять другой МК. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
TrampX 0 9 апреля, 2013 Опубликовано 9 апреля, 2013 · Жалоба Жаль, конечно, что плохо подходит, но нужен именно он :( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 9 апреля, 2013 Опубликовано 9 апреля, 2013 · Жалоба Примеры для STM32F4DISCOVERY запускались без каких-либо проблем. Например, обновление прошивки с USB-флешки. Или проигрывание wav-файла с USB-флеш. Пробовал модифицировать, добавил управление громкостью с акселерометра. Не заработал только цифровой микрофон (видимо связано с использованием плавучки, которое на тот момент было не актуально - поэтому дальше не копал). У Вас собственное железо или используете указанную выше отладочную плату? PS. Дальше запуска примеров не разбирался с комплектом поставки (либы), поскольку не сторонник "чужих велосипедов", а изобретаю потихоньку свои) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 9 апреля, 2013 Опубликовано 9 апреля, 2013 · Жалоба А почему USB_Host? Цель была - изучить HID-устройство, подключаемый к компьютеру, правильно? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
TrampX 0 9 апреля, 2013 Опубликовано 9 апреля, 2013 (изменено) · Жалоба У меня отладочная плата STM32F4Discovery, приобретенная мной пару дней назад. На ней запускается один единственный проект, тот который идет с завода, остальные либо не компилятся, либо компилятся не работают. Пытался создать новый чистый проект, без использования SPL, не получается. Осложняется дело тем, что на эту библиотеку вообще нет никакого описания. USB_Host Чего то я не припомню где это я писал про хост??? Нужен USB HID Device. Если стоит цель освоить работу с USB, то лучше взять другой МК. Как то пропустил вторую часть сообщения. Я написал впервые заюзать модуль USB STM32, а не впервые заюзать шину USB. Разница принципиальна, так как на других МК уже юзал эту шину. Здесь же затык из за полного отсутствия документации, да и с примерами разобраться не так то просто. Изменено 9 апреля, 2013 пользователем TrampX Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 9 апреля, 2013 Опубликовано 9 апреля, 2013 · Жалоба Так Вы же сами писали: С самой шиной никогда не работал. Если опыт есть, то достаточно User Manual'а для написания своего драйвера. Но STM'овский USB весьма своеобразен, скажем прямо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 9 апреля, 2013 Опубликовано 9 апреля, 2013 · Жалоба насколько глубоко хотите заюзать? до уровня стандарта и полного понимания что происходит, или библиотеку приколотить костылями и успокоиться? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 9 апреля, 2013 Опубликовано 9 апреля, 2013 · Жалоба Чего то я не припомню где это я писал про хост??? Нужен USB HID Device. была скачана соответствующая библиотека (STM32_USB-Host-Device_Lib_V2.1.0 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 9 апреля, 2013 Опубликовано 9 апреля, 2013 · Жалоба Для использования USB в своих проектах документации хватает (Reference Manual). Для изучения USB конечно же не хватит. Нужны спецификации USB классов (я использовал только HID и CDC) + книжка по самому USB (часть вопросов снял труд Агурова). Модуль USB в STM32 мягко говоря "нетривиальный")) Например, чтобы установить какое-нить значение бита в регистре нужно его считать и если значение устраивает, то записать в эту позицию "0", а если нужно изменить на противоположенное - то "1". Где-то так... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
TrampX 0 9 апреля, 2013 Опубликовано 9 апреля, 2013 (изменено) · Жалоба для написания своего драйвера. Зачем 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. Изменено 9 апреля, 2013 пользователем TrampX Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kovigor 5 9 апреля, 2013 Опубликовано 9 апреля, 2013 · Жалоба Скажем так: Хотелось бы разобраться в самой бибилиотеке, как ее юзать, общие принципы. Знание и понимание что происходит на шине на самом низком уровне мало кому нужно, мне и подавно. Для меня представляет интерес сопряжения МК по шине 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. Именно об эту особенность я и споткнулся в первый же день ... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 9 апреля, 2013 Опубликовано 9 апреля, 2013 · Жалоба Хорошо, если так принципиально, можно переименовать тему с изучения модуля USB в использование модуля USB или изучение бибилиотеки .... от ST. Предлагается изучение библиотеки оставить для самостоятельной работы, а на форуме начать озвучивать конкретные вопросы. Что именно не получается? Дело в том, что изучение библиотеки это не такой уж легкий путь с учетом сопровождающей ее документации. Описаны параметры функции, возвращаемый результат, но это и так в большинстве случаев понятно. Как строится логика работы с библиотекой нигде (по крайне мере я) не встречал. Можно подглядеть в примерах, но это лишь частный случай... Возможно, Вам будет легче плюнуть на эту библиотеку, разобраться с регистрами и написать что-то свое. Я пока так не поступил, тратил очень много времени. Отказавшись от ST-библиотеки, поднял свой USB-стек за несколько дней. Итого: библиотеки рабочие, документация на любителя, реф.мануал читать по-любому придется, конкретные вопросы приветствуются) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
TrampX 0 9 апреля, 2013 Опубликовано 9 апреля, 2013 (изменено) · Жалоба Что именно не получается? Конкретные вопросы были озвучены в самом начале 1. Может все таки найдутся рабочие примеры без использования StdPeriph_Lib? 2. Какие именно файлы(исходники и хедеры) нужно подключать к проекту из библиотеки для этого класса устройств? 3. Есть ли толковое описание библиотеки USB Похоже ответ на первый вопрос НЕТ. Второй пока остается без ответа :( Третий похоже тоже НЕТ :( Но вот по 3 вопросу, я вообще не могу найти ни одного! документа на STM32_USB-Host-Device_Lib_V2.1.0. Вот написать что то свое для модуля USB при отсутствии опыта программирования STM32 будет действительно сложно, да и рускоязычной документации или хотя бы его обсуждений на форумах я еще не встречал, а вот изучение модуля USB по англоязычному даташиту может действительно вынести моск... Изменено 9 апреля, 2013 пользователем TrampX Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 9 апреля, 2013 Опубликовано 9 апреля, 2013 · Жалоба Зачем HID нужен драйвер??? Драйвер - это не обязательно компонент ПО для ПК. Та часть программы, что обслуживает какую-либо периферию МК тоже имеет полное право так именоваться. Именно её я и имел в виду. В свое время попробовал воспользоваться библиотекой от ST, так как очень не хотелось тратить время ради одного проекта. Заставить себя в результате так и не смог, пришлось потратить несколько дней на написание и отладку своего варианта. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться