Jump to content

    

STM32F4Discovery - USB Host HID

Задача: поднять USB Host High Speed и подключить к нему мышь, затем клавиатуру, затем одновременно (ну это программа максимум, мне б хоть что-то сделать)

Большая просьба, если у кого-нибудь есть рабочие примеры по USB Host HID, поделитесь пожалуйста :)

Опыта у меня в микроконтроллерах совсем не много, в STM еще меньше.

 

Что было мною сделано:

Запускал из Keil 4.73

Ковырялся в примере USB_Host_Examples/HID из библиотеки STM32_USB-Host-Device_Lib_V2.1.0 - ничего не вышло, моя плата виснет, а деббагер на следующей же команде после функции USBH_Init(.....); вылетает с ошибкой "Cannot access target". Возможно это из-за LCD которого в моей плате нет, но чтобы вычленить его из примера моего уровня не хватает. [было весело, когда я случайно прикоснулся к полоске выводов платки и включил питание USB хоста, туда оказывается кнопка была выведена]

 

Затем я взял STM32CubeMX и сгенерил код для своего STM32F4Discovery. Проект оказался более понятым, логичным, а код читабельным, но при этом менее качественным, как мне показалось, но все равно ничего не заработало. Понять почему я так и не смог, потому что деббагеру не доступна большая половина кода, да и по оставшейся он прыгает как ему хочется - его ни сколько не смущает идти снизу вверх, а потом снова вниз, из цикла switch отрабатывать два case, хотя после каждого из них стоит break ну и прочии шалости.

Попытался запустить этот же проект в Coocox CoIDE - скопировал все файлы, включил в проект - получил кучу синтаксических ошибок и неопределенных структур. Лезть в недра Keil и выцеплять либы с этими структурами я не решился, да и Кокос совсем отбил желание, когда не закончив компиляцию этого же проекта намертво подвесил систему.

 

Я морально подавлен и раздавлен. Подскажите, как поднять этот хост и какую взять нормальную IDE/версия с работающим деббагером?

 

Share this post


Link to post
Share on other sites
Задача: поднять USB Host High Speed и подключить к нему мышь, затем клавиатуру, затем одновременно (ну это программа максимум, мне б хоть что-то сделать)

 

Не люблю расстраивать людей, особенно интузиастов, но вы выбрали не тот камень для освоения усб.

Сам не первый день с ним знаком, но так и не встретил нигде хоть что-нибудь отдаленно напоминающее путевую библиотеку для работы с его встроенным хостом, т.к. он уникальный и ни с чем не совместим, в отличие от lpc-шного. Кроме того, в либах от ст нет ни одного примера работы с композитным устройством, т.е. клава+мышь.

ЗЫ. Ну а если вдруг и правда, кто делал подобное - тоже интересно бы посмотреть на сие творение :laughing:

Share this post


Link to post
Share on other sites
Понять почему я так и не смог, потому что деббагеру не доступна большая половина кода, да и по оставшейся он прыгает как ему хочется - его ни сколько не смущает идти снизу вверх, а потом снова вниз, из цикла switch отрабатывать два case, хотя после каждого из них стоит break ну и прочии шалости.

 

в кейле по умолчанию оптимизация не НОЛЬ, а дефолт, то есть -2... Если хотите чтобы код шел по строчкам, оптимизацию надо убрать в ноль, а то у вас будет каша и со значениями переменных и со следованием по коду.

В настройках надо врубить максимум дебажной информации...

 

 

Хост в LPC (1768 в частности) правда лучше, он ваще OHCI, все сам делает, только прерывания поддержать и всех делов... В целом хост сильно сложнее девайса, у вас хоть с устройством то опыт есть?

Share this post


Link to post
Share on other sites
Не люблю расстраивать людей

 

Мне возможно тоже придётся с ним работать, скажите, а с юсб-девайсом там как? Мне нужно хай спид и качать в комп мегабит 50 хотя бы..

Share this post


Link to post
Share on other sites
Задача: поднять USB Host High Speed и подключить к нему мышь, затем клавиатуру, затем одновременно (ну это программа максимум, мне б хоть что-то сделать)

Большая просьба, если у кого-нибудь есть рабочие примеры по USB Host HID, поделитесь пожалуйста :)

