Перейти к содержанию
    

Не работает передача 8-ми байт по USB

На stm32f401 использую stm-овскую библиотеку усб. На компе использую libusb-win32-bin-1.2.5.0

 

Из мк передаю в комп пакет через булк. код

DCD_EP_Tx(&USB_OTG_dev, 02, usbBuffer, size);

Если size != 8, то комп принимает нормальный пакет. Без ошибок. Если в мк size = 8, то комп не получает пакет.... usb_bulk_read() возвращяет -116, т.к. ошибка по таймауту. Не дожидается комп ответа от мк. Ставлю ожидание 1 сек, 5 сек.... не принимает комп ни чего. -116 и всё! Но если мк передает паке размером отличный от 8..... например 4,5 1, или 27.... то всё нормально.

 

Как говориться - в чём дело? Почему так происходит?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как говориться - в чём дело? Почему так происходит?

Если размер отправляемого пакета равен размеру конечной точки то после отправки пакета необходимо отправить пакет нулевой длины - так драйвер на стороне РС поймет, что передача закончена - иначе он будет ждать следующий пакет.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...