32 байта

Mar 30, 2018 15:20

Задумал поиграться с SD картой, сваял минимальный сервис.
Разбираясь с не поддающейся пониманию ошибкой, очертил следующий факт.
Функция VCP  uint16_t VCP_DataTx (uint8_t* Buf, uint32_t Len)  толкает в комп максимально 32 байта !
А больше я ранее не отсылал, потому и не сталкивался.
Далее поисследовал интернеты, на предмет.
Оказывается, в интернетах про это знают. И связано с тем, что если в комп передаются блоки, кратные 64 байта, (а это по дефолту)
"то винда посылает дополнительный запрос на пакет длиной 0 байт и на него нужно ответить. А контроллер считает, что все послал и молчит. Я думал ее давно исправили, но вот напоролся.".
Сделал размер блока 62 байта (63 как то вообще в падлу) , размер буфера передачи увеличил до 5400.
Мне максимально передавать нужно 4200 байт, килобайт советуют плюсовать в запас.
И чудо - заработало.. 
Previous post Next post
Up