Для использования AD9833 - микросхемы прямого цифрового синтеза (DDS) компании-производителя ANALOG DEVICES, необходимо разобраться c ее инициализацией и управлением. Нижеизложенное следует воспринимать как обобщенную короткую справку, что не исключает более углубленное изучение микросхемы и принципов ее работы [1], [2], [4], [5]. Китайские производители предлагают данную микросхему в виде модуля со всем необходимым на AliExpress [3]. В источнике [1] приведен оригинальный Data Sheet AD9833. В статье [2] имеется перевод частей Data Sheet AD9833 на русский язык. В руководстве по применению AN-1070 [4] приводится пример установки выходного напряжения частотой 400 Гц синусоидальной формы. В статье [5] можно ознакомиться с общими принципами функционирования DDS. Ресурсы [1] и [4] могут не открываться средством просмотра в некоторых территориальных локациях.
Что такое DDS, как это работает и чем отличаются разные способы синтеза частоты? Ответы на эти и другие вопросы можно найти в статье [5] “DDS: прямой цифровой синтез частоты. Ридико Леонид Иванович.”. Если совсем упрощенно, то принцип работы DDS согласно статьи [5] можно объяснить следующим образом. В простейшем случае “двоичный счетчик формирует адрес для ПЗУ, куда записана таблица одного периода функции sin, отсчеты с выхода ПЗУ поступают на ЦАП, который формирует на выходе синусоидальный сигнал, подвергающийся фильтрации в ФНЧ и поступающий на выход. Для перестройки выходной частоты используется делитель частоты с переменным коэффициентом деления, на вход которого поступает тактовый сигнал с опорного генератора. …Недостатки описанной выше структуры могут быть устранены путем введения всего одного, но весьма оригинального изменения. Достаточно адресный счетчик ПЗУ заменить другим цифровым устройством, которое называется накапливающим сумматором. Накапливающий сумматор представляет собой регистр, который в каждом такте работы устройства перезагружается величиной, равной старому содержимому, плюс некоторая постоянная добавка.
Как и для счетчика, содержимое регистра линейно увеличивается во времени, только теперь приращение не всегда является единичным, а зависит от величины постоянной добавки. Когда накапливающий сумматор используется для формирования кода фазы, его еще называют аккумулятором фазы. Выходной код аккумулятора фазы представляет собой код мгновенной фазы выходного сигнала. Постоянная добавка, которая используется при работе аккумулятора фазы, представляет собой приращение фазы за один такт работы устройства. Чем быстрее изменяется фаза во времени, тем больше частота генерируемого сигнала. Поэтому значение приращения фазы фактически является кодом выходной частоты”.
AD9833 тактируется по входу MCLK от генератора 25 МГц, при этом имеем: форма выходного напряжения - синус, треугольник, прямоугольник; выходная частота - 0,1 Гц…12,5 МГц, с дискретностью перестройки 0,1 Гц; частота тактирования последовательной шины управления – до 40 МГц; малые нелинейные искажения выходного синусоидального напряжения, имеется встроенный нагрузочный резистор 200 Ом, размах выходного напряжения 0,6 В; два независимых регистра частоты и фазы; возможность выбора различных режимов энергосбережения; малогабаритный корпус MSOP-10; диапазон питающего напряжения 2,3…5,5 В; диапазон рабочих температур −40°C … +105°C.
CONTROL или РЕГИСТР УПРАВЛЕНИЯ
PHASEx или РЕГИСТР ФАЗЫ х, где х – 0 или 1
FREQx или РЕГИСТР ЧАСТОТЫ х, где х – 0 или 1
AD9833 подключается через 3-проводный последовательный интерфейс, совместимый со стандартами: SPI, QSPI™, MICROWIRE®, а также интерфейсами DSP процессоров. По последовательному интерфейсу программируются внутренние регистры (обведены красным). В минимальной конфигурации регистры FREQ1 и PHASE1 можно не использовать.
Программирование микросхемы AD9833.
В руководстве по применению AN-1070 [4] описано как запрограммировать синусоидальную форму сигнала на выходе микросхемы AD9833. Последовательность действий включает в себя вход в режим сброса, ввод данных в регистр частоты FREQ0, ввод данных в регистр фазы PHASE0, выход из режима сброса.
Внимание! При включении питания микросхемы, ее необходимо сбросить в исходное состояние. Это приведет к сбросу соответствующих внутренних регистров в “0”, что обеспечит аналоговый выход на среднем уровне. Чтобы избежать появления ложных сигналов на выходе ЦАП во время инициализации AD9833, бит RESET (DB8) регистра управления должен быть установлен в “1” до тех пор, пока устройство не будет готово начать генерировать выходной сигнал. Бит RESET (DB8) не сбрасывает регистры фазы, частоты или управления. Эти регистры будут содержать недостоверные данные, поэтому они должны быть установлены пользователем в известное значение. Для запуска генерации выходного сигнала бит RESET (DB8) регистра управления следует установить в “0”. Данные появятся на выходе ЦАП через восемь циклов MCLK после установки RESET (DB8) в “0”.
Задача состоит в том, чтобы с помощью микросхемы AD9833 и задающего генератора 25 МГц на входе MCLK микросхемы сформировать на выходе OUT сигнал синусоидальной формы с частотой 400 Гц. Наборный код для этого задается уравнением: FreqReg = (fout*2^28)/fmclk
Таким образом, для данного примера fout = 400 Гц, fmclk = 25000000 Гц.
FreqReg = (400*2^28)/25000000 = 4295 = 0x10C7 = 0b0001 0000 1100 0111
Последовательность выполняемых команд. Одна операция 28-битной записи.
До записи 16-разрядного слова SCLK AD9833 должен находится в "1" после чего FSYNK AD9833 можно установить в "0". После записи 16-разрядного слова SCLK AD9833 должен находится в "1" и только после этого FSYNK AD9833 можно установить в "1". Данные в регистры записываются по спаду тактирующего импульса SCLK.
При записи регистра частоты пишем сначала - LSB (младшее слово) старшим битом вперед, затем MSB (старшее слово) старшим битом вперед. LSB и MSB - это разделенное 28-разрядное слово, причем слева LSB (14 разрядов) и MSB (14 разрядов) дописаны "01" (признак нулевого регистра частоты, для первого регистра частоты должно быть "10"). В результате получается два слова по 16 разрядов.
0x2100 0b0010 0001 0000 0000 to CONTROL Reset
DB13=”1”, что позволяет загрузить полное слово в регистр частоты за две последовательные записи. Первая запись содержит 14 LSB. Вторая - 14 MSB. Бит RESET (DB8) установлен в “1”. При этом внутренние регистры сбрасываются на “0”, что соответствует среднему уровню аналогового выхода.
0x50C7 0b0101 0000 1100 0111 to FREQ0 LSB
DB15, DB14 установлены в значения “01” соответственно, что является адресом регистра частоты PFREQ0. Оставшиеся 14 бит - это 14 LSB данных: 0x10C7 = 01 0000 1100 0111
0x4000 0b0100 0000 0000 0000 to FREQ0 MSB
DB15, DB14 установлены в значения “01” соответственно, что является адресом регистра частоты PFREQ0. Оставшиеся 14 бит - это 14 младших разрядов данных, и все они равны 0 в данном случае.
0xC000 0b1100 0000 0000 0000 to PHASE0
DB15, DB14, DB13 установлены на “110”, что является адресом регистра фазы PHASE0. DB12 может быть произвольным (“x”, в конкретном случае “0”). Оставшиеся 12 бит являются битами данных и в данном случае все равны “0”.
0x2000 0b0010 0000 0000 0000 to CONTROL Exit Reset
Сигнал появляется на выходе ЦАП и на выходе VOUT микросхемы через семь циклов MCLK после установки RESET (DB8) в “0”. Бит FSELECT (DB11) определяет, какой из регистров частоты используется в аккумуляторе фазы. Бит PSELECT (DB10) определяет, данные какого регистра фазы добавляются к выходу аккумулятора фазы.
Управляющий интерфейс.
Между микроконтроллером и AD9833 [1]. Для микроконтроллера не имеющего выделенного вывода кадровой синхронизации, сигнал FSYNC формируется на любой выходной линии порта микроконтроллера. Условия настройки для корректной работы интерфейса следующие:
- высокий уровень сигнала SCK между операциями записи (CPOL = 1);
- данные действительны по падающему фронту SCK (CPHA = 0).
При передаче данных на AD9833 линия FSYNC принимает низкий логический уровень. Последовательные данные от микроконтроллера передаются в виде 8-битных посылок, при этом в цикле передачи происходит только восемь спадающих фронтов тактовой частоты. Первым передается MSB. Для загрузки данных, сигнал FSYNC удерживается в низком логическом уровне после передачи первых восьми бит и далее выполняется вторая операция последовательной записи в AD9833. Сигнал SCLK должен иметь высокий логический уровень в паузе между двумя операциями записи. Только после передачи вторых восьми битов сигнал FSYNC должен быть снова переведен в высокий уровень.
Между DSP56000/DSP56001/DSP56002 и AD9833 [1]. DSP5600x настроен на нормальный режим работы в асинхронном режиме. Асинхронный режим работы со стробированным внутренним тактовым генератором (SYN = 0, GCK = 1, SCKD = 1). Вывод кадровой синхронизации генерируется внутренне (SC2 = 1). Передачи имеют ширину 16 бит (WL1 = 1, WL0 = 0), а сигнал кадровой синхронизации обрамляет 16 бит. Сигнал кадровой синхронизации кадрирует 16 бит (FSL = 0). Сигнал кадровой синхронизации доступен на выводе SC2, но перед подачей на AD9833 он должен быть инвертирован.
Режимы работы интерфейса SPI из wikipedia
На диаграмме приведены минимальные значения временных параметров. Максимальные значения – разумно произвольные.
Положение управляющих битов регистра управления приведено на рисунке ниже. Обращаю внимание на обязательное логическое состояние некоторых адресных битов регистра управления (выделено красным).
Все нижеследующее взято из статьи [2], отформатировано и дополнено.
Описание управляющих битов регистра управления.
Регистры частоты и фазы.
Данные загружаются по сигнальной линии SDATA в регистр управления AD9833 как 16-битное слово, причем старший бит слова загружается первым. Данные считываются в регистр по спадающему фронту сигнала тактирования SCLK. Перед загрузкой и тактированием сигнал выборки микросхемы FSYNC должен быть установлен в низкий логический уровень. После передачи данных, сигнал FSYNC должен быть установлен в высокий логический уровень.
Между отдельными операциями записи импульсы SCLK могут идти непрерывно, или сигнал SCLK может быть в любом логическом состоянии. ВСЕГДА логический уровень сигнала SCLK должен быть “1”, когда сигнал FSYNC переводится в “0”.
Когда на AD9833 подается питание, должен быть отработан сброс, что приводит к сбрасыванию внутренних регистров в “0”, чтобы установить аналоговый выход аналогово-цифрового преобразователя микросхемы (DAC) в среднее состояние.
При инициализации AD9833, бит сброса RESET (DB8) должен быть установлен в “1”, пока микросхема не будет готова генерировать выходной сигнал. Это предотвратит появление случайных логических состояний на выходе DAC. Сброс не сбрасывает регистры фазы, частоты или управления. Эти регистры будут содержать недопустимые данные, и поэтому должны быть установлены в определенное состояние. Бит сброса должен быть тогда установлен в “0”, чтобы на выходе появился генерируемый сигнал. Данные появятся на выходе DAC через 8 тактов SCLK после того, как бит сброса будет установлен в “0”.
При записи регистров FREQx и PHASEx выходная частота AD9833 будет составлять значение, определяемое формулой:
(FSCLK/(2^28))*FREQx или FSCLK*( FREQx/(2^28), где FSCLK – частота тактирования AD9833, а FREQx – содержимое соответствующего регистра частоты.
Выходной сигнал по фазе сдвинут на 2π/4096 * PHASEx, где PHASEx это значение в соответствующем регистре фазы.
Необходимо уделить особое внимание взаимосвязи между выбранной выходной частотой и частотой тактирования, чтобы избежать нежелательных аномалий на выходе.
Запись в регистр частоты. Одна операция 28-битной записи. Когда записывается регистр частоты, биты D15 и D14 регистра частоты определяют адрес регистра частоты.
Если необходимо поменять все содержимое регистра частоты, требуются две следующие друг за другом операции записи по одному и тому же адресу, потому что регистры частоты имеют разрядность 28 бит. Первая запись содержит 14 младших бит (LSB), а вторая запись содержит 14 старших бит (MSB). Для этого режима работы бит управления B28 (D13) регистра управления необходимо установить в “1”.
Пример 28-битной записи 0xFFFC000 в регистр FREQ0
0xFFFC000 = 0b [ 1111 1111 1111 11 ][ 00 0000 0000 0000 ]
Запись в регистр частоты. Две операции записи. Иногда нужно изменять 28 бит регистра частоты быстро. При грубой настройке можно изменять 14 MSB, в то время как при тонкой настройке можно изменять 14 LSB. Установкой управляющего бита B28 (D13) в “0”, 28-битный регистр частоты работает как два 14-битных регистра, в одном из которых содержатся 14 MSB, и в другом содержатся 14 LSB. Это означает, что 14 бит MSB слова частоты можно поменять независимо от 14 бит LSB, и наоборот. Бит HLB (D12) в регистре управления указывает на изменение MSB или LSB.
Запись в регистр фазы. При записи регистра фазы, биты D15, D14 устанавливаются в “11”. Бит D13 указывает на загрузку конкретного регистра фазы.
Функция сброса. Когда на AD9833 подается питание, должен быть произведен сброс. Эта функция установит внутренние регистры в “0”, при этом аналоговый выход перейдет в среднее состояние. Сброс не изменяет регистры фазы, частоты или управления. Чтобы сбросить AD9833, необходимо установить бит сброса RESET(DB8) в “1”. Чтобы отменить сброс, необходимо установить бит сброса RESET(DB8) в “0”. Выходной сигнал появится на выходе DAC через 8 тактов MCLK после того, как бит сброса RESET(DB8) будет установлен в “0”.
Функция сна. Секции внутреннее тактирование и DAC AD9833, которые не используются, могут быть выключены для минимизации потребления энергии. Выключение DAC целесообразно, когда AD9833 используется для вывода старшего разряда данных DAC. В таком случае DAC не нужен и он может быть выключен для снижения энергопотребления. Когда внутреннее тактирование AD9833 запрещено, выход DAC остается в своем текущем состоянии, потому что аккумулятор фазы больше не накапливает фазу. Новая частота, фаза и управляющее слово могут быть записаны в микросхему, когда активен бит управления SLEEP1 (DB8). Такты синхронизации все еще остаются активными, это означает, что выбранные регистры частоты и фазы можно изменить с помощью бит управления. Установка бита SLEEP1 (DB8) в “0” разрешает тактирование MCLK. Любые изменения, сделанные в регистрах, когда SLEEP1 был активен (“1”), будут видны на выходе после периода латентности - через 8 тактов SCLK.
Выход VOUT. AD9833 позволяет выводить разные по форме сигналы. Эти сигналы появляются на выводе VOUT микросхемы. Выбранная форма сигнала определяется старшим битом (MSB) данных DAC - вывод синусоиды или вывод треугольника. Бит OPBITEN (DB5) и бит MODE (DB1) регистра управления используются для выбора формы выходного сигнала.
MSB данных DAC может быть выведен из AD9833. Путем установки бита управления OPBITEN (DB5) – “1”, старший бит данных DAC появляется на выводе VOUT. Это используется в качестве грубого источника тактовой частоты. Частоту этого прямоугольного сигнала также можно поделить на 2 перед его выводом. Бит DIV2 (DB3) регистра управления управляет делением частоты на два на выходе VOUT.
SIN ROM используется для преобразования информации о фазе из регистров частоты и фазы в информацию амплитуды, которая в результате дает на выходе синусоидальный сигнал. Чтобы получить синусоидальный сигнал на выходе VOUT, необходимо установить бит MODE (DB1) – “0”, и бит OPBITEN (DB5) – “0”.
IN ROM может быть пропущено, и при этом обрезанный цифровой выход из NCO будет переправлен в DAC. Выходной сигнал больше не будет синусоидальным. DAC будет формировать 10-битную линейную треугольную функцию. Чтобы получить треугольную форму сигнала на выводе VOUT, необходимо установить бит MODE (DB1) – “1”. Внимание! Бит SLEEP12 (DB6) должен быть установлен в “0” (т. е. работа DAC разрешена).
[1] Интернет-страница микросхемы AD9833 компании ANALOG DEVICES. https://cutt.us/AD-AD9833 или https://www.analog.com/en/products/ad9833.html
[2] AD9833: программируемый генератор сигналов. https://cutt.us/RU-AD9833
[3] Модуль последовательного интерфейса AD9833. https://cutt.us/AliExpress-AD9833
[4] APPLICATION NOTE AN-1070 ANALOG DEVICES Programming the AD9833/AD9834 by Liam Riordan. https://cutt.us/AN1070-AD9833 или https://www.analog.com/media/en/technical-documentation/application-notes/AN-1070.pdf
[5] DDS: прямой цифровой синтез частоты. Ридико Леонид Иванович. http://leoniv.diod.club/articles/pdf/dds.pdf
Возможно Вам будут интересны другие мои статьи.