Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Виртуальный COM порт на STM32
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
VadimNic_nt
Здравствуйте форумчане!

У меня вопрос по библиотеке ST, для реализации работы с МК stm32Fxxx через виртуальный COM порт.
Есть ли возможность увеличения входного буфера USB (по умолчанию установлено значение 64 байта)?
При больших размерах буфера виртуальный СОМ определяется в системе с ошибкой.
Пробовал версии 3.4 и 4, а также соответствующие драйвера от st.


Есть ли альтернативные библиотеки для реализации виртуального СОМ порта на stm32Fxxx,
где размер входного буфера можно настроить например на 256 байт или 512 байт ....
KnightIgor
Цитата(VadimNic_nt @ Mar 24 2015, 14:36) *
Есть ли альтернативные библиотеки для реализации виртуального СОМ порта на stm32Fxxx,
где размер входного буфера можно настроить например на 256 байт или 512 байт ....

Почему не устраивает существующий размер буфера? Этот размер определяется длиной транзакции на USB шине, это жестко заложено в поддержку USB класса типа "виртуальный COM порт".
VadimNic_nt
Цитата(KnightIgor @ Mar 24 2015, 16:50) *
Почему не устраивает существующий размер буфера? Этот размер определяется длиной транзакции на USB шине, это жестко заложено в поддержку USB класса типа "виртуальный COM порт".

Тогда понятно.
У меня есть некоторые сомнения - если я буду отправлять в COM порт буфер, размер которого превышает 64 байта, будет ли он корректно обработан
в stm32 и передан через UART? Моё устройство реализует мост USB-IrDA для бесконтактного обмена с устройством с интерфейсом IrDA-UART
KnightIgor
Цитата(VadimNic_nt @ Mar 24 2015, 15:26) *
Тогда понятно.
У меня есть некоторые сомнения - если я буду отправлять в COM порт буфер, размер которого превышает 64 байта, будет ли он корректно обработан
в stm32 и передан через UART? Моё устройство реализует мост USB-IrDA для бесконтактного обмена с устройством с интерфейсом IrDA-UART

Нужно программно следить за готовностью буферов/интерфейсов передавать данные.
rudy_b
С виртуальным СОМ портом есть проблемы. Формально СОМ работает по каналу команд, т.е. короткими пакетами по 64 байта. Стандартный драйвер от ST поддерживает пакеты до 64 байт. Т.е. передача длинных пакетов от РС в периферию проходит нормально (блок бъется на пакеты по 64 байта и передается), а вот в обратном направлении пакет может содержать только менее 64 байт - драйвер ST не проверяет размер и не делает соответствующих транзакций.

Если нужны большие пакеты нужно переходить на bulk или ручками корректировать ST-шный драйвер.
khomin
проще использовать тот же механизм как с пакетами Modbus по 485, после превышение определенного интервала, соблюдение "тишины" будет означать конец пакета. Ну и конечно следить за переполнением приемного буфера
Golikov A.
модбасовский способ определения конца фрейма наиболее неудобный для современных реализаций....
И таймер жрет, и проблемы в подключении ДМА создает, и обмен тормозит.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.