Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Bulk transfer STM32F429
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Tarbal
Не получается отправить балк пакет из device (STM32F429 full speed) на host.

USBD_LL_Transmit на STM32F429 вызвано заранее.

На host libusb исполняется код запроса на чтение пакета балк:


char data[0x40];
status = libusb_bulk_transfer( handle, 0x82, data, sizeof(data), &actual_length, 1000 );
printf("libusb_bulk_transfer, status=%d, actual_length=%d\n", status, actual_length );
return 0;

После исполнения libusb_bulk_transfer status равен -7, что значит таймаут.


Код сгенерирован на Кубе и компилирован под Кокосом.

Буду признателен если укажете на пример использования.
DeNi
Попробуйте пакет длиной не 64 байта. Если приходит пакет длиной с максимальный размер - хост ждет ещё данных.
Для завершения передачи должен прийти пакет меньшей длины или нулевой длины.
Tarbal
Спасибо за совет, но не помогло.
Проблема была в том, что пытались использовать endpoint 0х83, а при переходе на 0х81 заработало.
misyachniy
Цитата(DeNi @ Dec 7 2015, 15:24) *
Попробуйте пакет длиной не 64 байта. Если приходит пакет длиной с максимальный размер - хост ждет ещё данных.
Для завершения передачи должен прийти пакет меньшей длины или нулевой длины.


Не правильно.
Во первых хост запрашивает данные, если поступил запрос от драйвера.
Во вторых в USB 2.0 введен признак "последнего" пакета данных.
drozel
Цитата(misyachniy @ Dec 12 2015, 15:24) *
Во вторых в USB 2.0 введен признак "последнего" пакета данных.

Поясните? Я тут недавно маялс с ZLP, читал спеи, про это слышу впервые, может быть, корень и моих проблем -тут
Копейкин
Последний пакет меньше максимальной длины или вообще нулевой длины, если передавать больше нечего .
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.