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

 
 
> USB Host STM32F4, Как правильно принимать пакеты длиннее размера endpoint
uriy
сообщение Feb 15 2017, 08:31
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 429
Регистрация: 30-11-05
Из: Ижевск
Пользователь №: 11 606



Пишу USB хост для работы с чистымии булками.
Решил делать на HAL, без CubeMX у меня бы ушло на хост очень много времени.
Устройство USB клиент имеет по одному IN и OUT endpoint по 64 байта.
Обмен уже налажен но есть нюансы.
Многие пакеты верхнего протокола имеют длину больше 64 байт.
Функция передачи из хоста к клиенту USBH_DMR_Transmit дробит посылку как надо на пакеты размером не более 64 байт.

Функция приема USBH_DMR_Receive никогда не возращает массив более 64 байт.
Если я вызываю USBH_DMR_Receive несколько раз то корректно получаю весь длинный пакет сформированный из пачек по 64 байта.
В первом пакете в протоколе верхнего уровня есть длина посылки. Анализируя ее я могу посчитать сколько раз вызывать USBH_DMR_Receive. И раньше я не встречал упоминаний о том что по USB передается длина посылки.
На сколько знаю признаком конца посылки является пакет длиной менее размера endpoint.

Есть ли способ узнать сколько байт послал клиент? USB хост пишу впервые. Еще многое не понятно.
Go to the top of the page
 
+Quote Post



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

 


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


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