ATSAM3S2C USB Bulk-komunikace MCU/PC-USB Device Vendor Class

Ahoj,
mám kartu s ATSAM3S2C připojenou přes USB (FS) k PC. Používám Atmel Studio 6.1. Chci komunikovat přes Bulk out endpoint. Na straně počítače používám driver libusbK. Pokud si v mcu nastavím velikost přijímacího buferu na 10B (udi_vendor_bulk_out_run(appDataBulkOut, 10, usb_bulk_out_callback)) a z PC pošlu data o délce např. 20B, tak na straně PC funkce WritePipe() tvrdí, že bylo odesláno všech 20B. Ale mcu přijme pouze 10B.

Je nějaká funkce v ASF, kterou bych si zjistil, že PC poslalo víc dat, než se vleze do bufferu? Neměla by už selhat funkce WritePipe()?

díky

:arrow_right: administrator: přejmenováno z "ATSAM3S2C USB Bulk"

:slight_smile: Je použit režim USB Device Vendor Class

Zkusil jsem to naopak. Posílám data z mcu do PC, přičemž v PC je nastaven přijímací buffer menší než je délka odesílaných dat. Na žádné straně nedojde k chybě, ale tentokrát pokud volám funkci ReadPipe() opakovaně, tak nakonec získám celou poslanou zprávu.

Proč to stejné nefunguje pro udi_vendor_bulk_out_run() nebo jak se dozvědět, že všechny data nebyly přijaty?

Je tu ještě jeden problém, pokud funkci udi_vendor_bulk_out_run přestanu opakovaně volat, tak i přesto funkce WritePipe() nevrátí žádnou chybu a vše se tváří, že bylo odesláno v pořádku.

PS: Náhodou nesetkal jste někdo s problémem, že pokud se v konfiguraci USB nastaví UDI_VENDOR_EPS_SIZE_ISO_FS = 0 (nebo Bulk či interrupt), což by podle dokumentace mělo pouze deaktivovat daný endpoint, tak již nejde nastavit alternative setting na 1(libusbk vrátí chybu, že zařízení pracuje chybně) => nezavolá se makro UDI_VENDOR_ENABLE_EXT()?