Size: a a a

2021 February 28

AS

Andre Savelev in STM32
Эдуард Неткачёв
какая связь между скоростью виртуального COM-порта и скоростью передачи через интерфейс USB?
Скорость порта устанавливается при его инициализации программно, и составляет максимум 128000 бит/с.

Выше не прыгнуть, используя VCOM.
источник

AS

Andre Savelev in STM32
Это 125 Кбит, то есть 0,122 Мбит.
источник

AS

Andre Savelev in STM32
Правильно ли я понял, что обмен по HID может быть быстрее, чем через VCOM?
источник

ЭН

Эдуард Неткачёв... in STM32
я не измерял максимальную скорость обмена данными при определении BluePill как HID-устройства COM-портом, но точно могу сказать что можно не привязываться к настройкам последовательного COM-порта в системе. Просто принимаем данные и обрабатываем их если не надо их транслировать по UART.
источник

ЭН

Эдуард Неткачёв... in STM32
вот например статья на хабре, где человек пишет что добился скорости передачи более 2мбит/сек
источник

ЭН

Эдуард Неткачёв... in STM32
источник

АК

Алексей Куликов... in STM32
Andre Savelev
Правильно ли я понял, что обмен по HID может быть быстрее, чем через VCOM?
У HID большие ограничения.
источник

AS

Andre Savelev in STM32
Тут человек конечно сделал мощно, использовал три UART.

Но мой вопрос про USB, который уже есть на плате. Можно ли через него передавать данные на скорости 12 МБит/с?
источник

S

Sergey in STM32
Нет. 12 - это физический уровень. С учетом расходов на протоколы , получается совсем печально...
источник

АК

Алексей Куликов... in STM32
Andre Savelev
Тут человек конечно сделал мощно, использовал три UART.

Но мой вопрос про USB, который уже есть на плате. Можно ли через него передавать данные на скорости 12 МБит/с?
Можно, но только в RAW USB. Как я понял
источник

AS

Andre Savelev in STM32
Странности с HID.
Если посылать репорты сразу друг за другом, то второй репорт часто теряется.

А если отлаживать по шагам, то наблюдается такая картина:


Отработала команда, выделенная красной стрелкой (отправка репорта номер 6).

Соответственно сейчас точка останова на строке, выделенной зелёной стрелкой.

В программе HID Demonstrator нет никакой реакции.

Но как только я нажму F6, то есть перейду на строку, выделенную синей стрелкой, в HID Demonstrator загорится лампочка, которую я выделил чёрным.
источник

AS

Andre Savelev in STM32
Такое ощущение, что отправка пакетов происходит в отдельном потоке асинхронно, при этом пока отладчик на паузе, поток отправки тоже на паузе. А когда я начинаю "делать шаги по программе", поток получает кванты времени.

Но разве такое может быть, ведь я не использую никакие FreeRTOS.
источник

VK

Valentin Kornienko in STM32
Andre Savelev
Такое ощущение, что отправка пакетов происходит в отдельном потоке асинхронно, при этом пока отладчик на паузе, поток отправки тоже на паузе. А когда я начинаю "делать шаги по программе", поток получает кванты времени.

Но разве такое может быть, ведь я не использую никакие FreeRTOS.
Никакого буфера внутри нет?
источник

VK

Valentin Kornienko in STM32
Который бы собирал пачки на отправку и из них уже дальше отправлял блоки?
источник

IK

Igor Kr. in STM32
Проверьте интервал пуллера в дескрипторе интерфейса. Не проверял, но возможно просто прерывания слишком редки от хоста и второй пакет просто отбрасывается.
источник

AS

Andre Savelev in STM32
Valentin Kornienko
Никакого буфера внутри нет?
Даже не знаю, разбираюсь с учебными примерами, вроде этого
https://narodstream.ru/stm-urok-35-hal-usb-custom-hid/
этого
https://habr.com/ru/post/208026/
и ещё каких-то.
источник

i

i7d3v3l0p3r in STM32
Andre Savelev
Странности с HID.
Если посылать репорты сразу друг за другом, то второй репорт часто теряется.

А если отлаживать по шагам, то наблюдается такая картина:


Отработала команда, выделенная красной стрелкой (отправка репорта номер 6).

Соответственно сейчас точка останова на строке, выделенной зелёной стрелкой.

В программе HID Demonstrator нет никакой реакции.

Но как только я нажму F6, то есть перейду на строку, выделенную синей стрелкой, в HID Demonstrator загорится лампочка, которую я выделил чёрным.
Я обычно видел в разных исходниках с hid что делают небольшой delay, например в 10мс
источник

AS

Andre Savelev in STM32
i7d3v3l0p3r
Я обычно видел в разных исходниках с hid что делают небольшой delay, например в 10мс
тоже пришёл к этому как к вынужденной мере.

Кстати, с VCOM то же самое, нельзя отправлять два пакета подряд, надо выжидать.
источник

IK

Igor Kr. in STM32
И с подобным сталкивался на 103/105 когда репортов больше одного и размер не кратен 4м байтам
источник

AS

Andre Savelev in STM32
Надо поискать какой-нибудь флаг готовности.
источник