Коротко про міст 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.