|
STM32CubeMX и USB CDC, какие функции использовать? |
|
|
|
 |
Ответов
|
Jul 20 2014, 10:14
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 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 */ } Это означает, что мне нужно поработать там своей головой?
|
|
|
|
|
Jul 30 2014, 20:37
|
Частый гость
 
Группа: Участник
Сообщений: 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
|
|
|
|
|
Oct 20 2014, 08:12
|
Местный
  
Группа: Участник
Сообщений: 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 прописать?
|
|
|
|
Сообщений в этой теме
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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|