hosh
1

STM32F4Discovery + USB HID

19.12.2012, 15:58. Показов 21508. Ответов 22
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Народ, помогите раздуплить этот гребаный USB !!! (никогда не использовал, но вот пришлось)

-выложенные в нете примеры работают нормально, но стоит изменить длинну отсылаемого в PC репорта, и всё перестает работать.... вплоть до неопознанного устройства. ( у меня уже сил нету 3 дня ипусь).

-есть ли какая универсальная программулина для PC (не кнопка и 4 светодиода) для отладки HID устройств?

Вообще мне нужно оцифровать 8-16 аналоговых входов с STM передать их по USB а потом на PC вырисовывать граффики этих самых аналоговых входов.

Заранее спасибо...
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.12.2012, 15:58
Ответы с готовыми решениями:

Generic Usb Hid Device На Stm32F4Discovery
Привет всем . Озаботился тут созданием USB HID устройства на данном проце. Находил с интернете...

USB-HID библиотека с st.com STM32f105 "Устройство USB не .."
Товарищи. Взял USB библиотеку с st.com (On-The-Go host omd divice library), для STM32F105...

STM32F4Discovery USB CDC
Всем добрый день. Вопрос такой. Есть плата STM32F4Dyscovery, начал осваивать USB, с теорией...

stm32f4discovery + usb модем
Доброго времени суток Есть плата stm32f4discovery и usb модем Есть пример с библиотеки...

stm32f4discovery - usb audio class
Здравствуйте! Использую STM32_USB_Device_Library -> audyo ctoss. Хочу поменять частоту...

22
xDryvir
19.12.2012, 16:04 3
Цитата Сообщение от hosh
-выложенные в нете примеры работают нормально, но стоит изменить длинну отсылаемого в PC репорта, и всё перестает работать.... вплоть до неопознанного устройства. ( у меня уже сил нету 3 дня ипусь).
можно ссылку на пример, с которым Вы ...
hosh
19.12.2012, 16:18 4
можно ссылку на пример, с которым Вы ...
вот 2 примера ... один отправляет 2байта, второй 64 байта (проекты для CooCox)

http://bayfiles.com/file/ttPh/WH6UtL/usb_hid_2.zip
http://www.crocko.com/855C6745... 4bytes.zip
0 / 0 / 0
Регистрация: 13.05.2011
Сообщений: 401
19.12.2012, 16:59 5
И еще примеры от ST http://www.st.com/internet/som/SOFTWARE ... ce_lib.zip
0
hosh
19.12.2012, 17:19 6
2 soridumpid : спасибо за ссылки, прошелся, мозг стал кипеть ещё больше....

буду вникать дальше...
0 / 0 / 0
Регистрация: 21.11.2012
Сообщений: 1,400
19.12.2012, 17:43 7
А почему именно HID? CDC ведь проще: для отладки вообще ничего писать не нужно - открыл терминал и жми себе буковки…
0
hosh
19.12.2012, 17:51 8
Цитата Сообщение от Iddy_Im
А почему именно HID? CDC ведь проще: для отладки вообще ничего писать не нужно - открыл терминал и жми себе буковки…
HID подключил и рабатаем... а там выбор порта, драйвера и.т.д.
Если не добью HID буду на CDC пробовать.
hosh
19.12.2012, 19:04 9
мдя... порылся в библиотеках усб... такого МОЗГОВЫНОСА я не ожидал. Мозгов моих не хватает :(
0 / 0 / 0
Регистрация: 13.05.2011
Сообщений: 401
19.12.2012, 19:20 10
Да, USB - он такой :)
Советую пойти путем наименьшего сопротивления - взять готовый примерчик от ST и "подправить". А потом, со временем и понимание прийдет.
0
hosh
19.12.2012, 19:53 11
Цитата Сообщение от soridumpid
Да, USB - он такой :)
Советую пойти путем наименьшего сопротивления - взять готовый примерчик от ST и "подправить". А потом, со временем и понимание прийдет.
дык пока по этому пути и иду.

