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

Попробуйте пакет длиной не 64 байта. Если приходит пакет длиной с максимальный размер - хост ждет ещё данных.
Для завершения передачи должен прийти пакет меньшей длины или нулевой длины.
Не правильно.
Во первых хост запрашивает данные, если поступил запрос от драйвера.
Во вторых в USB 2.0 введен признак "последнего" пакета данных.
drozel
Dec 14 2015, 18:19
Цитата(misyachniy @ Dec 12 2015, 15:24)

Во вторых в USB 2.0 введен признак "последнего" пакета данных.
Поясните? Я тут недавно маялс с ZLP, читал спеи, про это слышу впервые, может быть, корень и моих проблем -тут
Копейкин
Dec 15 2015, 08:22
Последний пакет меньше максимальной длины или вообще нулевой длины, если передавать больше нечего .