Перейти к содержанию

MCP2221A — мост USB в I²C и UART от Microchip

MCP2221A — мост USB 2.0 Full Speed, который при подключении к компьютеру появляется сразу двумя устройствами: виртуальным COM-портом (CDC) для UART и HID-устройством для ведущего I²C, четырёх выводов общего назначения, АЦП и ЦАП. Драйверы для обоих — стандартные в Windows, Linux и macOS. Разбираем по даташиту Microchip выводы, питание от USB и от 3,3 В, функции выводов GP, команды HID для I²C, уровни и токи, и чем он отличается от CP2102 и CH340.

Обновлено Редакция GAW

MCP2221A (Microchip) — мост USB, который соединяет компьютер не только с UART, как CP2102 или CH340, но и с шиной I²C: микросхема работает ведущим I²C, а данные для обмена приходят с компьютера через USB. Четыре вывода GP превращаются в выходы, входы, каналы АЦП, выход ЦАП, выход частоты или вход прерывания. Это удобный способ подключить датчик I²C прямо к компьютеру или проверить шину без микроконтроллера.

Коротко

  • USB — 2.0 Full Speed, составное устройство CDC + HID на стандартных драйверах; VID:PID по умолчанию 04D8:00DD, перезаписываются.
  • UART — 300–460 800 бод, только 8 бит без чётности с одним стоп-битом; буферы 64 байта на передачу и 384 на приём.
  • I²C — ведущий до 400 кГц, передачи до 65 535 байт, растяжение такта; управление через HID-отчёты по 64 байта.
  • GP0–GP3 — GPIO, АЦП 10 бит на три канала, ЦАП 5 бит, выход частоты 12 МГц, вход прерывания, индикаторы обмена.
  • Питание — 3,0–5,5 В; от USB 5 В со встроенным стабилизатором 3,3 В для приёмопередатчика или от 3,3 В; 13 мА тип. при 5 В.
  • Корпуса — PDIP-14, SOIC-14, TSSOP-14, QFN-16 4 × 4 мм; −40…+85 °C, есть версия AEC-Q100.

Выводы

MCP2221A, вид сверху: 1 VDD, 2 GP0, 3 GP1, 4 RST, 5 URx, 6 UTx, 7 GP2, 8 GP3, 9 SDA, 10 SCL, 11 VUSB, 12 D−, 13 D+, 14 VSSMCP2221A1VDD2GP03GP14RST5URx6UTx7GP28GP39SDA10SCL11VUSB12D−13D+14VSSвид сверху
MCP2221A в корпусах PDIP-14, SOIC-14 и TSSOP-14, вид сверху; номера выводов QFN-16 — в таблице
ВыводPDIP, SOIC, TSSOPQFN-16Назначение
VDD116питание 3,0–5,5 В
GP021GPIO, SSPND, LED_URX (по умолчанию)
GP132GPIO, CLKR, ADC1, LED_UTX (по умолчанию), IOC
RST43сброс нулём, внутренняя подтяжка
URx54вход UART
UTx65выход UART
GP276GPIO, USBCFG (по умолчанию), ADC2, DAC1
GP387GPIO, LED_I2C (по умолчанию), ADC3, DAC2
SDA98данные I²C
SCL109такт I²C
VUSB11103,3 В приёмопередатчика USB, керамический конденсатор на землю
D−1211линия USB
D+1312линия USB
VSS1413общий провод
NC—14, 15не подключены
EP—17открытая площадка: электрически не подключать

Корпуса: PDIP-14 (P), SOIC-14 (SL, чертёж C04-065-SL Rev D, посадочное место C04-2065-SL Rev D), TSSOP-14 (ST, C04-087 Rev D и C04-2087 Rev D) и QFN-16 4 × 4 мм (ML, C04-127D). Открытую площадку QFN Microchip просит не соединять ни с чем — это отличие от большинства микросхем, у которых площадку паяют к земле. Резисторы согласования и подтяжка D+ встроены: по примечанию к табл. 4-1 между микросхемой и разъёмом USB не нужны ни резисторы, ни конденсаторы, ни дроссели.

Питание

MCP2221A питается от 3,0 до 5,5 В на VDD. Приёмопередатчику USB нужны 3,3 В на VUSB (рабочий диапазон 3,0–3,6 В), и их можно получить двумя способами (разд. 1.6.2):

  • От шины USB. VDD = 5 В от VBUS, внутренний стабилизатор даёт 3,3 В на VUSB; на VUSB ставят керамический конденсатор 0,22–0,47 мкФ. Выводы UTx и GP при этом работают с уровнем 5 В.
  • От своих 3,3 В. VDD и VUSB соединяют вместе и подают 3,3 В; внутренний стабилизатор не участвует, выводы работают с уровнем 3,3 В.

