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

 
 
> 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
сообщение Jul 31 2014, 07:33
Сообщение #2


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

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



Её не нужно самостоятельно вызывать, это колбэк, он вызывается при поступлении данных. А вот сообщать, что мы готовы принимать очередной пакет, нужно уже самому с помощью USBD_CDC_ReceivePacket.
Go to the top of the page
 
+Quote Post
Atlantis-
сообщение Jul 31 2014, 07:49
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 491
Регистрация: 18-05-11
Пользователь №: 65 102



Цитата(den_po @ Jul 31 2014, 11:33) *
Её не нужно самостоятельно вызывать, это колбэк, он вызывается при поступлении данных. А вот сообщать, что мы готовы принимать очередной пакет, нужно уже самому с помощью USBD_CDC_ReceivePacket.

так я и спрашиваю, где она у Вас вызывается? весь путь по которому CDC_Transmit_FS вызывается, он ведь должен вести в конце концов к OTG_HS_IRQHandler? там обрабатывается флаг прихода данных, вызывается куча функций и в конце концов CDC_Transmit_FS, так ведь должно быть? у меня CDC_Transmit_FS из OTG_FS_IRQHandler не вызывается.
Go to the top of the page
 
+Quote Post
den_po
сообщение Jul 31 2014, 08:08
Сообщение #4


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

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



Цитата(Atlantis- @ Jul 31 2014, 11:49) *
так я и спрашиваю, где она у Вас вызывается? весь путь по которому CDC_Transmit_FS вызывается, он ведь должен вести в конце концов к OTG_HS_IRQHandler? там обрабатывается флаг прихода данных, вызывается куча функций и в конце концов CDC_Transmit_FS, так ведь должно быть? у меня CDC_Transmit_FS из OTG_FS_IRQHandler не вызывается.

Давайте для начала определимся, CDC_Transmit_FS или CDC_Receive_FS.
CDC_Transmit_FS вызывается по желанию. Я пробовал и из главного цикла, и из CDC_Receive_FS.
CDC_Receive_FS в моём случае (stm32f072) вызывается по такой цепочке:
USB_IRQHandler -> HAL_PCD_IRQHandler -> PCD_EP_ISR_Handler -> HAL_PCD_DataOutStageCallback -> USBD_LL_DataOutStage -> USBD_CDC_DataOut -> CDC_Receive_FS.
Вызывается колбэк не напрямую, а через табличку указателей, которая регистрируется в функции MX_USB_DEVICE_Init (usb_device.c)
Go to the top of the page
 
+Quote Post
Atlantis-
сообщение Jul 31 2014, 08:29
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 491
Регистрация: 18-05-11
Пользователь №: 65 102



Цитата(den_po @ Jul 31 2014, 12:08) *
Давайте для начала определимся, CDC_Transmit_FS или CDC_Receive_FS.
CDC_Transmit_FS вызывается по желанию. Я пробовал и из главного цикла, и из CDC_Receive_FS.
CDC_Receive_FS в моём случае (stm32f072) вызывается по такой цепочке:
USB_IRQHandler -> HAL_PCD_IRQHandler -> PCD_EP_ISR_Handler -> HAL_PCD_DataOutStageCallback -> USBD_LL_DataOutStage -> USBD_CDC_DataOut -> CDC_Receive_FS.
Вызывается колбэк не напрямую, а через табличку указателей, которая регистрируется в функции MX_USB_DEVICE_Init (usb_device.c)

извините перепутал, CDC_Receive_FS конечно. у меня проект для STM32F429ZI (точнее для платы Discovery с ним), так вот там CDC_Receive_FS вызывается только при инициализации, а в прерывании - нет. теперь, зная Вашу цепочку, я наверное смогу прописать вызов CDC_Receive_FS куда надо))

Цитата(den_po @ Jul 31 2014, 12:08) *
Вызывается колбэк не напрямую, а через табличку указателей, которая регистрируется в функции MX_USB_DEVICE_Init (usb_device.c)

что за табличка кстати?
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   Цитата(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
- - den_po   Баг с мусором в F0 почти убрал. В функции usbd_con...   Aug 3 2014, 00:16
|- - Vsevolod Gromov   Цитата(Предыдущий баг - должно быть 15, а не 5) Н...   Oct 15 2014, 16:29
|- - den_po   Цитата(Vsevolod Gromov @ Oct 15 2014, 20...   Oct 17 2014, 20:26
|- - 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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


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


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