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

 
 
> 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
Ответов
ViKo
сообщение Jul 20 2014, 10:14
Сообщение #2


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

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



Вот функция из usbd_cdc_if.c
Код
/**
  * @brief  CDC_Transmit_FS
  *         Data send over USB IN endpoint are sent over CDC interface
  *         through this function.          
  *         @note
  *        
  *                
  * @param  Buf: Buffer of data to be send
  * @param  Len: Number of data to be send (in bytes)
  * @retval Result of the opeartion: USBD_OK if all operations are OK else USBD_FAIL or USBD_BUSY
  */
uint8_t CDC_Transmit_FS(uint8_t* Buf, uint16_t Len)
{
  uint8_t result = USBD_OK;
  /* USER CODE BEGIN 8 */
  USBD_CDC_SetTxBuffer(hUsbDevice_0, UserTxBufferFS, Len);  
  result = USBD_CDC_TransmitPacket(hUsbDevice_0);
  /* USER CODE END 8 */
  return result;
}

Вопрос - как?! Как используется параметр Buf?

А вот еще один шедевр оттуда же.
Код
/**
  * @brief  CDC_Receive_FS
  *         Data received over USB OUT endpoint are sent over CDC interface
  *         through this function.
  *          
  *         @note
  *         This function will block any OUT packet reception on USB endpoint
  *         untill exiting this function. If you exit this function before transfer
  *         is complete on CDC interface (ie. using DMA controller) it will result
  *         in receiving more data while previous ones are still not sent.
  *                
  * @param  Buf: Buffer of data to be received
  * @param  Len: Number of data received (in bytes)
  * @retval Result of the opeartion: USBD_OK if all operations are OK else USBD_FAIL
  */
static int8_t CDC_Receive_FS (uint8_t* Buf, uint32_t *Len)
{
  /* USER CODE BEGIN 7 */
  return (USBD_OK);
  /* USER CODE END 7 */
}

Это означает, что мне нужно поработать там своей головой?
Go to the top of the page
 
+Quote Post
den_po
сообщение Jul 30 2014, 20:37
Сообщение #3


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

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



Цитата(ViKo @ Jul 20 2014, 14:14) *
Вот функция из usbd_cdc_if.c
Код
/**
uint8_t CDC_Transmit_FS(uint8_t* Buf, uint16_t Len)
...

Вопрос - как?! Как используется параметр Buf?

А вот еще один шедевр оттуда же.
Код
static int8_t CDC_Receive_FS (uint8_t* Buf, uint32_t *Len)
...

Это означает, что мне нужно поработать там своей головой?

Если кому ещё интересно, то вот:
Внутри CDC_Transmit_FS нужно самостоятельно выполнить нужные действия. Например, скопировать или дописать содержимое Buf в UserTxBufferFS.
Внутри CDC_Receive_FS нужно обработать пришедшие по USB данные. Чтобы следующий пакет успешно принялся, нужно после обработки данных (в главном цикле либо тут же в CDC_Receive_FS) вызвать USBD_CDC_ReceivePacket(hUsbDevice_0)

Сообщение отредактировал den_po - Jul 30 2014, 20:41
Go to the top of the page
 
+Quote Post
Atlantis-
сообщение Oct 20 2014, 08:12
Сообщение #4


Местный
***

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



Цитата(den_po @ Jul 31 2014, 00:37) *
Если кому ещё интересно, то вот:
Внутри CDC_Transmit_FS нужно самостоятельно выполнить нужные действия. Например, скопировать или дописать содержимое Buf в UserTxBufferFS.
Внутри CDC_Receive_FS нужно обработать пришедшие по USB данные. Чтобы следующий пакет успешно принялся, нужно после обработки данных (в главном цикле либо тут же в CDC_Receive_FS) вызвать USBD_CDC_ReceivePacket(hUsbDevice_0)

я прописал в дескрипторах еще один Endpoint (0x83), инициализировал его в USBD_CDC_Init и загружаю 0x83 в USBD_LL_Transmit - ничего не передает! USBTrace показывает, что EP у меня 2 (0x81 и 0x83), но 0x83 не передает. что-то еще надо для второго EP прописать?
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
|- - 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
|- - Atlantis-   Цитата(den_po @ Jul 31 2014, 00:37) Если ...   Jul 31 2014, 06:17
- - 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
- - 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 - 07:09
Рейтинг@Mail.ru


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