На Атмеловском ARM9 делал такое. А еще делал на LPC без встроенного хоста (хостом сужила отдельная ИС двухпортового хоста ISP1161, которая, кстати, вполне прилично работает и может быть вам очень полезной).

Про СТМ могу сказать, что с нуля в разумные сроки задача практически неподъемна, там даже с Device куча проблем, очень неприятных, которых я не знал ни с LPC, ни с ATMEL (ARM и MCS-51). А вы сразу на хост замахнулись.

Вообще, СТМ - штука проблемная и неприятная. Очень. Запредельно и неоправданно усложненная, отвратительно документированная, и т.д., и т.п. ... Ну да ладно, речь все-таки не об этом ...

 

P.S. А зачем для клавиатуры и мыши High Speed ? Там и Low Speed избыточен ...

Share this post


Link to post
Share on other sites
Хост в LPC (1768 в частности) правда лучше, он ваще OHCI, все сам делает, только прерывания поддержать и всех делов... В целом хост сильно сложнее девайса, у вас хоть с устройством то опыт есть?

 

Тоже интересен вопросс поднять USB Host для подключения флешки к контроллеру. Пока на стадии выбора контроллера. STM32 берет кучей примеров, но если начать разбираться, то оказывается половина примеров не работает, половина с ошибками и тд...

Например нашел проэкт USB_MSC_HOST. Все работает, я даже обрадовался, флешку видит, работает с файловой системой, но потом пришла БЕДА. Оказалось что работат только с одной флешкой из пяти! пытался разобратся, в итоге ничего не понятно!!!

 

Короче вопросс про LPC(1768 в частности), есть ли официальные примеры для него. Можно ссылочку на официальный сайт. Сам ниразу не использовал эти контроллеры.

Спасибо

Share this post


Link to post
Share on other sites

Как я понял LPC, наверно, лучший вариант для моей задачи. Golikov A., kovigor, mantech и кто еще знает - а можете порекомендовать какой именно камень лучше взять, чтобы существовала отладочная плата с ним и были рабочие примеры, официальные или может у кого-нибудь есть?

И тоже присоединяюсь к вопросу Falkon_99 + а отладочная плата для него есть?

 

в кейле по умолчанию оптимизация не НОЛЬ, а дефолт, то есть -2... Если хотите чтобы код шел по строчкам, оптимизацию надо убрать в ноль, а то у вас будет каша и со значениями переменных и со следованием по коду.

В настройках надо врубить максимум дебажной информации...

 

Хост в LPC (1768 в частности) правда лучше, он ваще OHCI, все сам делает, только прерывания поддержать и всех делов... В целом хост сильно сложнее девайса, у вас хоть с устройством то опыт есть?

 

Спасибо, деббагер перенастроил, каша еще та была:) Опыта с устройством у меня тоже практически нет, но примеров и описания по нему довольно много, находил рабочие, но особо в них не разбирался

 

P.S. А зачем для клавиатуры и мыши High Speed ? Там и Low Speed избыточен ...

 

Сейчас разницы особой нет, я на тот случай если потребуется что-нибудь более скоростное подключить, хотя работающий пример перенастроить не сложно, так что без разницы :)

А STM действительно какой-то замороченный.

 

Мне возможно тоже придётся с ним работать, скажите, а с юсб-девайсом там как? Мне нужно хай спид и качать в комп мегабит 50 хотя бы..

Пример из этой статьи запускал, сразу работает, проект под Кокос (пример в конце статьи). Примечательно, что сайт называется "Дамское счастье" :))))

 

Вот еще статья с примером, но уже для STM32F3. Кстати, очень хороший сайт, если надо, на нем же есть очень понятное описание основных принципов передачи данных по USB

 

Хотя про 50 МБит не знаю

Edited by Gelay

Share this post


Link to post
Share on other sites
а можете порекомендовать какой именно камень лучше взять, чтобы существовала отладочная плата с ним

Посмотрите здесь - http://www.starterkit.ru/html/index.php

На счет какой камень- определитесь со своей задачей, если нужен (в дальнейшем) экран, то берите из серии 17хх или 43хх, там вообще можно 2 ядра задействовать B)

