Перейти к содержанию

Виртуальный COM-порт (VCP)

Плата с CP2102 или CH340 подключается по USB, а терминал, Arduino IDE и esptool видят её как COM3 или /dev/ttyUSB0. Этот обман обеспечивает драйвер виртуального COM-порта: программы работают с ним как с последовательным портом, а данные на самом деле идут по USB.

Обновлено Редакция GAW

Виртуальный COM-порт (VCP, virtual COM port) — драйвер операционной системы, который представляет USB-устройство программам как обычный последовательный порт: например COM3 в Windows или /dev/ttyUSB0 в Linux. Программа открывает порт, выставляет скорость и формат кадра и обменивается байтами, а драйвер передаёт всё это по USB микросхеме моста USB–UART, которая уже выдаёт сигналы на выводы TX, RX и линии управления (Silicon Labs CP2102/9, с. 1 и разд. 9.1).

Как система находит драйвер

USB-устройство сообщает при подключении пару VID и PID, и по ней система подбирает драйвер.

МостVID:PID по умолчаниюДрайверИсточник
CP210210C4:EA60VCP Silicon LabsCP2102/9, табл. 13
CH3401A86:7523VCP для CH341CH340 V3C, разд. 2 и 5.2

Silicon Labs советует производителям изделий задавать собственную пару VID/PID в памяти моста, чтобы драйвер не конфликтовал с чужими устройствами, и уникальный серийный номер, если к одному компьютеру подключают несколько одинаковых устройств (CP2102/9, разд. 8).

Что передаётся через VCP

  • Данные — байты в обе стороны.
  • Настройки порта — скорость, число бит, чётность и стоп-биты задаёт программа на ПК, и мост выставляет их на своём UART (CP2102/9, разд. 7).
  • Линии модема — RTS, DTR, CTS, DSR, DCD и RI (CH340, CP2102). Программа может переключать DTR и RTS, и на этом построен автосброс плат Arduino и ESP32.

Некоторые устройства реализуют последовательный порт сами, через стандартный класс USB CDC, и тогда отдельный драйвер производителя не нужен (наш комментарий).

Не путать

С аппаратным COM-портом RS-232: у VCP нет уровней ±12 В — на выводах моста логические уровни питания микросхемы. Чтобы получить настоящий RS-232, RS-485 или RS-422, к мосту добавляют преобразователь уровней (CH340, разд. 2). А в изделии, где микроконтроллер уже связан с ПК через микросхему RS-232, Silicon Labs предлагает просто заменить её мостом CP2102.

Частые вопросы

Почему после подключения платы не появился COM-порт?

Чаще всего нет драйвера для моста USB–UART: система видит USB-устройство, но не знает, что это последовательный порт. Драйвер выбирают по паре VID и PID моста: у CP2102 по умолчанию 10C4:EA60 (Silicon Labs), у CH340 — 1A86:7523 (WCH). Для CH340 WCH предлагает драйвер от CH341 — микросхемы программно совместимы.

Какую скорость выставлять в виртуальном COM-порту?

Ту же, что у UART микроконтроллера: программа на ПК задаёт скорость и формат при открытии порта, драйвер передаёт их мосту, и мост выставляет их на своём UART (CP2102, разд. 7). Скорость USB при этом от выбранной не зависит. Диапазон ограничен мостом: у CH340 — 50 бит/с … 2 Мбит/с, у CP2102 — до 921 600 бит/с по таблице 4.

Чем VCP отличается от USBXpress у Silicon Labs?

VCP делает устройство COM-портом для любых программ, работающих с последовательным портом. USBXpress — прямой доступ через библиотеку Silicon Labs без понятия порта; он рекомендован для новых изделий с собственной программой на ПК. Ставят только один из двух наборов драйверов (CP2102/9, разд. 9).

Источники

  1. Silicon Labs. CP2102/9 Single-Chip USB-to-UART Bridge, Rev. 1.8 (1/17) — с. 1: бесплатные драйверы VCP показывают устройство программам ПК как COM-порт; все сигналы RS-232, прошивку менять не нужно; разд. 7: формат и скорость задаются при настройке COM-порта на ПК; разд. 8, табл. 13: VID 10C4h, PID EA60h, строка «CP2102 USB to UART Bridge Controller»; уникальная пара VID/PID — чтобы драйвер не конфликтовал с другими; разд. 9: два набора драйверов — VCP и USBXpress, нужен только один; драйверы сертифицированы Microsoft WHQL
  2. WCH. CH340 Datasheet, Version 3C — разд. 2: эмуляция стандартного последовательного порта, программы Windows работают без изменений; совместимость с CH341, можно использовать драйвер VCP для CH341; 50 бит/с … 2 Мбит/с; сигналы RTS, DTR, DCD, RI, DSR, CTS; разд. 5.2: VID 1A86H, PID 7523H

Нашли ошибку?