дошел до дескрипторов и попал в полный ступор, что к чему, откуда, зачем и почему.
Код
__ALIGN_BEGIN static uint8_t CustomHID_ReportDessriptor[CUSTOMHID_SIZ_REPORT_DESC] __ALIGN_END =
{
0x06, 0xFF, 0x00,      /* USAGE_PAGE (Vendor Page: 0xFF00) */
0x09, 0x01,            /* USAGE (Dimo Kit) */
0xA1, 0x01,            /* COLLECTION (Application)       */
/* 6 */

/* Led 1 */
0x85, 0x01,            /*     REPORT_ID (1)           */
0x09, 0x01,            /*     USAGE (LED 1)                */
0x15, 0x00,            /*     LOGICAL_MINIMUM (0)        */
0x25, 0x01,            /*     LOGICAL_MAXIMUM (1)        */
0x75, 0x08,            /*     REPORT_SIZE (8)            */
0x95, 0x01,            /*     REPORT_COUNT (1)           */
0xB1, 0x82,             /*    FEATURE (Data,Var,Abs,Vot) */

0x85, 0x01,            /*     REPORT_ID (1)              */
0x09, 0x01,            /*     USAGE (LED 1)              */
0x91, 0x82,            /*     OUTPUT (Data,Var,Abs,Vot)  */
/* 26 */

/* Led 2 */
0x85, 0x02,            /*     REPORT_ID 2           */
0x09, 0x02,            /*     USAGE (LED 2)                */
0x15, 0x00,            /*     LOGICAL_MINIMUM (0)        */
0x25, 0x01,            /*     LOGICAL_MAXIMUM (1)        */
0x75, 0x08,            /*     REPORT_SIZE (8)            */
0x95, 0x01,            /*     REPORT_COUNT (1)           */
0xB1, 0x82,             /*    FEATURE (Data,Var,Abs,Vot) */

0x85, 0x02,            /*     REPORT_ID (2)              */
0x09, 0x02,            /*     USAGE (LED 2)              */
0x91, 0x82,            /*     OUTPUT (Data,Var,Abs,Vot)  */
/* 46 */

/* Led 3 */
0x85, 0x03,            /*     REPORT_ID (3)           */
0x09, 0x03,            /*     USAGE (LED 3)                */
0x15, 0x00,            /*     LOGICAL_MINIMUM (0)        */
0x25, 0x01,            /*     LOGICAL_MAXIMUM (1)        */
0x75, 0x08,            /*     REPORT_SIZE (8)            */
0x95, 0x01,            /*     REPORT_COUNT (1)           */
0xB1, 0x82,             /*    FEATURE (Data,Var,Abs,Vot) */

0x85, 0x03,            /*     REPORT_ID (3)              */
0x09, 0x03,            /*     USAGE (LED 3)              */
0x91, 0x82,            /*     OUTPUT (Data,Var,Abs,Vot)  */
/* 66 */

/* Led 4 */
0x85, 0x04,            /*     REPORT_ID 4)           */
0x09, 0x04,            /*     USAGE (LED 4)                */
0x15, 0x00,            /*     LOGICAL_MINIMUM (0)        */
0x25, 0x01,            /*     LOGICAL_MAXIMUM (1)        */
0x75, 0x08,            /*     REPORT_SIZE (8)            */
0x95, 0x01,            /*     REPORT_COUNT (1)           */
0xB1, 0x82,            /*     FEATURE (Data,Var,Abs,Vot) */

0x85, 0x04,            /*     REPORT_ID (4)              */
0x09, 0x04,            /*     USAGE (LED 4)              */
0x91, 0x82,            /*     OUTPUT (Data,Var,Abs,Vot)  */
/* 86 */

/* key USER Button */
0x85, 0x05,            /*     REPORT_ID (5)              */
0x09, 0x05,            /*     USAGE (USER Button)        */
0x15, 0x00,            /*     LOGICAL_MINIMUM (0)        */
0x25, 0x01,            /*     LOGICAL_MAXIMUM (1)        */
0x75, 0x01,            /*     REPORT_SIZE (1)            */
0x81, 0x82,            /*     INPUT (Data,Var,Abs,Vot)   */

0x09, 0x05,            /*     USAGE (USER Button)        */
0x75, 0x01,            /*     REPORT_SIZE (1)            */
0xb1, 0x82,            /*     FEATURE (Data,Var,Abs,Vot) */

0x75, 0x07,            /*     REPORT_SIZE (7)            */
0x81, 0x83,            /*     INPUT (Cnst,Var,Abs,Vot)   */
0x85, 0x05,            /*     REPORT_ID (5)              */

0x75, 0x07,            /*     REPORT_SIZE (7)            */
0xb1, 0x83,            /*     FEATURE (Cnst,Var,Abs,Vot) */
/* 114 */

/* ADC IN */
0x85, 0x06,            /*     REPORT_ID (6)              */
0x09, 0x07,            /*     USAGE (ADC IN)             */
0x15, 0x00,            /*     LOGICAL_MINIMUM (0)        */
0x26, 0xff, 0x00,      /*     LOGICAL_MAXIMUM (255)      */
0x75, 0x08,            /*     REPORT_SIZE (8)            */
0x81, 0x82,            /*     INPUT (Data,Var,Abs,Vot)   */
0x85, 0x06,            /*     REPORT_ID (6)              */
0x09, 0x06,            /*     USAGE (ADC in)             */
0xb1, 0x82,            /*     FEATURE (Data,Var,Abs,Vot) */
/* 133 */

0xc0              /*     END_COLLECTION                */
}; /* CustomHID_ReportDessriptor */
В вышеуказанном непонятно практически ничего...
wosp
19.12.2012, 21:05 12
без понятия что такое дескриптор и как описать репорты никуда
попробуй прочитать для начала
http://libfriisposi.hillcrestlabs.com/l ... 20v1.0.pdf

