MCP4725 — 12-разрядный цифро-аналоговый преобразователь с управлением по I2C: по двум проводам он принимает код от 0 до 4095 и выдаёт на выходе напряжение от нуля до питания, пропорциональное этому коду. То есть на выходе 4096 ступеней между землёй и VDD, и отдельное опорное напряжение не нужно — им служит само питание прибора. В этом и главное отличие от распространённого MCP4922: у того есть внешний вывод опоры и переключатель усиления, а у MCP4725 вывода VREF нет, и выход привязан к питанию жёстко. Из этого следует практическое ограничение: если питание прибора гуляет вместе с нагрузкой, гуляет и выход. Зато схема включения предельно простая: две линии шины, выход, земля и питание, плюс подтяжки на SDA и SCL — на модулях они обычно уже распаяны. Второе, что важно, — память: у прибора есть 4 бита энергонезависимой памяти, в которых хранится значение выхода при включении питания, и прибор выходит на это значение сам, без подачи команды. Третье — как не испортить память: запись значения на выход и запись в память — разные команды, и обычная запись значения память не трогает, а вот команда с записью в память расходует её ресурс. По быстродействию запись в память занимает десятки миллисекунд, и в реальном управлении её делают редко, обычно один раз при настройке. Адрес на шине базовый 0x60, и младший бит задаётся выводом A0, но у разных модулей этот бит бывает зашит по-разному, поэтому при подключении к конкретной плате адрес проверяют сканированием шины, а не берут из документации модуля.
Содержание руководства (10 разделов)
Распиновка MCP4725 (SOT-23-6)
| Вывод | Назначение |
|---|---|
| 1 | VOUT — аналоговый выход |
| 2 | VSS — земля |
| 3 | VDD — питание 2,7…5,5 В |
| 4 | SDA — линия данных I2C, с подтяжкой |
| 5 | SCL — линия такта I2C, с подтяжкой |
| 6 | A0 — выбор младшего бита адреса |
Как формируется выходное напряжение
Выходное напряжение задаётся кодом от 0 до 4095 и равно произведению кода на 4096, умноженному на напряжение питания. Иными словами, при питании 3,3 В ступенька составляет около 0,8 мВ, а при 5 В — около 1,2 мВ. Никакого отдельного опорного напряжения в схеме нет, верхняя граница выхода совпадает с питанием прибора.
Отсюда первое практическое следствие: точность выхода ограничена точностью питания. Если питание прибора идёт от нестабилизированного источника, «плавать» будет не только сам преобразователь, но и вся аналоговая часть схемы, питаемая от того же узла. В схемах, где выход должен быть точным, прибор запитывают от стабилизатора, а не от общей шины питания.
Второе следствие — время установления около 6 мкс. Для большинства задач по формированию опорного напряжения, уровня, имитации сигнала датчика или управления яркостью это ничто; но в схемах, где выход должен успевать за быстрыми изменениями, этот параметр надо учитывать отдельно.
Команды записи и память при включении
Протокол простой: сначала байт команды, затем два байта данных. Команда определяет, куда именно попадёт значение — только на выход, или ещё и в память, или только в память, или с последующей загрузкой из памяти на выход. В самом ходовом случае команда 0x40 означает «записать значение на выход, память не трогать», и она же самая быстрая.
Память у прибора крошечная — 4 бита, — но именно в ней хранится значение, с которым прибор выходит при включении питания. Это удобно: после подачи питания преобразователь сразу выдаёт заданный уровень, без обмена по шине. Для управляющего контроллера это снимает задержку в несколько миллисекунд на старте, а в приборах с батарейным питанием — лишний расход.
Расход памяти при этом нужно считать: запись в неё занимает десятки миллисекунд и имеет ограниченный ресурс порядка миллиона циклов. Поэтому в управляющих схемах память трогают редко — обычно один раз при настройке или при смене заданного уровня, а в цикле идёт обычная запись в выход. Ошибка в этом месте выглядит так: прибор работает, но через несколько тысяч перезагрузок перестаёт помнить уровень, и это принимают за брак детали.
Адрес на шине и почему его проверяют
Базовый семиразрядный адрес — 0x60, и вывод A0 задаёт младший бит, давая 0x60 или 0x61. Но в документации разных модулей встречаются и другие значения, потому что у отладочных плат этот бит бывает зашит или разведён иначе, чем предполагает схема прибора. Один и тот же модуль, купленный у разных поставщиков, может отвечать на разных адресах.
Поэтому при подключении к конкретной плате адрес проверяют сканированием шины, а не берут из документации модуля. Заодно сканирование сразу показывает, есть ли на шине конфликт: адрес 0x60 совпадает с адресом генератора тактовой частоты Si5351A, и при работе обоих приборов на одной шине они будут мешать друг другу. Перенести один из них на другой адрес в данном случае нельзя, и решением остаётся развести их по разным линиям или развести по времени.
Чем отличается от MCP4922
Два прибора выглядят похоже и часто продаются рядом, но различаются существенно. У MCP4922 есть внешний вывод опорного напряжения, который может быть и выше, и ниже питания, и переключатель усиления выхода 1 или 2. У MCP4725 ничего этого нет: опора — это питание, усиление фиксированное, а корпус меньше.
Практический выбор между ними: если выход должен уметь выдавать уровни выше питания прибора или ниже нуля — нужен прибор с внешней опорой, то есть MCP4922. Если достаточно выхода в пределах питания, MCP4725 проще, дешевле и занимает меньше места, а входной импеданс у него всего около 1 Ом, и нагрузку он тянет легко.
Разрядность у обоих 12 бит, так что по числу ступеней они равны, и при выборе решают не разрядность, а наличие опоры, корпус и то, с какой платы привыкли работать.
Характеристики
- Разрядность 12 бит, 4096 ступеней, шкала от нуля до напряжения питания.
- Питание 2,7…5,5 В; диапазон шины I2C — стандартный, быстрый и Fast Mode Plus, до 3,4 МГц.
- Время установления порядка 6 мкс.
- Выходное сопротивление около 1 Ом, ток источника и стока до 25 мА.
- Энергонезависимая память на 4 бита для хранения значения выхода при включении питания.
Частые вопросы
- Нужен ли внешний опорный сигнал — нет, верхняя граница выхода равна напряжению питания прибора.
- Как задать напряжение — записать код от 0 до 4095; при питании 3,3 В ступенька около 0,8 мВ.
- Сохраняется ли значение при отключении питания — да, в памяти прибора; при включении он сразу выходит на это значение.
- Какой адрес у прибора — базовый 0x60, младший бит задаётся выводом A0; фактический адрес проверяют сканированием шины.
- Чем заменить — приборами с управлением по SPI, но протокол другой, и в готовой схеме такая замена потребует правки схемы и программы.
Примените это к своей спецификации
Отправьте партномера или файл спецификации (Excel / CSV). По каждой строке проверим складские остатки в Шэньчжэне, наличие заводской упаковки и проверенные аналоги — с отгрузкой единой партией.
Запрос успешно отправлен!
Ваш запрос по позиции (ICBOMS) зарегистрирован. Номер заявки:
1. Служба закупок в Шэньчжэне проверяет реальные физические остатки на складах и Data Code.
2. Официальный расчет с ценами, сроками и условиями DDP будет отправлен на в течение 2-24 ч.
Как написано это руководство
Руководство написано службой поставок ICBOMS в Шэньчжэне и выверено по документам производителей и стандартам, на которые ссылается текст. Формулировки ограничены тем, что делает эта служба, и тем, как оценивают деталь — без ориентировочных цен, сроков поставки и остатков: всё это считается по каждой строке отдельно, по факту проверки. Дата последней вычитки стоит в начале страницы.