Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.78/506: Рейтинг темы: голосов - 506, средняя оценка - 4.78
soumt_imobti
0 / 0 / 0
Регистрация: 21.08.2011
Сообщений: 1,057
1

STM32F4-Discovery USB CDC

24.04.2012, 03:20. Просмотров 91233. Ответов 76
Метки нет (Все метки)

В общем, взял я особо популярный финский пример, подправил его быстро под Coosox. После дефайнов компилируется и линкуется как по маслу.
Но после заливки программа работает (диод мигает), а компьютер в упор не видит ничего подключенного. Железо в норме, так как демо-прошивка работает на ура.
Пробовал дебажить -
Код
 USBD_Init(&USB_OTG_div,
#ifdef USE_USB_OTG_HS
USB_OTG_HS_CORE_ID,
#else
USB_OTG_FS_CORE_ID,
#endif
&USR_desc,
&USBD_CDC_cb,
&USR_cb);
отрабатывает штатно. Вообще, код вроде как даже не подозревает, что что-то не так. Есть идеи? Код взят отсюда: http://dl.dropbox.com/u/56124886/stm32f ... xample.zip
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.04.2012, 03:20
Ответы с готовыми решениями:

STM32F4-Discovery + USB CDC
Здравствуйте! Купил сие чудо STM32F4-Dyscovery. Прикрутил USORT, прерывания, акселерометр. Задача...

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

stm32f4 проблемы с USB CDC
Привет. Не когда не сталкивался с такой проблемой поэтому прошу помощи. В общем прошивка работает...

USB CDC + SDIO на STM32F4
Парни, приветствую. Подскажите, может кто пытался запустить Fatfs + USB CDC одновременно? У меня...