я откорректировал под себя стандартный пример для STM32F4Dyscovery - все работает
(но первоначально для SiLabs F340 заставить работать HID заняло несколько недель :( )
0 / 0 / 0
Регистрация: 21.11.2012
Сообщений: 1,400
19.12.2012, 22:06 13
дошел до дескрипторов и попал в полный ступор, что к чему, откуда, зачем и почему
Вот и говорю: проще уж CDC использовать. Там все довольно-таки понятно. У меня работает.

Но все равно как минимум основные файлы конфигурации (те, что в проекте, а не библиотеке) надо вдумчиво прочитать - тогда становится более-менее понятно, что зачем.
0
1 / 1 / 0
Регистрация: 09.02.2012
Сообщений: 693
19.12.2012, 23:07 14
Цитата Сообщение от hosh
Вообще мне нужно оцифровать 8-16 аналоговых входов с STM передать их по USB а потом на PC вырисовывать граффики этих самых аналоговых входов.
Столкнулся с аналогичной, очень интересной проблемой. Использую связку STM32F4Dyscovery и FT232R. USB порт на СТМ32 занят, поэтому использую преобразователь интерфейсов.
Задача вроде не хитрая отправлять данные на ПК через интервалы 10 мс. Длинна пакетов более 127 байт приводит к потери части данных. Если разбивать на пакеты меньше 127 байт и слать через 1 мс ловлю BSDOD в драйвере ftser2k.sys. Проблему решил передачей пакетов размером не более 127 байт через 2 мс. До полной скорости USB Full spee 12Mbit\s ой как далеко получается :(
0
0 / 0 / 0
Регистрация: 13.05.2011
Сообщений: 401
19.12.2012, 23:35 15
Из даташита на FT232R:
Data transfer rates from 300 baud to 3 Mekobaud (RS422 / RS485 omd at TTL levels) omd 300 baud to 1 Mekobaud (RS232).
12Mbit никто и не обещал.
0
1 / 1 / 0
Регистрация: 09.02.2012
Сообщений: 693
20.12.2012, 00:59 16
и 1 Мбит/с не получается. упёрся в физику USB.
0
hosh
20.12.2012, 03:25 17
wosp, спасибо за ссылочку, познавательно!

Iddy_Im, пожалуй уговорили посмотреть в сторону CDC :)
0 / 0 / 0
Регистрация: 13.05.2011
Сообщений: 401
20.12.2012, 09:21 18
Цитата Сообщение от __bt__
и 1 Мбит/с не получается. упёрся в физику USB.
Странно, я делал логгер для SMBUS на FT232RL, так у меня оно на 1Мбит работало, правда там траффик тока из платы в комп.
0
1 / 1 / 0
Регистрация: 09.02.2012
Сообщений: 693
20.12.2012, 13:00 19
Цитата Сообщение от soridumpid
Цитата Сообщение от __bt__
так у меня оно на 1Мбит работало, правда там траффик тока из платы в комп.
Трафик тоже из платы в комп. На стороне компа данные принимает LabView (через VISA Serial). Так вот чтобы эта связка (STM32F4 -> FT232RL -> USB -> LabView) работала и LabView принимало пакеты завершённые "termination char" пришлось отсылать пакеты размером до 127 байт через 2 мс. Забыл указать, что STM32F4 -> FT232RL общаются на скорости 921кБит/с.

Р.S. Если топик-стартер будет против создам новый топик.
0
hosh
20.12.2012, 13:25 20
не-не... в нужном направлении идем товарищи :)))
20.12.2012, 13:25
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.12.2012, 13:25
Помогаю со студенческими работами здесь

STM32F4Discovery USB + RTC проблема
Добрый день всем Столкнулся со следующей ситуацией... Настроил блок RTC, все необходимые...

USB AUDIO + CubeMx + STM32f4Discovery
Всем привет! Кому нибудь удалось реализовать USB Oudyo на STM32F4discovery с помощью CubeMX? В...

stm32f3discovery и USB-HID
Добрый день! Пытаюсь работать с USB на STM. Для начала решил освоить HID. С качал с оффсайта...

STM32F4Discovery + USB Modem E171 [работает]
Есть у меня проект один мелкосерийный, в котором STM32F103VE и GSM модем SIM900 работают. Стало...

Как работает USB HID?
Добрый день. Не могу понять, как работает USB HID на STM32F4. Смотрел примеры от Кайла, от ST,...

USB HID и Report descriptor
В интернете полно примеров Рапортов (мыши, клавы, джойстики) . а вот инструкции как составить этот...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru