реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
juvf
сообщение Aug 8 2016, 09:44
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



На 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.... то всё нормально.

Как говориться - в чём дело? Почему так происходит?
Go to the top of the page
 
+Quote Post
prottoss
сообщение Aug 8 2016, 09:48
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(juvf @ Aug 8 2016, 15:44) *
Как говориться - в чём дело? Почему так происходит?

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


--------------------
Go to the top of the page
 
+Quote Post
juvf
сообщение Aug 8 2016, 15:03
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



prottoss, спасибо большое, помогло!!!!.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st June 2025 - 19:54
Рейтинг@Mail.ru


Страница сгенерированна за 0.01277 секунд с 7
ELECTRONIX ©2004-2016