Виртуальный 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 по умолчанию | Драйвер | Источник |
|---|---|---|---|
| CP2102 | 10C4:EA60 | VCP Silicon Labs | CP2102/9, табл. 13 |
| CH340 | 1A86:7523 | VCP для CH341 | CH340 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).
Источники
- 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
- WCH. CH340 Datasheet, Version 3C — разд. 2: эмуляция стандартного последовательного порта, программы Windows работают без изменений; совместимость с CH341, можно использовать драйвер VCP для CH341; 50 бит/с … 2 Мбит/с; сигналы RTS, DTR, DCD, RI, DSR, CTS; разд. 5.2: VID 1A86H, PID 7523H
Нашли ошибку?
Смотрите также
- CP2102 и CP2102NМосты USB–UART: выводы QFN-28, стабилизатор 3,3 В, скорость, уровни
- CH340Мост USB–UART: исполнения, выводы, V3 при 5 и 3,3 В, скорости, уровни
- VID и PID USBИдентификаторы производителя и изделия USB
- Класс устройства USBСтандартные типы устройств и коды классов USB-IF
- UARTКадр 8N1, скорость и допуск, TX и RX, уровни, USB–UART, AVR и STM32
- Паяная перемычка (SB)Пара площадок, замыкаемых припоем или резистором 0 Ом: конфигурация платы