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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> STM32F407 и USB с BULK, Нужна помощь от бывалых
toweroff
сообщение Mar 4 2018, 13:50
Сообщение #16


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Так точки ж абсолютно независимые
Нужно принять - проверяем буфер точки OUT. А в её прерывании просто складываем в буфер
Нужно передать - проверяем активность передачи и или докладываем в буфер передачи, или сразу вызываем передачу. В прерывании точки IN, если в буфере что-то есть, опять вызываем передачу. Нечего передавать - сбрасываем флаг
Как-то так
Go to the top of the page
 
+Quote Post
mic_arm
сообщение Mar 4 2018, 19:08
Сообщение #17


Участник
*

Группа: Участник
Сообщений: 20
Регистрация: 26-01-11
Пользователь №: 62 484



Цитата(toweroff @ Mar 4 2018, 16:50) *
Так точки ж абсолютно независимые
Нужно принять - проверяем буфер точки OUT. А в её прерывании просто складываем в буфер
Нужно передать - проверяем активность передачи и или докладываем в буфер передачи, или сразу вызываем передачу. В прерывании точки IN, если в буфере что-то есть, опять вызываем передачу. Нечего передавать - сбрасываем флаг
Как-то так

Точку OUT я и обрабатываю в прерывании. В нём же я складываю партию данных для передачи через точку IN, они благополучно уходят на хост ( длина пакета не более 32 байт) . Это происходит при вызове функций на хосте: ЗАПИСЬ В OUT -- ЧТЕНИЕ ИЗ IN.
Но если на хосте вызвать только ЧТЕНИЕ ИЗ IN, то чтение не происходит (даже прерывание не возникает).
Или... вы хотите сказать, что для того, чтобы хост забрал данные с помощью ЧТЕНИЕ ИЗ IN, эти данные необходимо сначала записать в буфер отправки точки IN, а хост когда ему надо будет заберёт их?
Go to the top of the page
 
+Quote Post
alexunder
сообщение Mar 4 2018, 21:43
Сообщение #18


unexpected token
****

Группа: Свой
Сообщений: 899
Регистрация: 31-08-06
Из: Мехелен, Брюссель
Пользователь №: 19 987



Цитата(mic_arm @ Mar 4 2018, 20:08) *
Или... вы хотите сказать, что для того, чтобы хост забрал данные с помощью ЧТЕНИЕ ИЗ IN, эти данные необходимо сначала записать в буфер отправки точки IN, а хост когда ему надо будет заберёт их?

Конечно. Данные на нижнем уровне должны быть готовы.


--------------------
А у тебя SQUID, и значит, мы умрем.
Go to the top of the page
 
+Quote Post
EugenyAM
сообщение Mar 19 2018, 11:10
Сообщение #19


Участник
*

Группа: Свой
Сообщений: 73
Регистрация: 14-10-08
Из: Omsk
Пользователь №: 40 929



Цитата(DeNi @ Feb 16 2018, 15:24) *
Для Bulk лучше использовать класс WinUSB. Тогда можно использовать драйвер winusb в Windows и linusb в Linux, и работать уже из пользовательского режима.


А как сконфигурировать в CubeMX этот класс? В списке для USB Device его нет.
Пытаюсь поднять USB_OTG_HS в режиме FS с внутренним phy. Нужно задействовать 5 конечных точек bulk и interrupt.
До этого работал на F103 с SPL - проблем с реализацией USB не было.
Сгенерил проект на F207 с классом CDC, под IAR, начал переконфигурировать конечные точки и получил интересный результат - конечная точка типа IN передает данные только
в том случае, когда ее номер равен 0x81. Если изменить номер на 0x82, 0x83 и.т.д. данные не передаются.
Если задать две точки 0x81, 0x82 передает данные только через 0x81.
Выделенное прерывание на EP1 в проекте не используется.
Есть ли известное решение данной проблемы?
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 15th July 2025 - 21:11
Рейтинг@Mail.ru


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