CP2102 USB-to-UART

Silicon Labs (микросхема; изготовитель платы не указан) · CP2102 в исходном исполнении, не CP2102N

USB-UART-адаптер для последовательной консоли, диагностики и загрузчиков микроконтроллеров.

Автор: SLDV LAB

Опубликовано · Обновлено

СложностьЛегко
Проекты с компонентом

О МОДУЛЕ

Что делает CP2102 в исходном исполнении, не CP2102N

CP2102 связывает USB-порт компьютера с последовательным UART. Подходит для консоли и обмена данными, а для прошивки дополнительно нужен загрузчик целевого устройства и правильная последовательность входа в него. Это UART с логическими уровнями, не электрический интерфейс RS-232 и не RS-485.

Карточка описывает CP2102 в исходном исполнении, не CP2102N. Размер, USB-разъём, порядок контактов, наличие DTR/RTS и допустимый ток выхода питания зависят от изготовителя. Нельзя переносить распиновку по внешнему сходству. Перемычка 3,3/5 В на распространённых адаптерах может переключать только вывод питания, оставляя TXD без изменений. Перед подключением к GPIO проверяют схему и уровень TXD; при необходимости ставят согласователь.

Первичная проверка ниже замыкает TXD на RXD самого адаптера и не подключает его к GPIO. Она помогает отделить проблемы USB, драйвера и кабеля от проблем целевой платы. При дальнейшем соединении нужны перекрёстные TX/RX и общая земля; не объединяйте выходы питания двух источников. Открытие порта может переключать DTR/RTS, поэтому в этом тесте они свободны.

Pololu USB-to-Serial Adapter #391: фотографический пример платы с оригинальным Silicon Labs CP2102 и mini-B USB. Фото Pololu; фон удалён, пропорции и детали сохранены. Разрешение на повторное использование изображения не подтверждено.

Источник изображения: www.pololu.com, исходный файл. Условия повторного использования не установлены; открытая лицензия не заявляется. Фон отделён, выполнено равномерное масштабирование; реальные детали платы не перерисованы.

CP2102 на плате Pololu #391: loopback TX–RX без внешнего устройства; остальные выводы не подключать. Авторская схема SLDV LAB по первичной распиновке Pololu.

Характеристики

Назначение
Мост USB ↔ UART
Каналов UART
1
Формат теста
115200 бод, 8N1, без flow control
Интерфейс
UART
Питание модуля
Питание адаптера от USB 5 В; TXD исходного CP2102 имеет логику около 3,3 В; выводы 5V/3V3 — питание, а не обещание переключаемых уровней UART.

ПРАКТИКА

Подключение

Контакт модуляКонтакт платыНазначение
USBUSB-A Raspberry Pi 4 Model BПодходящий USB-кабель с передачей данных; GPIO Raspberry Pi не используются.
TXDRXD этого же адаптераОдна перемычка для loopback; не соединять TXD с другим выходом.
VCC / 5V / 3V3 / DTR / RTSНе подключатьДля теста адаптер питается только от USB; внешняя целевая плата отсутствует.

Подходит для Raspberry Pi, Arduino, ESP32. Выберите контакты по документации своей платы.

ВАШ ПРОЕКТ · ВАШ ДАТЧИК

Интегрируйте модуль с ChatGPT

Скопируйте запрос в ChatGPT. Укажите свою плату и среду разработки — получите подключение и код для своего проекта.

Помоги подключить CP2102 USB-UART. Сначала уточни суффикс чипа, фото и схему адаптера, модель целевой платы, её логические уровни, ОС и задачу. Начни с loopback TXD–RXD, затем предложи проводку, драйвер и полный пример с тайм-аутами. Не считай перемычку питания переключателем TXD. Для прошивки отдельно проверь загрузочный режим, DTR/RTS и питание цели. Объясни проверку мультиметром и причины отсутствия эха.

Библиотеки

Установите библиотеку для своей среды и откройте пример из её документации.

Что именно прописать

Среда
Raspberry Pi 4 Model B; Raspberry Pi OS; Python 3; pySerial 3.5

Используется USB-порт, а не 40-контактная GPIO-гребёнка.

Зависимость
pyserial==3.5

Установить в виртуальное окружение Python; import serial.

UART
115200, 8N1

Параметры теста; рабочий baud зависит от целевого устройства.

Запуск
python uart_loopback.py /dev/ttyUSB0

Сохранить пример как uart_loopback.py и заменить путь фактическим портом адаптера.

Python: полный loopback-тест USB-UART

python
import argparse
import sys
import serial

parser = argparse.ArgumentParser(description="USB-UART TXD-RXD loopback")
parser.add_argument("port", help="Порт именно адаптера, например /dev/ttyUSB0")
args = parser.parse_args()
payload = b"SLDV UART loopback\r\n"
try:
    with serial.Serial(args.port, 115200, timeout=1, write_timeout=1,
                       bytesize=serial.EIGHTBITS, parity=serial.PARITY_NONE,
                       stopbits=serial.STOPBITS_ONE,
                       xonxoff=False, rtscts=False, dsrdtr=False) as uart:
        uart.reset_input_buffer()
        if uart.write(payload) != len(payload):
            raise RuntimeError("Неполная запись")
        uart.flush()
        reply = uart.read(len(payload))
        if reply != payload:
            raise RuntimeError(f"Нет корректного эха: {reply!r}")
        print("OK: отправленные и принятые байты совпали")
except (serial.SerialException, OSError, RuntimeError) as error:
    print(f"Ошибка: {error}", file=sys.stderr)
    sys.exit(1)

Полный скрипт для указанной USB-схемы. API сверено с pySerial 3.5; на оборудовании не запускалось. Если порт не открывается, проверьте кабель, имя устройства, права доступа и занятость порта.

Проекты с этим компонентом

Все проекты

Связанные проекты пока не опубликованы.

Связанные материалы и компоненты