При питании от USB общая ёмкость на линии VBUS по требованию спецификации USB 2.0 не должна превышать 10 мкФ, иначе нужно ограничение пускового тока (разд. 1.6.2.2). По умолчанию микросхема при перечислении запрашивает у компьютера 100 мА (значение 50 в настройке USBREQCRT, единица — 2 мА). Ток потребления — 10 мА тип. (до 12 мА) при 3,0 В и 13 мА тип. (до 15 мА) при 5,0 В; в режиме покоя — 46 мкА тип.

Вывод RST сбрасывает микросхему нулём (импульс не короче 2 мкс) и внутри подтянут к питанию; Microchip советует соединить его с VDD резистором 1–10 кОм, а при собственном питании устройства — с линией VBUS разъёма USB (рис. 1-8). После сброса таймер включения выдерживает 40–140 мс (65 мс тип.); для надёжного сброса при включении питание должно нарастать не медленнее 0,05 В/мс.

Выводы GP

Каждый из четырёх выводов GP получает одну функцию из таблицы 1-5; назначение при включении хранится во Flash, а во время работы его можно сменить HID-командой в копии настроек в ОЗУ.

КодGP0GP1GP2GP3
000GPIOGPIOGPIOGPIO
001SSPNDCLKRUSBCFGLED_I2C
010LED_URXADC1ADC2ADC3
011—LED_UTXDAC1DAC2
100—IOC——
  • GPIO — вход или выход, управляется и читается HID-командами.
  • SSPND — ноль, когда компьютер перевёл USB в режим Suspend; USBCFG — единица, когда устройство настроено компьютером.
  • LED_URX, LED_UTX, LED_I2C — на несколько миллисекунд опускаются в ноль при обмене: к ним подключают светодиоды активности.
  • ADC1–ADC3 — входы 10-битного АЦП, около 1000 выборок в секунду; источник опорного — VDD, 1,024, 2,048 или 4,096 В.
  • DAC1, DAC2 — выход одного и того же 5-битного ЦАП; если оба вывода — ЦАП, на них одно и то же напряжение.
  • CLKR — выход частоты от внутреннего генератора 12 МГц ±0,25 % с настраиваемым делителем и скважностью.
  • IOC — вход прерывания по фронту, спаду или обоим; он же может будить спящий компьютер (Remote Wake-up).

Наш расчёт для АЦП: с опорным 2,048 В шаг 2,048 / 1024 = 2 мВ, с опорным VDD = 5 В — около 4,9 мВ. Источник сигнала для АЦП должен иметь сопротивление не больше 10 кОм, или на входе нужен конденсатор 0,01 мкФ (табл. 4-2). Шаг ЦАП по табл. 4-3 — VDD / 32, при 5 В это 156 мВ, точность — ±½ младшего разряда, установление — до 10 мкс. Наш вывод: ЦАП на 32 ступени годится для опорного напряжения или подстройки, но не для звука.

I²C через HID

Ведущий I²C управляется 64-байтными HID-отчётами. Скорость задаёт команда 0x10 (Status/Set Parameters) с делителем: делитель = 12 МГц / частота − 2. Наш расчёт: для 400 кГц — 12 000 000 / 400 000 − 2 = 28, для 100 кГц — 118. Той же командой отменяют зависшую передачу и освобождают шину — например, после обращения по несуществующему адресу.

Запись — команда 0x90 (I2C Write Data): длина передачи двумя байтами, адрес ведомого и до 60 байтов данных в одном отчёте; если длина больше 60, остаток передаётся следующими командами 0x90. Адрес в командах восьмибитный: семибитный адрес сдвигают влево на один разряд, для чтения прибавляют единицу (примечание 2 к табл. 3-20). Наш пример: датчик с адресом 0x76 записывается как 0xEC, читается как 0xED. Есть варианты с повторным Start и без Stop — для чтения регистров по схеме «запись адреса регистра, повторный Start, чтение». Порядок байтов в таких транзакциях удобно проверять в конструкторе транзакции I²C.

UART

UART работает только в формате 8N1: команду SET_LINE_CODING от терминальной программы микросхема использует лишь для смены скорости, число бит, чётность и стоп-биты не меняются (разд. 1.3). Скорость получается делением 12 МГц: фактическая = 12 МГц / int(12 МГц / заданная). Отсюда ошибка 0,16 % на 38 400, 57 600, 115 200, 230 400 и 460 800 бод и точные значения на 300–19 200 бод (табл. 1-2); ошибку для своей скорости считает калькулятор скорости UART. Линий управления потоком и модема (RTS, CTS, DTR) нет.

Параметры

Условия — VDD 3,0–5,5 В, −40…+85 °C, если не указано иное (разд. 4).

