Кратко о мосте CP2112
Модуль на CP2112 соединяет USB-порт компьютера с ведомыми устройствами SMBus и совместимой I²C-периферией. Он работает как активный master и подходит для чтения и записи регистров датчиков, EEPROM и контроллеров с известными адресом и протоколом.
Обмен с компьютером происходит через класс USB HID, поэтому отдельный USB-драйвер обычно не требуется. В то же время программа должна поддерживать CP2112, библиотеку HID-to-SMBus или его HID-отчёты; обычный COM-порт модуль не создаёт.[1][2][3]
Ключевые характеристики
- Назначение
- мост USB HID — SMBus/I²C
- Роль на шине
- SMBus/I²C master
- Контроллер
- Silicon Labs CP2112
- USB-разъём
- Micro-USB
- USB-интерфейс
- USB 2.0 Full Speed, 12 Мбит/с, класс HID[1]
- Частота SMBus/I²C
- 100 кГц по умолчанию; до 255 кГц[1][2]
- Питание от USB
- 4–5,25 В[1]
- Внешнее питание CP2112
- 3–3,6 В; доступность режима зависит от разводки платы[1]
- Логическое напряжение VIO
- 1,8 В…VDD; фактический уровень определяется подключением VIO[1]
- Выход стабилизатора CP2112
- 3,3–3,6 В, типично 3,45 В; наличие на контактах не гарантируется[1]
- Память и буфер
- 194 байта OTP ROM; буфер данных SMBus 512 байт[1]
- GPIO в CP2112
- 8 линий; количество физически выведенных контактов зависит от платы[1]
- Размеры платы
- 30 × 21,5 мм
- Температурный диапазон CP2112
- −40…+85 °C; гарантированный диапазон готовой платы отдельно не определён[1]
Подробное описание и особенности
USB HID и программное обеспечение
Компьютер передаёт команды через HID-отчёты, а CP2112 формирует транзакции на SDA и SCL. Для готовой работы требуется программа с явной поддержкой CP2112. Для собственных приложений доступны библиотеки HID-to-SMBus для Windows, macOS и Linux, а также открытая спецификация низкоуровневых HID-отчётов.[2][3]
Скорость 12 Мбит/с характеризует USB-канал, а не частоту SCL. CP2112 запускает SMBus на 100 кГц; для настройки шины используйте значения до 255 кГц. Модуль не предназначен для I²C на 400 кГц или 1 МГц.[1][2]
Транзакции SMBus/I²C и ревизия CP2112
CP2112 выполняет чтение, запись и адресное чтение для регистровых устройств и EEPROM. Микросхемы ревизий F02/F03 поддерживают комбинированное чтение с repeated START. Ревизия F01 между фазами записи и чтения формирует STOP, а затем новый START, поэтому может быть несовместима с ведомыми устройствами, которым требуется именно repeated START.[2][4]
Перед работой с чувствительной к формату транзакции периферией проверьте ревизию CP2112 по маркировке на корпусе. Ревизию микросхемы не следует определять только по внешнему виду платы.
Настраиваемый 7-битный адрес самого CP2112 не превращает мост в полноценный slave: контроллер только подтверждает этот адрес и не выполняет чтение или запись как ведомое устройство.[1][2]
Питание, VIO и подтяжка
При питании от USB диапазон CP2112 составляет 4–5,25 В. Микросхема также поддерживает внешнее питание 3–3,6 В, но возможность использования этого режима на готовом модуле зависит от его разводки. Внутренний стабилизатор формирует 3,3–3,6 В, типично 3,45 В; не считайте это напряжение гарантированным выходом модуля без проверки контактов.[1]
VIO задаёт логические уровни в пределах 1,8 В…VDD. Питание через Micro-USB не определяет автоматически уровень SDA/SCL. Линии шины имеют открытый сток и требуют подтяжки к напряжению, безопасному для всех подключённых устройств. Учитывайте резисторы на обеих платах: без подтяжки HIGH не формируется, а слишком малое суммарное сопротивление увеличивает ток в состоянии LOW.[1]
GPIO, память и служебные функции
CP2112 содержит восемь GPIO, которые можно настраивать как входы или выходы, open-drain или push-pull. GPIO.7 может формировать тактовый сигнал от 48 МГц до 94 кГц, а GPIO.0 и GPIO.1 имеют альтернативные функции индикации передачи и приёма. Фактическое количество доступных сигналов определяется разводкой модуля.[1]
USB-идентификаторы, строки и другие параметры могут храниться в 194-байтовой однократно программируемой памяти. CP2112 также имеет 512-байтовый буфер данных SMBus и поддерживает сигналы USB Suspend; доступность SUSPEND и /SUSPEND на разъёме зависит от платы.[1][2]
Подойдёт / не подойдёт
Подойдёт
- для управления SMBus/I²C-периферией с компьютера без отдельного микроконтроллера;
- для чтения и записи регистров датчиков, EEPROM и контроллеров с известным протоколом;
- для разработки собственного ПО через библиотеки CP2112 или спецификацию HID;
- для диагностики SMBus-узлов с подтверждёнными pinout, адресом, командами и логическими уровнями;
- для стендовой проверки совместимой I²C-периферии на частоте 100 кГц с возможным повышением до 255 кГц.
Не подойдёт
- для пассивного перехвата или декодирования обмена между двумя другими узлами;
- для работы как полноценный I²C slave;
- как адаптер UART, SPI, JTAG или SWD;
- для проектов, которым гарантированно требуется шина I²C 400 кГц или 1 МГц;
- когда требуются встроенная гальваническая развязка или гарантированное автоматическое согласование уровней;
- когда требуется гарантированный repeated START, но ревизию CP2112 невозможно проверить.
Примеры применения
Настройка I²C-датчика с ПК
Подключите датчик с совместимым питанием и подтяжкой, определите его адрес и проверьте чтение идентификационного регистра на стартовой частоте 100 кГц.
Чтение или запись EEPROM
Передайте адрес ячейки и прочитайте данные по протоколу конкретной EEPROM. Для операций, требующих repeated START, предварительно проверьте ревизию CP2112; размер адреса, страницы и задержку после записи берите из документации памяти.
Диагностика SMBus-контроллера
Модуль может опрашивать контроллер питания или аккумуляторного блока, если известны его разводка, адрес, команды и безопасная схема подключения. Адаптер не снимает блокировку BMS и не гарантирует поддержку конкретной батареи.
Подключение и первый запуск
-
Подготовьте совместимое программное обеспечение
Используйте приложение или библиотеку с явной поддержкой CP2112. Для собственной программы ориентируйтесь на HID-отчёты AN495, а не на COM-порт.
-
Сверьте контакты без питания
Определите GND, SDA, SCL и силовые контакты по маркировке платы. Если целевое устройство имеет собственное питание, не соединяйте силовые линии без подтверждённой совместимости.
-
Проверьте VIO и подтяжку
Измерьте или определите по схеме напряжение подтяжки SDA/SCL. Учитывайте резисторы с обеих сторон и обеспечьте общий GND, если схема не содержит специально спроектированной гальванической развязки.
-
Начните со 100 кГц
Подключите Micro-USB, проверьте появление CP2112 в системе и выполните безопасное чтение по известному адресу. Повышайте частоту только после установления стабильного обмена.
-
Записывайте только известные регистры
Случайная запись может изменить конфигурацию EEPROM, контроллера питания или BMS. Перед операцией сохраните резервную копию, если целевое устройство это позволяет.
Совместимые решения и альтернатива
- Для первой проверки на частоте 100 кГц можно использовать I²C-расширитель портов PCF8574, предварительно согласовав питание и подтяжку.
- Для работы с 3,3-вольтовой I²C-периферией подойдёт модуль BMP280; не подавайте на его питание или сигнальные линии 5 В.
- Для соединения шин с разными логическими напряжениями используйте двунаправленный преобразователь логических уровней по схеме, соответствующей обоим доменам питания.
- Если требуется обычный последовательный порт USB–UART TTL, выберите адаптер на CH340G с уровнями 3,3/5 В вместо CP2112.
Ограничения и безопасность
Не путайте USB-питание с логическим уровнем
Диапазон 4–5,25 В относится к питанию CP2112 от USB. Он не позволяет автоматически подключать SDA/SCL к любой 5-вольтовой шине. Неправильное напряжение подтяжки может повредить модуль или целевое устройство.
Осторожно с аккумуляторными блоками
Перед работой с BMS подтвердите pinout, полярность и поддержку конкретного контроллера программой. Не подключайте VCC адаптера к силовым или служебным контактам батареи наугад и не работайте с повреждёнными литиевыми элементами.
Проверяйте подтягивающие резисторы
SDA и SCL требуют подтяжки.[1] Не предполагайте ни её отсутствие, ни наличие: проверьте обе платы, чтобы избежать неработающей шины или чрезмерного тока LOW.
Учитывайте ревизию CP2112
Для устройств, которым требуется repeated START, проверьте маркировку микросхемы. Ревизия F01 использует STOP и новый START, тогда как repeated START поддерживают F02/F03.[4]
Не программируйте USB-ID без необходимости
Параметры USB в OTP ROM программируются однократно, а Lock Byte может запретить дальнейшие изменения. Изменение VID/PID также может нарушить распознавание адаптера программой, которая ожидает заводские идентификаторы.[1][2]
Снижайте частоту при нестабильном обмене
Длинные провода, большая ёмкость шины, несоответствующая подтяжка и clock stretching могут ухудшать обмен. Начните со 100 кГц, сократите соединения и проверьте уровни сигналов.
FAQ
Нужен ли отдельный драйвер для CP2112?
CP2112 использует стандартный класс USB HID, поэтому специальный USB-драйвер обычно не требуется. Приложение всё равно должно поддерживать CP2112 или работать с его HID-отчётами через соответствующую библиотеку.[1][2][3]
Поддерживает ли модуль I²C на 400 кГц или 1 МГц?
Нет. Для настройки CP2112 используйте значения до 255 кГц, а первый запуск выполняйте на 100 кГц.[1][2]
Почему USB определяется, но I²C-устройство не отвечает?
Проверьте общий GND, правильность SDA/SCL, формат адреса в программе, питание целевого устройства, напряжение и суммарное сопротивление подтяжки. Затем повторите безопасное чтение на 100 кГц.
Гарантированно ли работает repeated START?
Repeated START поддерживают CP2112 ревизий F02/F03. Ревизия F01 между фазами формирует STOP и новый START, поэтому для чувствительной периферии проверьте ревизию микросхемы по маркировке.[4]
Можно ли питать целевой модуль от выхода CP2112?
Только после проверки разводки платы, доступности нужного контакта, допустимого тока и требований целевого модуля. Если устройство имеет собственное питание, не соединяйте силовые линии без отдельного обоснования.
Может ли CP2112 работать как логический анализатор?
Нет. CP2112 является активным SMBus master и сам формирует транзакции. Для пассивного наблюдения за уже работающей шиной требуется логический анализатор с декодированием I²C/SMBus.
Создаёт ли модуль COM-порт?
Нет. CP2112 использует USB HID и не является USB–UART адаптером. Для UART TTL требуется отдельный USB–UART конвертер.
Гарантирует ли CP2112 работу с любой программой для батарей?
Нет. Программа должна поддерживать CP2112, а контроллер батареи — соответствовать её протоколу, адресам и командам. Неизвестный pinout, защищённые функции или другая ревизия BMS могут потребовать другого оборудования или документации.
Документы и источники
- Silicon Labs — CP2112 Data Sheet, Rev. 1.3: питание, VIO, стабилизатор, USB HID, SMBus, GPIO, память и временные характеристики.
- Silicon Labs — AN495: CP2112 Interface Specification, Rev. 0.3: HID-отчёты, настройка SMBus и USB-параметров.
- Silicon Labs — AN496: HID USB-to-SMBus API Specification, Rev. 0.4: функции библиотеки и поддерживаемые программные платформы.
- Silicon Labs — CP2112 Errata, Rev. 0.4: отличия repeated START и другие ограничения ревизий F01–F03.