реклама на сайте
подробности

 
 
> STM32CubeMX и USB CDC, какие функции использовать?
ViKo
сообщение Jul 14 2014, 18:00
Сообщение #1


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Уже появилась в CubeMX поддержка STM32F3. Сделал проект для STM32F3Discovery. Подключаю к компьютеру - обнаруживается Virtual COM Port. Но как его использовать? В main программе на месте пользовательского кода - пустые места. Наверное, где-то описаны пара функций для работы - принять, послать. И буферы создать нужно. Не вижу ни в документации, ни в примерах. Поможите, люди добрые!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
den_po
сообщение Aug 3 2014, 00:16
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 139
Регистрация: 9-11-12
Из: Санкт-Петербург
Пользователь №: 74 315



Баг с мусором в F0 почти убрал. В функции usbd_conf.c/USBD_LL_Init заменил
Код
  HAL_PCDEx_PMAConfig(pdev->pData , 0x00 , PCD_SNG_BUF, 0x18);
  HAL_PCDEx_PMAConfig(pdev->pData , 0x80 , PCD_SNG_BUF, 0x58);
на
Код
  //0x10 == 2*CDC_CMD_PACKET_SIZE?
  HAL_PCDEx_PMAConfig(pdev->pData , 0x00 , PCD_SNG_BUF, 0x10+0*USB_FS_MAX_PACKET_SIZE);
  HAL_PCDEx_PMAConfig(pdev->pData , 0x80 , PCD_SNG_BUF, 0x10+1*USB_FS_MAX_PACKET_SIZE);
  HAL_PCDEx_PMAConfig(pdev->pData , 0x01 , PCD_SNG_BUF, 0x10+2*USB_FS_MAX_PACKET_SIZE);
  HAL_PCDEx_PMAConfig(pdev->pData , 0x81 , PCD_SNG_BUF, 0x10+3*USB_FS_MAX_PACKET_SIZE);

Почти - потому что в среднем через 20-30 пакетов от МК к компу приходит пакет, который со второго байта хранит содержимое буфера приёма МК.
Тестовая программа передаёт кучу буковок, МК меняет их регистр на противоположный и передаёт обратно. Результат (вывод данных, пришедших с МК) получается примерно такой:
Код
fghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklm
ghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmn
hijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmno
ijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnop
jKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQ
Ошибка в пакете №35
должно быть:
jklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopq

Но в целом прогресс заметный. Можно передавать данные кусками до 63 байт длиной (CDC_DATA_FS_MAX_PACKET_SIZE == 64).

(Предыдущий баг - должно быть 15, а не 5)

Сообщение отредактировал den_po - Aug 3 2014, 00:18
Go to the top of the page
 
+Quote Post
Vsevolod Gromov
сообщение Oct 15 2014, 16:29
Сообщение #3





Группа: Новичок
Сообщений: 2
Регистрация: 15-10-14
Пользователь №: 83 154



Цитата
(Предыдущий баг - должно быть 15, а не 5)


Ну, по моему не 15 там должно быть, а просто перепутано 5 и 8 местами. Т.е. МК поддерживает 8 endpoints, а для CDC используется 5.
control in out
bulk data in out
command in

Я тут по ходу пиесы прикручиваю плюсовые классы-адаптеры кубовых драйверов для freertos, ну и приходится разбираться с этими внутренностями.
Go to the top of the page
 
+Quote Post
den_po
сообщение Oct 17 2014, 20:26
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 139
Регистрация: 9-11-12
Из: Санкт-Петербург
Пользователь №: 74 315



Цитата(Vsevolod Gromov @ Oct 15 2014, 20:29) *
Ну, по моему не 15 там должно быть, а просто перепутано 5 и 8 местами. Т.е. МК поддерживает 8 endpoints, а для CDC используется 5.
control in out
bulk data in out
command in

Я тут по ходу пиесы прикручиваю плюсовые классы-адаптеры кубовых драйверов для freertos, ну и приходится разбираться с этими внутренностями.

