Цифро-аналоговый преобразователь AD5302/AD5312/AD5322

В общем-то класс, профессионализм  эмбеддера имхо определяется опытом работы с самыми разнообразными приборами периферии: датчиками, устройствами индикации, ввода и пр. Если , допустим, освоено какое-то семейство микроконтроллеров, то работа с ним (контроллером) не особо отличается от проекта к проекту. Другое дело — что подключается в новом проекте: откуда снимать информацию, куда её передавать, как отображать и т.д. Есть, конечно, какие-то особо популярные устройства (чаще всего самые доступные) которые частенько повторяются в разработках. Но почти всегда, читая очередное техзадание, приходится разбираться в каком-то новом кристалле. И вот так, от разработки к разработке ловишь себя на мысли, что время на освоение постепенно уменьшается — набирается опыт и пополняются знания. Опыт и знания — это то бесценное, что за плечами не носить, их даже не пропьёшь)))  Вот на такой философской ноте я начинаю очередную статью, которая посвящена очень распространённому узлу.
Цифро-аналоговый преобразователь (ЦАП) — название говорит само за себя: на вход подал «цифру» (цифровой код), а выходе получил пропорциональный «цифре» аналоговый сигнал. Применение ЦАП довольно разнообразно. С их помощью можно определять произведения двух или более сигналов, строить делители функций, аналоговые звенья, управляемые от микроконтроллеров, такие как аттенюаторы, интеграторы. Без ЦАП нет цифровых аудио и видео устройств. Также ЦАП широко используются для построения генераторов сигналов, в том числе сигналов произвольной формы. Один из представителей широкой когорты подобных устройств установлен на моей ATmega128 kit и в этой статье я покажу как им управлять. А это, надо вам  сказать, совсем несложно.
Имя ему AD5302 — один из многочисленных кристаллов известнейшей фирмы Analog Devices, являющейся, по моему мнению, лучшей в области именно аналоговых устройств. Чип AD5302/12/22 — это двухканальный, 8-ми/10-ти/12-ти разрядный цифро-аналоговый преобразователь с управлением по последовательному интерфейсу. Ниже распиновка микросхемы:
1. LDAC — вход строба обновления информации в регистрах DAC A и B.
2. Vdd — + питания.
3. VrefB — вход опорного напряжения канала B.
4. VrefA — вход опорного напряжения канала A.
5. VoutA — выход напряжения канала A.
6. VoutB — выход напряжения канала B.
7. SYNC — вход выбор кристалла.
8. SCKL — вход синхроимпульсов последовательного интерфейса.
9. DIN — вход данных последовательного интерфейса.
10. GND — общий (корпус).
Работу с этой микросхемой в двух словах можно описать так… Ну, понятно, подключается питание, на входы опорного подаётся опорное напряжение. Затем посредством последовательного интерфейса подаётся управляющее слово, отрицательным стробом LDAC оно перемещается в регистры и на выходах имеем аналоговое напряжение, пропорциональное значению записанному  в  соответствующие регистры A, B  DAC. Последовательный интерфейс похож на десятки других подобных. Ниже приведены осциллограммы его работы.

Остановлюсь подробнее на структуре управляющего слова. Слово 16-ти разрядное. Разряды с 4-го/2-го/0-го по 11-й (см. Fig. 28, 29, 30) содержат непосредственно код значения необходимого на выходе A, B напряжения для AD5302/12/22 соответственно. Разряды 12, 13 (см. Tab. I) определяют режимы работы. 14-й разряд определяет будет ли буферизироваться опорное напряжение. 15-й старший разряд определяет в какой канал, A или B, будет записано управляющее слово. В Tab. I разъяснены значения 15-го и 14-го разрядов, а также показаны значения по умолчания после включения питания. Режимы работы (13, 12) имеются следующие: 00 — нормальная работа; 01 — режим «Power Down» — выход подключается к «земле» через сопротивление 1 кОм; 10 — режим «Power Down» — выход подключается к «земле» через сопротивление 100 кОм; 11 — выход в Z-состоянии. В режимах «Power Down» существенно уменьшается потребление — до 200 nA при 5 В (50 nA при 3 В).
Исходя из вышесказанного я написал простую программку, выводящую в один канал синус, а во второй — «пилу». Программа написана для реализации её в «железе» на ATmega128 kit, хотя, используя данную информацию, можно сделать на любом кристалле.

А вот, что получилось вживую:Как видите, вполне неплохой сигнал. Одно «но» — частота (справа внизу на осциллограмме) десятки герц. Это один из недостатков управления по последовательному интерфейсу. В даташите на AD5302 указано, что синхроимпульсы SCKL можно подавать с частотой до 30 МГц. Простые вычисления показывают что 30 делённое на 16(кол-во разрядов управляющего слово) и на 256 (это для 8-ми разрядного ЦАП) — дадут в итоге 7,3 кГц периодического сигнала, и это при сигнале LDAC постоянно сброшенном в «0». По этой причине использовать подобные ЦАП для генераторов ВЧ колебаний не получится. Однако же в качестве низкочастотного генератора данный ЦАП пойдёт на ура. Можно его использовать и для различного рода регулировок. Допустим в тюнере на его основе можно сделать хороший регулятор громкости.
Размер вышеуказанного кода небольшой — влезет в tiny1x. Повесить две кнопки «+», «-» или энкодер, сигналы LDAC и SYNC — на «землю» (ещё и выводы останутся для индикации),  и можно апгрейдить какую-нибудь звуковоспроизводящую аппаратуру. Больше информации, конечно же, в даташите, который можно нагуглить без проблем. Удачи, уважаемые коллеги! Успехов Вам!

 

Запись опубликована в рубрике Микроконтроллерный конструктор с метками . Добавьте в закладки постоянную ссылку.

2 комментария: Цифро-аналоговый преобразователь AD5302/AD5312/AD5322

  1. Артур говорит:

    Спасибо за статью, как раз возникла необходимость в работе с этой ИС.
    Хотелось бы увидеть схему подключения, а в частности как правильнее подключить вывод SYNC через подтягивающий резистор в Vcc или нет?

  2. s_black говорит:

    Здесь схема включения. Удачи Вам!

Добавить комментарий

Ваш e-mail не будет опубликован.