ПараметрМин.Тип.Макс.Условия
Питание VDD3,0 В—5,5 Впредел 6,0 В
VUSB3,0 В—3,6 Впредел 4,0 В
Порог сброса / повторного сброса—1,6 / 0,8 В—VPOR
Ток потребления—10 мА12 мАVDD = 3,0 В, 12 МГц
То же—13 мА15 мАVDD = 5,0 В
Ток покоя—46 мкА——
URx: ноль / единица——0,2 · VDD / от 0,8 · VDDтриггер Шмитта
GP: ноль / единица——0,8 В / от 2,0 ВТТЛ, VDD 4,5–5,5 В
Ноль на GP и UTx——0,6 В8 мА при 5 В, 6 мА при 3,3 В
Единица на GP и UTxVDD − 0,7 В——−3,5 мА при 5 В, −3,0 мА при 3,3 В
Ёмкость нагрузки GPIO——50 пФхарактеризуется
Разрешение АЦП——10 бит—
Шаг ЦАП—VDD / 32——
Частота генератора—12 МГц—±0,25 % (2500 ppm) по температуре
Таймер включения TPWRT40 мс65 мс140 мс—

Предельные режимы (с. 56): VDD — от −0,3 до 6,0 В, RST — до 9,0 В, VUSB — до 4,0 В и не выше VDD + 0,3 В, D+ и D− — до VUSB + 0,3 В, остальные выводы — до VDD + 0,3 В; ток одного вывода — 25 мА в нуле и в единице, всех выводов вместе — 90 мА, через VDD и VSS — 95 мА; мощность — 800 мВт. Тепловое сопротивление кристалл — среда: 70 °C/Вт у PDIP-14, 95,3 у SOIC-14, 100 у TSSOP-14 и 45,7 °C/Вт у QFN-16. Наш расчёт: при 5 В и 15 мА микросхема рассеивает 75 мВт и в TSSOP-14 нагревается на 7,5 °C — без нагрузки на выводах тепловых ограничений нет.

Настройки во Flash

VID, PID, строки дескрипторов USB, запрашиваемый ток, назначение выводов GP, опорные напряжения АЦП и ЦАП, начальное значение ЦАП и частота CLKR хранятся во Flash и копируются в ОЗУ при включении. По умолчанию VID:PID — 04D8:00DD; их, как и дескрипторы, можно заменить своими утилитой Microchip или командами HID. Запись настроек можно закрыть паролем из восьми байтов (по умолчанию нули). Наш вывод: если в устройстве изменён PID, стандартные драйверы классов CDC и HID продолжат работать, а программы, которые ищут мост по VID:PID 04D8:00DD, — нет.

MCP2221A, CP2102 и CH340

ПараметрMCP2221ACP2102CH340
UART300–460 800 бод, только 8N1до 921 600 бит/с50 бит/с — 2 Мбит/с
Сигналы модеманетестьесть
I²C, GPIO, АЦП, ЦАПведущий I²C 400 кГц, 4 GPнетнет
Драйверстандартные CDC и HIDVCP Silicon LabsVCP WCH
VID:PID по умолчанию04D8:00DD10C4:EA601A86:7523
КорпусаPDIP-14, SOIC-14, TSSOP-14, QFN-16QFN-28 5 × 5 ммSOP-16, SSOP-20 и другие

Наш вывод: для загрузки прошивок и консоли с автосбросом платы лучше CP2102 или CH340, у которых есть DTR и RTS. MCP2221A выигрывает там, где компьютер должен сам работать с шиной I²C, читать аналоговые входы или дёргать выводы, — без микроконтроллера и без установки драйверов. Похожий новый мост WCH — CH9102 — тоже только UART.

Расхождения в документации

  • Корпуса в таблице выводов. Заголовок табл. 1-1 называет корпуса «PDIP, SOIC, SSOP», а рисунок корпусов на с. 2 и коды заказа на с. 75 — PDIP, SOIC и TSSOP; корпуса SSOP у MCP2221A нет.
  • Десятибитные адреса I²C. Свойства на с. 1 обещают устройства с 7- и 10-битными адресами (10-битные — через библиотеку на компьютере), а разд. 1.13.1 перечисляет только 7-битный режим.
  • Диапазон VDD для опорного. Разд. 1.8.1.1 пишет, что опорное VDD «может принимать любое значение от 3,3 до 5 В», а рабочий диапазон питания — 3,0–5,5 В.
  • Разрядность ЦАП. ЦАП 5-битный (разд. 1.8.3), а примечание к табл. 4-3 измеряет установление при смене кода «с 0000 на 1111» — это четыре бита. Шаг дан только как VDD / 32, хотя ЦАП может работать и от внутренних опорных 1,024, 2,048 и 4,096 В.
  • Пороги входов GP при 3,3 В. Уровни ТТЛ для выводов GP (0,8 и 2,0 В) заданы только при VDD 4,5–5,5 В; для питания 3,0–4,5 В порогов входов GP в таблице нет.

