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

 
 
> 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
Ответов
rudy_b
сообщение Nov 14 2015, 16:43
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 888
Регистрация: 25-09-08
Из: Питер
Пользователь №: 40 458



Вопрос на ту же тему. Поднял Midware USB CDC (HAL) пришедшее с Stm32 CubeMX v1.0 (version 4.6.0) (Device), процессор Stm32f207. На всякий случай некоторые подробности.
1. При получении пакета CDC вызывается пользовательская (callback) функция CDC_Receive_FS (uint8_t* Buf, uint32_t *Len).
Вызов идет на уровне прерываний.
В ней я считываю данные и, обязательно, вызываю USBD_CDC_ReceivePacket(hUsbDevice_0), иначе следующий пакет не будет принят.
Изначально, для контроля по Эхо, в ней же вызывалась функция посылки ответа CDC_Transmit_FS(...). Затем стал устанавливать флаг и вызывать ее в MainLoop.
2. Для отправки ответных данных служит пользовательская функция CDC_Transmit_FS(...) вызываемая из любого места, в частности из MainLoop.
В ней сначала заполняется буфер, затем вызывается функция USBD_CDC_SetTxBuffer(hUsbDevice_0, UserTxBufferFS, Len), затем собственно отправка пакета USBD_CDC_TransmitPacket(hUsbDevice_0) (внутренняя функция HAL).

Сначала CDC_Transmit_FS вызывалась прямо в CDC_Receive_FS (т.е. на уровне прерываний) для контроля эхо и все работало идеально. Затем, для анализа и формирования ответного пакета, перенес CDC_Transmit_FS в MainLoop. И вот тут начались проблемы.

Т.е. все (эхо) работает нормально до какого-то момента, а, затем, затыкается навсегда из-за того, что передача пакета зависает навсегда - при попытке вызова USBD_CDC_TransmitPacket она возвращает USBD_BUSY.

Всякие эксперименты дали следующее - все начинает работать прекрасно, если перед вызовом USBD_CDC_TransmitPacket запретить прерывания, а, потом, снова разрешить. Но это как-то слишком криво получается.

Т.е. похоже, что если при выполнении USBD_CDC_TransmitPacket происходит прерывание, то HALовская система обалдевает.

Никто с подобным не сталкивался?

P.S. Да, сейчас прерывания "плоские", т.е. все на одном уровне приоритета. Может тут можно поиграться?
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
- - 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


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

 


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


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