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

 
 
> STM32F407 контроль завершения отправки пакета USB
EmbedElektrik
сообщение Dec 31 2015, 07:49
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 121
Регистрация: 30-07-08
Из: Тверь, Россия
Пользователь №: 39 321



Для передачи данных с ацп в комп использую пример VCP из StdLib, выбросил все лишнее и работаю напрямую с эндпоинтами. Раз в 8 мс отправляю с контроллера в комп вот так: DCD_EP_Tx (&USB_OTG_dev, CDC_IN_EP, (uint8_t*)APP_Rx_Buffer, 1008); Т.е. скорость примерно 126 кб/сек. Обычно все работает нормально, но если комп начинает свопить то теряются данные. Почитал UM1021, но так и не понял как контролировать опустошение буфера IN эндпоинта?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
jcxz
сообщение Jan 1 2016, 07:55
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Никак не надо контролировать, надо отправлять правильно. Если необходим непрерывный поток данных с фикс. скоростью, то нужно использовать изохронную точку.
И как понять "отправляете"? Отправлять device сам, по своей инициативе, никак не может. Только в ответ на запросы host-а.
Go to the top of the page
 
+Quote Post
EmbedElektrik
сообщение Jan 1 2016, 08:29
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 121
Регистрация: 30-07-08
Из: Тверь, Россия
Пользователь №: 39 321



Цитата(jcxz @ Jan 1 2016, 10:55) *
надо отправлять правильно.

вообще то я об этом и прошу совета
Цитата(jcxz @ Jan 1 2016, 10:55) *
Если необходим непрерывный поток данных с фикс. скоростью, то нужно использовать изохронную точку.

Изохронная передача не гарантирует доставки. Да и нужная мне скорость значительно ниже максимальной пропускной способности USB, bulk с запасом должен справляться.
Цитата(jcxz @ Jan 1 2016, 10:55) *
И как понять "отправляете"? Отправлять device сам, по своей инициативе, никак не может. Только в ответ на запросы host-а.

Я же указал функцию отправки. Подразумевается запись в точку IN откуда хост забирает пакет.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jan 1 2016, 09:07
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(EmbedElektrik @ Jan 1 2016, 14:29) *
Изохронная передача не гарантирует доставки. Да и нужная мне скорость значительно ниже максимальной пропускной способности USB, bulk с запасом должен справляться.

И зачем Вам гарантированная доставка? У Вас вокруг такие помехи, что данные искажают???
Поймите элементарную вещь - гарантированная доставка в USB реализована за счёт повторов повреждённых пакетов, следовательно - в эндпоинтах которые её обеспечивают ни о каком реалтайм-потоке говорить нельзя.
У Вас выбор - или реалтайм-поток или гарантированная доставка.
И кроме того - bulk совершенно не гарантирует время доставки пакета, может 1мс, а может и 100мс (если а соседний разъём воткнули флеху и начали на неё писать файл). Используете bulk - забываете о любом реалтайме.
А для реалтайм-потоков самой спецификацией USB и заложен изохронный режим. Читайте доки.
Если Вы себя считаете умнее разработчиков USB - флаг Вам в руки в изобретении своего велосипеда с квадратными колёсами.

Цитата(EmbedElektrik @ Jan 1 2016, 14:29) *
Я же указал функцию отправки. Подразумевается запись в точку IN откуда хост забирает пакет.

"Отправка" подразумевает запись в регистры буфера передатчика USB-периферии, а не в какой-то программный буфер, откуда ещё неизвестно когда и кем отправится и отправится-ли вообще.
Go to the top of the page
 
+Quote Post



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

 


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


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