Edited by mantech

Share this post


Link to post
Share on other sites

Про LPC1768 - очень удачный проц. Все что запускали все работает по описанию без бубна. То есть читаешь как, делаешь и все сразу работает именно так. Нюансы минимальны, очень приятные впечатления.

 

что касается USB в этом проце хост реализован на OHCI, это стандарт. То есть в описании проца даже нет как им пользоваться, только регистры доступа, потому что все что делает хост реализовано на железном уровне. Всю энумирацию и прочую байду делает железо, вам надо только реагировать на флаги в регистре и все, как на них реагировать описано в OHCI 1.1

 

К нему нашли http://mbed.org/users/peterbarrett1967/not...troller-for-mb/

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

 

Вот... насчет китов и прочее, они конечно же есть, и у схемотехника он был, я же подключился уже не к первому проекту на этом проце, потому мне уже выдали сразу рабочую плату, кит я не держал в руках. Вроде бы был то ли olimex то ли starterkit.

 

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

Share this post


Link to post
Share on other sites

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

 

А если кто-нибудь впервые читает эту тему и умудрился все таки наладить хост на STM32F4Discovery, обязательно напиши - буду рад очень благодарен :)

Share this post


Link to post
Share on other sites
А если кто-нибудь впервые читает эту тему и умудрился все таки наладить хост на STM32F4Discovery, обязательно напиши - буду рад очень благодарен :)

Ничего не налаживал - взял исходники с сайта и собрал образ. Залил в МК. Насколько я помню, демок было несколько:

1. Обновление прошивки с USB flash.

2. Воспроизведение wav файла с USB flash.

Share this post


Link to post
Share on other sites
Ничего не налаживал - взял исходники с сайта и собрал образ. Залил в МК. Насколько я помню, демок было несколько:

1. Обновление прошивки с USB flash.

2. Воспроизведение wav файла с USB flash.

Все это здорово, НО

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

2) Работает далеко не со всеми флешками, опять-же пришлось кое-что переписывать, но 100% добиться так и не удалось.

3) Автор пишет, что ему надо работу с композитным устройством, а ее нет как таковой в примерах и либах, слышал, что только в каких-то коммерческих либах это есть. А писать самому с "нуля" - это жесткий мазохизм...

Edited by mantech

Share this post


Link to post
Share on other sites
Все это здорово, НО

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

Зато бесплатная.

2) Работает далеко не со всеми флешками, опять-же пришлось кое-что переписывать, но 100% добиться так и не удалось.

Мне повезло с флешками - работали все.

3) Автор пишет, что ему надо работу с композитным устройством, а ее нет как таковой в примерах и либах, слышал, что только в каких-то коммерческих либах это есть. А писать самому с "нуля" - это жесткий мазохизм...

Думать головой все равно придется. Второй вариант: можно думать по-минимуму, но придется денег заплатить.

Может, я как-то неправильно работаю, но "хорошесть либы" для меня на последнем месте при выборе МК.

Главное: функционал, цена, доставабельность, документация. Либы, какими бы они ни были, я разлядываю редко.

В основном как реф-дизайн при работе с новой периферией. Все вопросы решаю по документации, AN и на макете с осциллографом.

Share this post


Link to post
Share on other sites
Мне повезло с флешками - работали все.

А много флешек проверяли? Я проверял на 20 флешках разных годов выпуска. Современные работали практически все, а вот более старые, особенно усб 1.1 редко заводились...

 

Думать головой все равно придется. Второй вариант: можно думать по-минимуму, но придется денег заплатить.

 

Согласитесь, "думать головой" всегда приятнее, когда в руках нормальный, хорошо документированный и стандартизированный девайс, а не что-то похожее на него.

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

Share this post


Link to post
Share on other sites
Да, в свое время тоже решил, что можно прикрутить руками весь этот стштый усб, благо нужно было сделать работу с флехами и состыковать с компом, и то геморроя нахлебался вдоволь. Больше этим страдать не хочу, ибо стшные камни использую под другие задачи...

Да, особенности есть, но основное время было потрачено на изучение документации от usb.org

До сих пор ужас вызавает описание HID-дескриптора. Не знаю как это делается, а главное почему именно так.

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this