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.
Выводы
| Вывод | PDIP, SOIC, TSSOP | QFN-16 | Назначение |
|---|---|---|---|
| VDD | 1 | 16 | питание 3,0–5,5 В |
| GP0 | 2 | 1 | GPIO, SSPND, LED_URX (по умолчанию) |
| GP1 | 3 | 2 | GPIO, CLKR, ADC1, LED_UTX (по умолчанию), IOC |
| RST | 4 | 3 | сброс нулём, внутренняя подтяжка |
| URx | 5 | 4 | вход UART |
| UTx | 6 | 5 | выход UART |
| GP2 | 7 | 6 | GPIO, USBCFG (по умолчанию), ADC2, DAC1 |
| GP3 | 8 | 7 | GPIO, LED_I2C (по умолчанию), ADC3, DAC2 |
| SDA | 9 | 8 | данные I²C |
| SCL | 10 | 9 | такт I²C |
| VUSB | 11 | 10 | 3,3 В приёмопередатчика USB, керамический конденсатор на землю |
| D− | 12 | 11 | линия USB |
| D+ | 13 | 12 | линия USB |
| VSS | 14 | 13 | общий провод |
| 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-командой в копии настроек в ОЗУ.
| Код | GP0 | GP1 | GP2 | GP3 |
|---|---|---|---|---|
| 000 | GPIO | GPIO | GPIO | GPIO |
| 001 | SSPND | CLKR | USBCFG | LED_I2C |
| 010 | LED_URX | ADC1 | ADC2 | ADC3 |
| 011 | — | LED_UTX | DAC1 | DAC2 |
| 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).
| Параметр | Мин. | Тип. | Макс. | Условия |
|---|---|---|---|---|
| Питание VDD | 3,0 В | — | 5,5 В | предел 6,0 В |
| VUSB | 3,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 и UTx | VDD − 0,7 В | — | — | −3,5 мА при 5 В, −3,0 мА при 3,3 В |
| Ёмкость нагрузки GPIO | — | — | 50 пФ | характеризуется |
| Разрешение АЦП | — | — | 10 бит | — |
| Шаг ЦАП | — | VDD / 32 | — | — |
| Частота генератора | — | 12 МГц | — | ±0,25 % (2500 ppm) по температуре |
| Таймер включения TPWRT | 40 мс | 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
| Параметр | MCP2221A | CP2102 | CH340 |
|---|---|---|---|
| UART | 300–460 800 бод, только 8N1 | до 921 600 бит/с | 50 бит/с — 2 Мбит/с |
| Сигналы модема | нет | есть | есть |
| I²C, GPIO, АЦП, ЦАП | ведущий I²C 400 кГц, 4 GP | нет | нет |
| Драйвер | стандартные CDC и HID | VCP Silicon Labs | VCP WCH |
| VID:PID по умолчанию | 04D8:00DD | 10C4:EA60 | 1A86:7523 |
| Корпуса | PDIP-14, SOIC-14, TSSOP-14, QFN-16 | QFN-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, чтения датчиков и простых тестов с компьютера.
Источники
- 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 — коды заказа
- 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
- 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
Нашли ошибку?
Смотрите также
- Интерфейсные микросхемыРасширители портов, трансиверы, Ethernet, 4–20 мА: параметры, карточки
- CP2102 и CP2102NМосты USB–UART: выводы QFN-28, стабилизатор 3,3 В, скорость, уровни
- CH340Мост USB–UART: исполнения, выводы, V3 при 5 и 3,3 В, скорости, уровни
- CH9102Мост USB–UART без кварца: выводы F и X, VDD5, V3, VIO, 4 Мбит/с, точность, TNOW
- USBСкорости, распиновка Type-A, Micro-B и Type-C, питание, CC, USB PD
- I²CSDA и SCL, START/STOP, ACK, адреса, скорости, расчёт подтяжек
- UARTКадр 8N1, скорость и допуск, TX и RX, уровни, USB–UART, AVR и STM32
- Мост USB–UARTМикросхема, превращающая USB в последовательный порт UART и виртуальный COM-порт
- Виртуальный COM-порт (VCP)Драйвер, показывающий USB-устройство как последовательный порт
- Класс устройства USBСтандартные типы устройств и коды классов USB-IF
- VID и PID USBИдентификаторы производителя и изделия USB
- Питание от шины USBКлассы питания USB 2.0: сколько тока брать от VBUS и как это объявить
- Приостановка USB (suspend)Когда устройство уходит в suspend, сколько может брать тока и как просыпается
- Дескриптор USBСтандартные структуры, которыми устройство описывает себя
- Адрес I²C7-битный адрес ведомого и байт адреса с битом R/W
- Скорость UARTUBRR, BRR, TH1 и ошибка скорости
- Транзакция I²C по байтамБайт адреса, ACK и NACK, повторный START, диаграмма и код
- SOIC-14Шаг 1,27 мм, корпус 8,65 × 3,90 мм, посадочное место, θJA 58 °C/Вт
- TSSOP-14Шаг 0,65 мм, корпус 5,0 × 4,4 мм, высота до 1,2 мм, θJA 95 °C/Вт
- PDIP-14 (DIP-14)Шаг 2,54 мм, ряды через 7,62 мм, длина 18,67–19,69 мм, чертёж в дюймах
- QFN-16 4×4Шаг 0,65 мм, корпус 4,00 × 4,00 мм, площадка 2,50–2,80 мм, высота 0,80–1,00 мм