Форум про радио и не только

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Форум про радио и не только » Консультации » Синхронирзированные генераторы DDS на AD9834


Синхронирзированные генераторы DDS на AD9834

Сообщений 1 страница 3 из 3

1

Всех приветствую.
Нужна консультация по работе с микрухами DDS.
Я немного запутался, быть может, ответы ускорят процесс наладки. :)
Имеется три DDS с одним общим клоком от кварцевого генератора (40 Мгц). PIC16F1887 управляет.
При включении произвожу инициализацию и синхронизацию DDS - все прекрасно работает. Синусы три штуки в одной фазе и заданной частоты есть.
Но вот при изменении частоты генерации одного канала любого получаю не то что хочу.
В чем разница инициализации и установки значений после:
Инициализация идет полностью на программном уровне, а вот потом я хотел бы управлять с помощью отдельных ног, что и пытаюсь сделать.
алгоритм: поднять ногу reset в 1. записать данные в регистр. опустить reset.
Если кто занимался данными DDS подскажите алгоритм. Даташит читал сто раз. Понятно что еще буду читать :) ну а вдруг так быстрее....

Отредактировано FR1 (2022-04-07 08:45:45)

0

2

Уточню немного:
ножка ресет у всех DDS объединена.
ножка CS ( по даташиту по другому называется) у всех разная.
как я записываю:
ресет=1
CS=0
16 бит в регистр частоты№1 по spi
CS=1
CS=0
16 бит в регистр частоты№1 по spi
CS=1
ресет=0

все должна сменится частота.
Она меняется но не всегда и черт знает какая...

Отредактировано FR1 (2022-04-07 10:07:58)

0

3

Вопрос решил.
Как обычно проблема крылась в невнимательности.
DDS AD9834 имеет регистр частоты размером 28 бит
Для записи используется два слова по 16 бит. где биты 15 и 14 есть адрес куда записывать. То есть старшие два бита адрес остальные 14 данные. Послав два раза по 16 бит
заполним регистр частоты. Так вот при инициализации я использовал константу для записи,предварительно вычислив ее, а вот при изменении частоты я ее вычислял на лету.
Вычислив из десятичного заданного значения 32-х битный делитель(двойное слово), я тупо делил его на два 16 битных слова и задав адрес в старших двух битах отправлял.
При этом терял два бита младшего 16 битного слова, забивая адрес в старшие два бита, и старшее 16-битное слово тоже было неправильным так как там недоставало двух бит.
:)
Устранив ошибку в логике вычислений двух 16-битных слов проблема решилась.
Если кому охота посмотреть видео то по ссылке 100 Мбайт файл. Почему то у меня вид сбоку получился в плеере...

https://disk.yandex.ru/i/7hj0VBzcG182tw
DDS генератор синхронизированный

0


Вы здесь » Форум про радио и не только » Консультации » Синхронирзированные генераторы DDS на AD9834


создать форум