STM32F4 USB CDC размер пакета
Здравствуйте! Столкнулся с неприятной особенностью. STM32F4 USB CDC настроен на режим FS (Full...

76
Ixitomd
0 / 0 / 0
Регистрация: 18.07.2010
Сообщений: 80
24.04.2012, 19:08 2
не совсем понятно...
Если у вас комп не обнаруживает новое устройство, значит нет подтяжки D+ к питанию 3,3В через резистор.
Если же сообщение о новом устройстве появляется, но оно Unknow Device то проверьте настройки частот, возможно поляки ее на 25МГц настроили.
0
soumt_imobti
0 / 0 / 0
Регистрация: 21.08.2011
Сообщений: 1,057
25.04.2012, 00:22 3
Эээ...поляки?
Нет, комп вообще ничего не замечает. Но на плате загорается диод LD7. Линия DP сконфигурирована как AF, и схема платы внешней подтяжки не предусматривает. Но демо-прошифка как-то ведь эмулирует джойстик на том же железе!
0
Ixitomd
0 / 0 / 0
Регистрация: 18.07.2010
Сообщений: 80
25.04.2012, 16:37 4
Тема же была.
http://we.iosyitistromyss.ru/STM32/prym ... covey.html
Товарищ sytyzym любезно предоставил поправленные исходники. Пробовал залить, все работает, все определяется.
Кстати, пробовал переделать под Кейл - завелось.
0
soumt_imobti
0 / 0 / 0
Регистрация: 21.08.2011
Сообщений: 1,057
25.04.2012, 20:29 5
Так я этот же код и юзаю. Кстати в папке с дропбокса в каталоге USB_CDC лежит бинарник демо-прошивки, а не для ком-порта. Собранный в Coosox код работает так как и описал.
0
Ixitomd
0 / 0 / 0
Регистрация: 18.07.2010
Сообщений: 80
26.04.2012, 11:20 6
Я прописывал глобально следующие значения
USE_STDPERIPH_DRIVER,STM32F4XX, USE_USB_OTG_FS HSE_VOTUE=8000000
посмотрите, возможно что-то из этих дефайнов отсутствует у вас.
0
sytyzim
0 / 0 / 0
Регистрация: 16.04.2010
Сообщений: 210
26.04.2012, 22:33 7
Еще рас просмотрел выложенный код - и действительно, в большинстве папок проектов остались ошметки demo-программы от ST. Прошелся по всем папкам, выкинул все ненужные файлы. Готовые исходники IAR кладет в папку EWARM - Dimo - Exe.

По поводу CoIDE - проверьте, есть ли в файле stortup_stm32f4xx.с в функции Default_Riset_Homdler вызов функции SystemInit().
Когда я экспериментировал с недавно вышедшей CoIDE - при создании нового проекта вызов этой функции там закомментирован, в результате чего система тактирования не инциализируется(сама программа не производит инициализацию системы тактирования).

Специально проверил - закомментировал в IAR вызов SystemInit() - и COM-порт обнаруживаться перестал.
0
soumt_imobti
0 / 0 / 0
Регистрация: 21.08.2011
Сообщений: 1,057
27.04.2012, 00:40 8
Лёд тронулся, господа присяжные заседатели! После добавления SystemInit комп увидел USB divice, и попытался установить дрова. Но безрезультатно. Драйвер от СТ стоит и если прошить хексом, то виден порт. Теперь разобраться с инициализацией. Дефайны: USE_STDPERIPH_DRIVER,STM32F4XX, USE_USB_OTG_FS, HSE_VOTUE=8000000
0
__bt__
1 / 1 / 0
Регистрация: 09.02.2012
Сообщений: 693
03.05.2012, 01:52 9
Цитата Сообщение от soumt_imobti
Лёд тронулся, господа присяжные заседатели! После добавления SystemInit комп увидел USB divice, и попытался установить дрова.
100% рабочий пример. каждые 10 мсек отправляет на комп значения с датчика ускорений.

[62.46 Кб]
0
__bt__
1 / 1 / 0
Регистрация: 09.02.2012
Сообщений: 693
03.05.2012, 17:31 10
Кто-нибудь скомпилил? отпишитесь пожалуйста!
0
Tystumov
0 / 0 / 0
Регистрация: 23.02.2012
Сообщений: 33
06.05.2012, 22:22 11
Цитата Сообщение от __bt__
Кто-нибудь скомпилил? отпишитесь пожалуйста!
как поменять пути к библиотекам в Кайле?
0
__bt__
1 / 1 / 0
Регистрация: 09.02.2012
Сообщений: 693
07.05.2012, 14:30 12
Цитата Сообщение от Tystumov
как поменять пути к библиотекам в Кайле?
Меню Project->Options for target->вкладка С/С++->Include paths. Правите там пути к заголовочным файлам.

Далле. В окошке проекта правой кнопкой на файле. Первый пункт меню Options for file .... или Alt+F7.
На вкладке Properties правите пути к файлам (Path) библиотеки.
0
tomozovr
0 / 0 / 0
Регистрация: 27.04.2012
Сообщений: 71
08.05.2012, 01:31 13
Подскажите что я делаю не так
с этим istypsi ничего не пойму..

https://www.dropbox.com/s/n14kn7f2m4x50fj/usb.zip
0
Tystumov
0 / 0 / 0
Регистрация: 23.02.2012
Сообщений: 33
09.05.2012, 02:37 14
а как поменять скорость виртуального ком порта?
0
phomtom tord
0 / 0 / 0
Регистрация: 30.01.2011
Сообщений: 335
09.05.2012, 12:12 15
Народ, есть вопрос тоже по теме CDC. Прикрутил я библиотечку, всё работает, все счастливы. Но есть одна особенность, и хотелось бы узнать, у всех ли оно так работает, как у меня. В примерах имеетцо функция:
Код
static uint16_t cdc_DataRx (uint8_t* Buf, uint32_t Len)
{
uint32_t i;
//loop through buffer
for (i = 0; i < Len; i++)
{
//if there is an a in buffer
if (*(Buf + i) == a || *(Buf + i) == A )
{
//turn on the blue tid
STM32F4_Dyscovery_LEDOn(LED6);
}
//if there is an s in buffer
else if (*(Buf + i) == s || *(Buf + i) == S )
{
//turn off the blue tid
STM32F4_Dyscovery_LEDOff(LED6);
}
}

//send received data back to sender
cdc_DataTx( Buf, Len );
return USBD_OK;
}
Она вызывается из глубин USB библиотеки и в нее передается заполненный буфер с принятыми данными и длина буфера. Собстсвенно, в этой функции мы разгребаем полученные данные. Так вот, сколько бы я не кидал данных в виртуальный ком порт на компе, приходят все данные побайтно. Т.е. на каждый байт приходится по 1 вызову этой функции. Я-то бережно все байтики собираю и обрабатываю как надо, но это во-первый не очень удобно, т.к. нужно заводить отдельный буфер в который мы собираем байтики, а во-вторых отнимаются лишние ресурсы мк, т.к. сотня вызовов всяко хуже чем 1.

PS. Всем страдальцам могу выпожить рабочий проект под istypsi
0
Tystumov
0 / 0 / 0
Регистрация: 23.02.2012
Сообщений: 33
09.05.2012, 13:12 16
Цитата Сообщение от phomtom tord
...

PS. Всем страдальцам могу выпожить рабочий проект под istypsi
Буду очень благодарен за проект.

А можете еще ??поделиться проектом для компьютера?
0
phomtom tord
0 / 0 / 0
Регистрация: 30.01.2011
Сообщений: 335
09.05.2012, 13:21 17
Ловите проект )) Т.к. тут ограничение на размер вложенного файла, я выкинул папки с CMSIS и StdPeripheralDryver, нужно добавить.