Частые вопросы

Нужен ли драйвер для MCP2221A?

Нет. Микросхема перечисляется как составное устройство из двух стандартных классов: CDC — виртуальный COM-порт для UART — и HID для I²C, выводов GP, АЦП и ЦАП. Microchip называет Windows от XP SP3 до 10, любой Linux с поддержкой CDC и HID и macOS начиная с 10.7. Для работы с I²C и GPIO из программы Microchip даёт библиотеку DLL и утилиту настройки; формат HID-отчётов по 64 байта описан в разд. 3 даташита, так что с мостом работает и любая библиотека HID.

Чем MCP2221A отличается от MCP2221?

По даташиту — только наибольшей скоростью UART: 460 800 бод у MCP2221A против 115 200 у MCP2221. Выводы, команды HID, I²C, GPIO, АЦП и ЦАП одинаковые.

Как питать MCP2221A, чтобы выводы были 3,3-вольтовыми?

Уровни на UTx и выводах GP равны напряжению VDD. При питании от шины USB (VDD = 5 В) внутренний стабилизатор даёт 3,3 В только на VUSB для приёмопередатчика USB, а логика работает на 5 В. Для 3,3-вольтовой логики VDD и VUSB соединяют вместе и подают на них 3,3 В от внешнего стабилизатора — внутренний стабилизатор тогда не работает.

Можно ли через MCP2221A прошивать Arduino или ESP32?

Не напрямую: у UART MCP2221A есть только выводы UTx и URx, без сигналов DTR и RTS, которыми мосты CH340 и CP2102 сбрасывают плату и переводят её в загрузчик. Кроме того, UART поддерживает только формат 8N1. Для загрузки скетчей удобнее мосты с сигналами модема, а MCP2221A — для отладки шины I²C, чтения датчиков и простых тестов с компьютера.

Источники

  1. Microchip. MCP2221A USB 2.0 to I2C/UART Protocol Converter with GPIO (DS20005565E, revision E, September 2021) — с. 1 — свойства (CDC и HID, буферы 64 и 384 байта, 300–460 800 бод, I²C до 400 кГц, 65 535 байт, 3,0–5,5 В, ESD > 4 кВ, AEC-Q100), отличие от MCP2221; с. 2 — расположение выводов; с. 3 — табл. 1-1 (выводы и альтернативные функции); с. 4 — разд. 1.1–1.3 (ОС, только 8N1, табл. 1-2 и уравнение 1-1); с. 5–11 — настройки во Flash, VID 04D8 и PID 00DD, ток 100 мА, пароль; с. 16–18 — разд. 1.5–1.6 (Suspend, VUSB, питание от USB и от 3,3 В, 10 мкФ, 0,22–0,47 мкФ); с. 18–20 — разд. 1.7–1.10 (функции GP, табл. 1-5, VRM, АЦП ~1000 выб./с, ЦАП 5 бит, CLKR 12 МГц ±0,25 %, IOC); с. 21 — разд. 1.11–1.13 (RST 1–10 кОм, генератор 2500 ppm, ведущий I²C); с. 23 — табл. 3-1 (делитель I²C); с. 39 — табл. 3-20 (команда 0x90, 60 байт, 8-битный адрес); с. 56 — предельные режимы; с. 57–59 — разд. 4.1 и табл. 4-1 — 4-4 (ток, уровни, USB, АЦП, ЦАП, θJA); с. 61 — табл. 4-6 (RST 2 мкс, PWRT 40–140 мс); с. 62–72 — корпуса P, SL (C04-065-SL Rev D, C04-2065-SL Rev D), ST (C04-087 Rev D, C04-2087 Rev D), ML (C04-127D); с. 73 — история ревизий; с. 75 — коды заказа
  2. Silicon Labs. CP2102/9 Single-Chip USB-to-UART Bridge, Rev. 1.8 (1/17) — для сравнения (архивная копия официального файла): с. 1 — QFN-28 5 × 5 мм, сигналы модема; табл. 4 — скорость до 921 600 бит/с; VID 10C4h и PID EA60h
  3. WCH (Nanjing Qinheng Microelectronics). CH340 Datasheet, Version 3C — для сравнения (архивная копия официального файла): разд. 1 — 50 бит/с — 2 Мбит/с, сигналы модема RTS, DTR, DCD, RI, DSR, CTS, корпуса SOP-16, SOP-8, SSOP-20, ESSOP-10, MSOP-10; VID 1A86H и PID 7523H

Нашли ошибку?