
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.
ПРАКТИКА
Подключение
| Контакт модуля | Контакт платы | Назначение |
|---|---|---|
| USB | USB-A Raspberry Pi 4 Model B | Подходящий USB-кабель с передачей данных; GPIO Raspberry Pi не используются. |
| TXD | RXD этого же адаптера | Одна перемычка для 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
pythonimport 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; на оборудовании не запускалось. Если порт не открывается, проверьте кабель, имя устройства, права доступа и занятость порта.
Проекты с этим компонентом
Все проектыСвязанные проекты пока не опубликованы.


