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

 
 
> Передача по USB, STM32F4 HAL
Atlantis-
сообщение Dec 7 2016, 14:06
Сообщение #1


Местный
***

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



Добрый день!
Столкнулся с такой проблемой: криво работает передача по USB Interrupt каналу. Использую стандартные функции, сгенерированные CubeMX. Вызываю вот эту функцию для передачи данных
Код
uint8_t CDC_Transmit_HS(uint8_t* Buf, uint16_t Len)
{
  uint8_t result = USBD_OK;
  /* USER CODE BEGIN 12 */
  USBD_CDC_SetTxBuffer(hUsbDevice_1, Buf, Len);  
  result = USBD_CDC_TransmitPacket(hUsbDevice_1);
  /* USER CODE END 12 */
  return result;
}


Передаю по 8 байт, вызываю функцию передачи 8 раз. При этом приходит только первая посылка. Период между вызовами функции передачи данных составляет 480 микросекунд. Попробовал отправлять данные под отладкой - приходят все 8 пакетов. Фактически, под отладкой я изменил только период между вызовами функции передачи данных. Получается, я слишком часто передаю данные?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 2)
Kabdim
сообщение Dec 7 2016, 14:54
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 558
Регистрация: 26-11-14
Из: Зеленоград
Пользователь №: 83 842



Как оно там в хале - не в курсе. Но логика простая, нужно не задержки вставлять, а ждать освобождения внутреннего буфера у USB engine'а.
Go to the top of the page
 
+Quote Post
Atlantis-
сообщение Dec 8 2016, 06:45
Сообщение #3


Местный
***

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



Я понял, вопрос только в том как это извлечь из HAL-a...
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 19th July 2025 - 18:56
Рейтинг@Mail.ru


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