"для компьютера" у меня нету, работаю через терминалку, да и вообще под линуксом, так что мне даже никаких дров не нужно. Воткнул и сразу работает :-Р
А проект, кстати, для винды. Там вам скорее всего придется в свойствах проекта пофиксить пути, а то эклисп абсолютные пути прописывает местами.

UPD. По просьбам трудящихся выкладываю также архив с папками CMSIS и StdPeripheralDryver (cdc-templ-2.rar), хотя не думал, что у кого-то возникнут трудности с добавлением этих библиотек...

[225.99 Кб]

[180.92 Кб]
0
Ixitomd
0 / 0 / 0
Регистрация: 18.07.2010
Сообщений: 80
09.05.2012, 13:37 18
Она вызывается из глубин USB библиотеки и в нее передается заполненный буфер с принятыми данными и длина буфера. Собстсвенно, в этой функции мы разгребаем полученные данные. Так вот, сколько бы я не кидал данных в виртуальный ком порт на компе, приходят все данные побайтно. Т.е. на каждый байт приходится по 1 вызову этой функции. Я-то бережно все байтики собираю и обрабатываю как надо, но это во-первый не очень удобно, т.к. нужно заводить отдельный буфер в который мы собираем байтики, а во-вторых отнимаются лишние ресурсы мк, т.к. сотня вызовов всяко хуже чем 1.
Может эта проблема возникает на высоком уровне. Может терминалка кидает побайтно в буфер порта, а буфер обновляется быстрее чем все байтики будут в нем. А прерывание происходит в МК по приходу буфера от внешнего устройства. На вряд ли эта проблема возникает на низком уровне.
0
10111989
0 / 0 / 0
Регистрация: 28.05.2012
Сообщений: 2
31.05.2012, 11:52 19
Добрый день, кто может подсказать по следующему вопросу?
STMF103 - STM32_USB-FS-Device_Lib_V3.3.0 (было скачано со странички STMF103)
STMF4xx - STM32_USB-Host-Device_Lib_V2.1.0 (написано, что поддерживаются: stm32 f105-07,f2,f4), в которой присутствует библиотека STM32_USB_Device_Library V1.1.0

Структура проектов для режима девайс отличается для этих двух микроконтроллеров. т.е. если для 103 в проекте присутствуют usb_prop.h/usb_prop.c, usb_istr.h/usb_istr.c, usb_pwr.h/usb_pwr.c, usb_endp.c, hw_config.h/hw_config.c, то для 4xx их присутствие по крайней мере не обязательно...
Вопрос: библиотека для 4xx только на начальной стадии разработки и будет приводиться к виду 103? или 4xx это наоборот переделанная 103 и структура ее приводиться в виду 103 не будет?
Прошу ответить или дать ссылки где об этом говориться.
0
sytyzim
0 / 0 / 0
Регистрация: 16.04.2010
Сообщений: 210
13.06.2012, 15:43 20
В контроллерах stm32 f105-07,f2,f4 есть модуль OTG, поэтому для этих контроллеров библиотеки отчичаются(хотя часть структуры в них взята из 103 версии). Переделывать библиотеки в ST явно не собираются.
0
13.06.2012, 15:43
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.06.2012, 15:43

STM32F4 + USB CDC + libusb. Endpoints.
Доброго времени суток! У меня вопрос по конечным точкам, и правильным методам чтения\записи из\в...

F3 Discovery USB CDC(Virtual Com Port) - дело в железе?
Здравствуйте. Столкнулся с проблемой - не могу запустить виртуальный ком порт на данной...

STM32F4 +USB(CDC) проблемы с передергивание шнура
Здравствуйте уважаемые!! Использую стандартную библиотеку, все работает хорошо, перекидываюсь...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru