STM32-ЦАП+ПДП формируем несколько частот
Не давно в комментариях к статье о работе с ЦАП и ПДП, был вопрос о формировании нескольких частот, точнее о смене частот при использовании ЦАП+ПДП в качестве генератора (читать). Решений может быть несколько, я воспользовался самым простым.
Контроллер ПДП может работать в двух режимах: нормальном и цикличном.
В нормальном режиме после передачи установленного количества данных, контроллер “говорит” об окончании передачи и останавливается, соответственно в циклическом режиме по окончании передачи он автообновляется и начинает передачу данных заново. Так же в циклическом режиме нельзя обновить количество передаваемых данных, можно только менять адреса источника данных.
Приведенный ниже пример основан на коде описанном в статье STM32–ЦАП + ПДП.
Нормальный режим работы ПДП
Допустим нам необходимо сформировать последовательно несколько частот: 500Гц, 2000Гц и 2200Гц, с определенным интервалом обновления (формируемый сигнал синус).
Зададимся частотой дискретизации: 100 кГц.
Рассчитаем для каждой частоты один период данных:
Сконфигурируем ПДП на генерацию в начальный момент частоты 500Гц:
Смену частот (данных) будем производить по окончании передачи одного периода, для этого необходимо настроить прерывания по окончанию передачи:
и настроить контроллер прерываний:
ну вот, теперь осталось только в обработчике менять частоты:
Ну вот и все.
Попробуем собрать мысли.
Сразу после “включения” мк у нас начинает формироваться первый период частоты 500Гц, по окончании передачи в обработчике прерываний настраиваем ПДП на новые данные, и далее по кругу…
Количество периодов каждой частоты можно менять:
Фотография сигнала (сори за качество)
Циклический режим работы ПДП
Примера для данного режима пока нет, но скоро будет в виде DDS генератора с плавной перестройкой частоты.
Проект целиком:
comments powered by Disqus