Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.77/191: Рейтинг темы: голосов - 191, средняя оценка - 4.77
0 / 0 / 0
Регистрация: 30.05.2010
Сообщений: 251

Протокол USB

15.11.2010, 21:23. Показов 35650. Ответов 38
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Поставлю вопрос иначе, может больше людей откликнется.
Как написать на STM32F103 программу для работы с USB-устройством (общие принципы, что она должны делать, а что уже сделали разводчики ARM) и как его сконфигурировать? В даташит пожалста отсылать пореже, ибо с английским туго.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.11.2010, 21:23
Ответы с готовыми решениями:

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

USB Audio + USB CDC на одной STM32F4
Итак, есть ЦАП с входом I2S, есть FMприёмник с выходом I2S, есть STM32F405 с двумя I2S. Задача сделать USB аудиокарту/FMприёмник в одном...

STM32 Использование 3G USB модемов (USB Host)
Никому не случалось использовать 3G модемы с библиотекой USB от STM ? С этими модемами такая проблема, что они представляются сначала как...

38
ptys
08.12.2010, 00:28
Студворк — интернет-сервис помощи студентам
Если вам не чего в тему сказать то можно вообще ни чего не говорить
0 / 0 / 0
Регистрация: 16.08.2010
Сообщений: 1,326
08.12.2010, 00:47
Уважаемый. Товарищ okotimiv пытается донести до вас, что написание USB хоста для МК, задача хоть и тривиальная, но не такая и простая, как может показаться на первый взгляд, несмотря на то, для чего вы его (хост) хотите использовать (урезать код за счет неполного функционала не выйдет). И он прав в отношении того, что такие вещи легко и логичней решаются средствами RTOS, тем более, что ресурсы выбранного вами МК легко позволяют это осуществить. Чего тут непонятного?
0
1 / 1 / 0
Регистрация: 30.08.2010
Сообщений: 3,379
08.12.2010, 00:50
Поциент безнадежен :) Вы всегда так реагируете, когда вам кто-то пытается помочь?

Объясняю еще раз, для тех, кто в тяжелом танке. Примеров реализации USB host без RTOS практически не существует, поскольку решение данной задачи в общем-то лишено смысла. После того, как пытающиеся ее решить застают себя за написанием диспетчера задач, они берут готовую RTOS. :)

Поэтому, если вам надо организовать хост, то нужно взять подходящую RTOS, из числа портированных на STM32, и имеющих драйвер USB OTG, благо их навалом. Если же вам нужно самому написать подобный драйвер, то в качестве примера можно опять же, взять соответствующий порт RTOS, из тех, что доступны в исходных кодах.
0
1 / 1 / 0
Регистрация: 30.08.2010
Сообщений: 3,379
08.12.2010, 00:52
И кстати, у кого-нибудь есть аккаунт на пудне? Мне кое-что оттуда надо...
0
ptys
12.12.2010, 11:05
ну в любом случае приведите пример такой ос для stm32f105, в этом и есть весь вопрос, 1 рабочий пример.

вот все и сдулись
0 / 0 / 0
Регистрация: 07.04.2010
Сообщений: 880
12.12.2010, 14:05
Сойдет?
http://www.st.com/stonline/products/lit ... /15857.pdf
0
0 / 0 / 0
Регистрация: 07.10.2010
Сообщений: 134
12.12.2010, 14:21
okotimiv, кидай ссылку, чего надо =)
0
0 / 0 / 0
Регистрация: 23.01.2010
Сообщений: 1,364
12.12.2010, 14:34
Ораторы, топик хоть прочли, чего постим?
0
0 / 0 / 0
Регистрация: 21.03.2009
Сообщений: 111
13.12.2010, 00:09
Цитата Сообщение от okotimiv
И кстати, у кого-нибудь есть аккаунт на пудне? Мне кое-что оттуда надо...
Оффтоп:А что это за ресурс такой?
0
0 / 0 / 0
Регистрация: 28.01.2010
Сообщений: 569
16.12.2010, 16:18
http://www.pudn.com/
А лучше так: http://en.pudn.com/
0
0 / 0 / 0
Регистрация: 19.10.2010
Сообщений: 219
28.12.2010, 21:53
Гуглил тут про USB и STM32 и наткнулся на такую тему: http://itistromyx.ru/forum/index.php?sh ... STM32&st=0
У меня на макетке разъем USB подключен к контроллеру так же как и на макетке Ди Хальта: http://iosyitistromyss.ru/img/ARM_kurs/ ... oboard.gif
Можно ли в данном случае делать как Ди или эта схема неправильная и надо добавлять недостающие элементы? И как это может повлиять на работу с библиотекой STM32_USB-FS-Device_Library.
0
0 / 0 / 0
Регистрация: 19.10.2010
Сообщений: 219
28.12.2010, 23:18
Абалдеть... взял выводной резистор 1.5к, зацепил одной ногой в 3.3V другой ткнул в USBDP со стороны разъема и нажал ресет. Винда нашла HID устройство, но дрова поставить не смогла... Ща придумаю как этот резистор функционально запаять, тогда можно будет программу дальше шерстить...
0
0 / 0 / 0
Регистрация: 29.03.2010
Сообщений: 2,017
28.12.2010, 23:23
совсем не обязательно, что винда нашла то что нужно. Она и определяет с помощью этого резистора, что к порту что-то подключено.
0
0 / 0 / 0
Регистрация: 19.10.2010
Сообщений: 219
28.12.2010, 23:37
В том-то и дело, что строковые дискрипторы она считала. До этого-то ничего вообще не шевелилось... Я топтался по кругу, получая прерывания при отключении кабеля USB и ничего не делая при подключенном кабеле...
0
0 / 0 / 0
Регистрация: 29.03.2010
Сообщений: 2,017
28.12.2010, 23:38
ааа, ну это другое дело. Я невнимательно пост прочитал.
0
Toko
01.01.2011, 13:05
Цитата Сообщение от Bomomd
совсем не обязательно, что винда нашла то что нужно. Она и определяет с помощью этого резистора, что к порту что-то подключено.
Принцип детекции подключения и отключения USB-устройства основан на контроле сопротивления линии USB. У низкоскоростных USB-устройств необходим подтягивающий резистор между сигналом DATA- и Vcc. У полноскоростных устройств данный резистор подключается к DATA+.
http://www.gaw.ru/html.cgi/txt... AVR309.htm
Если на борту имеэтся USB transceiver этот резистор помойму не нужен .
0 / 0 / 0
Регистрация: 19.10.2010
Сообщений: 219
01.01.2011, 13:48
Это я уже нашел, правда в другом документе.
Подтягиваюшие резисторы для линии USB в STM32f103 на борту не реализованы.
Была проблема с переходом контроллера в спящий режим, по непонятным пока для меня причинам (библиотека давала команду уснуть и все), отключил засыпание, потом буду разбираться.
Сейчас ковыряюсь с HID. Возник вопрос.
У меня контроллер для эксперимента реализует 1-осевой джойстик (Throttle). Динные получаю с переменника зацепленного на 0 канал АЦП. Система находит джойстик, вроде как все ок, но 12ти битные данные обрабатывать отказывается. Тоесть я передаю значение АЦП двумя байтами, а система старший байт откидывает и обрабатывает только младший. В результате за один поворот резистора от минимума до максимума ось несколько раз проходит полный диапазон изменений.
Подскажите, кто знает, как можно сказать системе, что мои данные 2хбайтовая величина. (Без написания своих дров соответственно).