Там должно быть не меньше, чем hpcd_USB_FS.Init.dev_endpoints.
В коде от других серий микроконтроллеров везде 15. И тут по форматированию текста понятно, что было 15, но кто-то случайно удалил символ.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- ViKo   STM32CubeMX и USB CDC   Jul 14 2014, 18:00
- - Integro   посмотрите в файле usbd_cdc_if.c, CDC_Transmit_FS...   Jul 15 2014, 11:38
|- - ViKo   Цитата(Integro @ Jul 15 2014, 14:38) посм...   Jul 15 2014, 20:01
|- - Integro   Цитата(ViKo @ Jul 15 2014, 23:01) Пробова...   Jul 16 2014, 07:50
- - ViKo   Из мейн функции не видны. Можно инклюдами заголово...   Jul 16 2014, 08:19
|- - Integro   Цитата(ViKo @ Jul 16 2014, 11:19) Из мейн...   Jul 16 2014, 12:49
- - ViKo   Кабы я умел программировать USB в STM32, стал бы я...   Jul 16 2014, 16:18
|- - Integro   Цитата(ViKo @ Jul 16 2014, 19:18) Кабы я ...   Jul 17 2014, 15:06
- - ViKo   Вот функция из usbd_cdc_if.c Код/** * @brief CD...   Jul 20 2014, 10:14
|- - Integro   Цитата(ViKo @ Jul 20 2014, 13:14) ... Ха,...   Jul 23 2014, 08:12
||- - ViKo   Цитата(Integro @ Jul 23 2014, 11:12) Ха, ...   Jul 24 2014, 12:19
||- - Tahoe   Цитата(ViKo @ Jul 24 2014, 16:19) Пытался...   Jul 24 2014, 14:32
||- - ViKo   Цитата(Tahoe @ Jul 24 2014, 17:32) Ну да,...   Jul 24 2014, 14:51
|- - den_po   Цитата(ViKo @ Jul 20 2014, 14:14) Вот фун...   Jul 30 2014, 20:37
|- - Atlantis-   Цитата(den_po @ Jul 31 2014, 00:37) Если ...   Jul 31 2014, 06:17
|- - Atlantis-   Цитата(den_po @ Jul 31 2014, 00:37) Если ...   Oct 20 2014, 08:12
- - Golikov A.   а галочки дебуг и трейс информация, 0 оптимизация ...   Jul 24 2014, 12:25
|- - ViKo   Цитата(Golikov A. @ Jul 24 2014, 15:25) а...   Jul 24 2014, 13:05
- - Golikov A.   совсем недавно кто-то запускал тут ЛА и прочую фиг...   Jul 24 2014, 19:02
|- - ViKo   Цитата(Golikov A. @ Jul 24 2014, 22:02) с...   Jul 24 2014, 19:05
- - ViKo   Вдруг взяло и заработало. ЛА показывает. Ничего,...   Jul 24 2014, 21:11
- - ViKo   Опять не работает ЛА. Чувствую, дело в температуре...   Jul 25 2014, 08:54
- - Golikov A.   драйвер CDC - вещь суровая, у меня есть RS485 - ви...   Jul 25 2014, 20:37
- - ViKo   По поводу логического анализатора вырисовывается с...   Jul 26 2014, 11:39
- - den_po   Её не нужно самостоятельно вызывать, это колбэк, о...   Jul 31 2014, 07:33
|- - Atlantis-   Цитата(den_po @ Jul 31 2014, 11:33) Её не...   Jul 31 2014, 07:49
|- - den_po   Цитата(Atlantis- @ Jul 31 2014, 11:4...   Jul 31 2014, 08:08
|- - Atlantis-   Цитата(den_po @ Jul 31 2014, 12:08) Давай...   Jul 31 2014, 08:29
|- - den_po   Цитата(Atlantis- @ Jul 31 2014, 12:2...   Jul 31 2014, 10:05
|- - Atlantis-   Цитата(den_po @ Jul 31 2014, 14:05) А мож...   Jul 31 2014, 10:42
|- - den_po   Цитата(Atlantis- @ Jul 31 2014, 14:4...   Jul 31 2014, 12:18
|- - Atlantis-   Цитата(den_po @ Jul 31 2014, 16:18) Вот э...   Jul 31 2014, 12:33
||- - den_po   Цитата(Atlantis- @ Jul 31 2014, 16:3...   Jul 31 2014, 13:53
|- - Atlantis-   Цитата(den_po @ Jul 31 2014, 16:18) Хе, с...   Aug 1 2014, 05:55
- - ViKo   У меня внутри бесконечного цикла работает такой ко...   Jul 31 2014, 07:36
- - Atlantis-   ЦитатаПроверьте свежесгенерированный кубом код, из...   Aug 1 2014, 11:08
- - den_po   CDC_Transmit_FS нужно вызывать самостоятельно, ког...   Aug 1 2014, 11:29
|- - Atlantis-   Цитата(den_po @ Aug 1 2014, 15:29) CDC_Tr...   Aug 1 2014, 12:02
- - den_po   Думаю, ерунда может приходить, если отправляются д...   Aug 2 2014, 13:01
|- - Vsevolod Gromov   Цитата(den_po @ Oct 18 2014, 00:26) Там д...   Oct 20 2014, 10:23
- - den_po   Последняя проблема - моя ошибка. Просто драйвер на...   Aug 6 2014, 12:19
- - rudy_b   Вопрос на ту же тему. Поднял Midware USB CDC (HAL)...   Nov 14 2015, 16:43


Reply to this topicStart new topic
4 чел. читают эту тему (гостей: 4, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 13:10
Рейтинг@Mail.ru


Страница сгенерированна за 0.01481 секунд с 7
ELECTRONIX ©2004-2016