- PVSM.RU - https://www.pvsm.ru -
Давно интересовал вопрос использования 16-битного АЦП STM32H7 для обработки I/Q сигналов в реальном времени.
Почти год ушел на эксперименты и реализацию КВ SDR приемника на базе Tayloe mixer и MCU STM32H723ZGT6, и вот что у меня получилось: принимаемый КВ диапазон 1...30МГц, вывод обработанного аудио через внутренний 12-битный ЦАП или вывод I/Q потока на ПК через UAC1.

Схема PDF [1]
Четырехслойная плата, размером 100х60мм, спроектирована таким образом, что не задействованные пины MCU выведены на PLS разъемы, для дальнейшего расширения проекта

Входная часть построена на детекторе Тейло

пробовал и схемы с трансформаторами, в том числе и с балансным включением, особых изменений не заметил. Пока остановился на данном варианте, но и он не лишен недостатка, разность в чувствительности между 160m и 10m диапазонами примерно 1..2dB, соответственно на десятке слабее.
С выхода смесителя на ключах сигналы поступают на инструментальные операционные усилители, которые обеспечивают хорошее подавление синфазных помех, и далее на активный ФНЧ 4-го порядка выполненный на ОУ по схеме Саллена-Ки

АЧХ ФНЧ, на картинке модели двух вариантов, 48кГц и ~24кГц

по факту такого ФНЧ оказалось не совсем достаточно, дело в том, что по краям спектра с полосой 48кГц, просматриваются алиасы от сильных сигналов на частотах примерно +/- 25..30 kHz от нулевой частоты после оцифровки. Но так как основная обработка сигнала выполняется вблизи нулевой частоты, с этим недостатком можно смириться!
Далее сигналы идут непосредственно на входы АЦП STM32H723ZGT6.
Ключевой смеситель тактируется дешевым генератором Si5351 с частотой х4

Код программы MCU написан в среде STM32CubeIDE, используются библиотеки HAL, TinyUSB (составное USB устройство) и CMSIS-DSP (цифровая обработка сигнала) входящей в состав STM32CubeMX. Почему HAL? А потому, что использование HAL это быстрый вход в разработку приложений на MCU STM32!
На дисплее отображается текущая частота настройки, активность AGC/NOTCH, уровень принимаемого сигнала по шкале S-metr, спектр водопада в полосе +/-24 kHz от нулевой частоты, ноль — это центр спектра водопада, на спектре отображаются границы полосы пропускания при демодуляции. В нижней части дисплея отображаются режимы функциональных трех кнопок. При подключении по USB к ПК, спектр водопада и уровень сигнала S-metr, не отображаются, выводится соответствующая надпись на дисплее

Все настраиваемые параметры хранятся во внешней флеш-памяти.
Управление осуществляется механическим энкодером с кнопкой, и тремя функциональными кнопками.
При подключении устройства к USB компьютера, в системе определяется составное USB устройство, COM порт, и аудио устройство записи.
Осваивал ЦОС сначала с разработки приложения [2]на C# для оценки/обработки сигналов с АЦП STM32H723

Приложение позволяет анализировать не только сырые данные I/Q, но и WAV файлы с I/Q сигналами.
На том же C# был написан генератор I/Q сигналов [3]

Режим работы АЦП MCU выбран как два независимых АЦП1/2, но тактируются они одним сигналом триггера тамера 8 с частотой 48 kHz, хотя в STM32 есть парный режим работы АЦП — Dual mode. Как утверждает документация от ST, в данном режиме выборка данных с двух АЦП происходит в один момент времени, но как я не бился с данным режимом, постоянно получал линейное увеличение зеркала сигнала при уводе частоты сигнала от нуля. Либо я читаю документацию поперек, либо что-то другое, чего я еще не знаю!
После оцифровки к сигналу применяются коррекции: DC — удаление постоянной составляющей, амплитудная и фазовая коррекции, коэффициенты этих коррекций, кроме DC для каждого диапазона свои. После коррекций сигнал отправляется в кольцевой буфер, далее в режиме подключения по USB к ПК сигналы I/Q отправляются в UAC1 для обработки на ПК, а в автономном режиме работы (без ПК), сигналы I/Q обрабатываются в MCU, выполняется быстрое преобразование Фурье (FFT) для спектра водопада, демодуляция SSB/CW, затем применяется АРУ и/или NOTCH фильтр, и в завершении своего цифрового пути, сигнал отправляется на внутренний ЦАП (цифро-аналоговый преобразователь), выход ЦАП внутри MCU направлен на внутренний операционный усилитель OPAMP1 который работает в качестве буфера, далее через простой RC ФНЧ, выполненный на R45 и C75, сигнал уже снимается либо на наушники, либо можно подать на аудио УМ для использования динамика. Вот как выглядит сигнал с внутреннего 12-ти битного ЦАП без RC ФНЧ и с RC ФНЧ


Внутренний ЦАП MCU тактируется тем же триггером таймера 8 что и АЦП. Внутренний ЦАП имеет разрядность 12 бит. Но если не быть аудиоманом, этого вполне достаточно для комфортного прослушивания как радиолюбительских так и вещательных КВ станций. Проводил эксперименты с подключением внешнего дешевого, но очень не плохого ЦАП на базе PCM5102 выполненного в виде отдельного модуля

тут уже разрядность можно использовать от 16 до 24 бит, и соответственно звук даже в варианте 16 бит на выходе этого ЦАП более приятный для восприятия.
Фрагменты кода ЦОС, есть у меня на сайте [4]. Там же и история проекта.
Дальше планирую кроме оптимизации наработанного, перейти и к передающей части!
В завершении данного повествования видео работы моего стенда, в ролике три сцены: работа приложения, автономная работа на внутренний ЦАП любительский диапазон 40м и вещательный диапазон 41м, сигнал с антенны CW40100, подается напрямую на вход смесителя без ДПФ.
Тут несомненно есть еще над чем работать!
73!
Автор: R9OFG
Источник [5]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/sdr/448699
Ссылки в тексте:
[1] Схема PDF: https://r9ofg.ru/download/sdr_dev_v2-1-circuit/
[2] приложения : https://github.com/R9OFG/SDR_DEV_APP
[3] генератор I/Q сигналов: https://github.com/R9OFG/IQ_AUDIO_OUT
[4] Фрагменты кода ЦОС, есть у меня на сайте: https://r9ofg.ru/2026/03/26/%d0%b4%d0%b5%d1%82%d0%b5%d0%ba%d1%82%d0%be%d1%80-tayloe-%d0%b8-%d1%86%d0%b8%d1%84%d1%80%d0%be%d0%b2%d0%b0%d1%8f-%d0%be%d0%b1%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%ba%d0%b0-%d1%81%d0%b8%d0%b3%d0%bd%d0%b0-13/
[5] Источник: https://habr.com/ru/articles/1019090/?utm_source=habrahabr&utm_medium=rss&utm_campaign=1019090
Нажмите здесь для печати.