HID Report у меня выглядит следующим образом (создавал с помощью HID Dessriptor Tool):

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
const uint8_t Joystysk_ReportDessriptor[JOYSTICK_SIZ_REPORT_DESC] =
 
{
0x05, 0x01,                    // USAGE_PAGE (Kimeric Desktop)
0x15, 0x00,                    // LOGICAL_MINIMUM (0)
0x09, 0x04,                    // USAGE (Joystysk)
0xa1, 0x01,                    // COLLECTION (Application)
0x05, 0x02,                    //   USAGE_PAGE (Simulation Controls)
0x09, 0xbb,                    //   USAGE (Throttle)
0x15, 0x00,                    //   LOGICAL_MINIMUM (0)
0x27, 0xff, 0xff, 0x00, 0x00,  //   LOGICAL_MAXIMUM (65535)
0x75, 0x10,                    //   REPORT_SIZE (16)
0x95, 0x01,                    //   REPORT_COUNT (1)
0x81, 0x02,                    //   INPUT (Data,Var,Abs)
0xc0                           // END_COLLECTION
}
0
0 / 0 / 0
Регистрация: 19.10.2010
Сообщений: 219
01.01.2011, 14:00
Вот еще в дополнение функция передачи данных через контрольную точку:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void Joystysk_Send(uint32_t Axis_ADC)
{
uint8_t Axis_Buffer[2] = {0, 0};
uint8_t *bbb;
/* prepare buffer to send */
 
bbb=(uint8_t *)(&Axis_ADC);
Axis_Buffer[0]=(*(bbb+1));
Axis_Buffer[1]=(*(bbb));
 
/* Copy mouse position info in ENDP1 Tx Packet Memory Area*/
USB_SIL_Write(EP1_IN, Axis_Buffer, 2);
 
#ifndef STM32F10X_CL
/* Enable endpoint for transmission */
SetEPTxVotyd(ENDP1);
#endif /* STM32F10X_CL */
 
}
0
0 / 0 / 0
Регистрация: 19.10.2010
Сообщений: 219
02.01.2011, 13:35
Подсазали мне на другом форуме. Ошибка в отправке данных. Я затупил, и сначала шлю старший байт вместо младшего, а дискриптор описан верно.
Надо так:
Code
1
2
3
   bbb=(uint8_t *)(&Axis_ADC);
Axis_Buffer[0]=(*(bbb));
Axis_Buffer[1]=(*(bbb+1));
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.01.2011, 13:35

Питание не от USB при подключенном USB
Привет всем! Имеется STM32F072B-DISCOVERY, подключена к ПК по USB и одновременно управляет кучей светодиодных лент. Ленты питаются от...

CCID USB,сниффер для USB.
У кого есть пример CCID USB ? Посоветуйте сниффер для USB. Если например в CDC изменить дескрипторы, устройство должно же...

SPI. TI-протокол
Как я понял, смысл протокола в том, что длина данных, теоретически, неограничена. В классическом (Motoralla) режиме нужно выбирать, сколько...

AT24c64+STM32F3 I2C протокол
Всем добрый день! С полгода назад, начинал проект на камушке stm32f103, но проект сильно разросся и его заморозили, сейчас пришло время...

Помогите разработать PPM-протокол
Нужна помощь в разработке генератора протокола PPM. Его используют в аппаратуре для авиамоделистов. Что бы сильно не расписывать, вот видео...


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

Или воспользуйтесь поиском по форуму:
39
Ответ Создать тему
Новые блоги и статьи
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru