У меня есть MCU, управляющий 16-битным ЦАП через SPI (и дополнительный выход LDAC, который запускает обновление выхода ЦАП). MCU имеет предварительно рассчитанную синусоиду 1120 Гц в буфере длиной 364 байта (все вычисления в float32, округленные до uint16 для вывода ЦАП), дискретизированные на частоте 29120 Гц. В прерывании по таймеру обновление ЦАП запускается через LDAC, а затем новое значение загружается из буфера и отправляется через SPI. Обновление до последнего значения запускается в начале, чтобы уменьшить дрожание из-за состязания доступа к памяти с DMA. Прерывание имеет достаточно высокий приоритет, чтобы его нельзя было отложить.
Хотя визуально синус выглядит хорошо , БПФ моего Rigol DS1054Z за ЦАПом (до восстанавливающего фильтра) показывает значительные искажения:
Самый высокий пик - это требуемая частота 1120 Гц, остальные равны 260 Гц. Правый пик кажется всего на 5 дБ ниже основного!!
Джиттер на выводе LDAC составляет порядка +/- 0,25 мкс, что я считаю приемлемым по сравнению с временем выборки 34,3 мкс. Сам таймер работает от кристалла MCU и должен быть достаточно стабильным.
Какая проблема может привести к такому шаблону искажения? Какие могут быть способы диагностики и уменьшения его?
На всякий случай: ЦАП представляет собой AD5686, полное опорное напряжение составляет 5 В, амплитуда синусоиды составляет 25 мВ, что приводит к «переключению» примерно младших 10 бит.
Я подключил лабораторный генератор сигналов ко входу осциллографа, чтобы сравнить его с измеренным сигналом, и неожиданно увидел точно такой же спектр в его БПФ. При повышении частоты субгармоники ушли на 1250 Гц. Изменение глубины памяти в настройках «Aquire» с Auto на 6K убрало эффект. Похоже, что в БПФ DS1054Z возникает какая-то проблема с наложением имен.
===
РЕДАКТИРОВАТЬ: Внимательно посмотрев на изображение, вы увидите частоту дискретизации 5 кГц, показанную в окне БПФ. Было бы слишком мало семплировать выходной сигнал ЦАП перед фильтром. Удивительно, что он по-прежнему выглядит так же, если подается чистый сигнал 1120 Гц, поскольку он все еще ниже частоты Никвиста.
Дэйв Твид
Энди ака
Энди ака
Нил_UK
Мав
Мав
Дэйв Твид
Мав
Нильс Пипенбринк