О авторе статьи:
Я давно на пенсии ( возраст 77 лет) и вся трудовая деятельность была посвящена разработкам электронных устройств для научных исследований, а также организации и проведению натурных исследований и обработке полученных экспериментальных данных. Молодым специалистом застал уходящую эпоху ламповых устройств и приходящую технологическую революцию транзисторных разработок, затем прошел технологическую эпоху интегральных микросхем, больших интегральных микросхем и на закате трудовой деятельности пришла эпоха микроконтроллеров (микропроцессоров) . К этому времени стали доступны персональные компьютеры, была заложена теоретическая база цифровой обработки сигналов и программные среды отладки микроконтроллеров.
Мои начальные сведения о микроконтроллерах типа STM32, о средах программирования CooCox CoIDE, STM32CubeMX, Keil uVision4, Keil uVision5, о цифровых фильтрах различного типа, а также о пакете прикладных программ для решения задач ( в части цифровых фильтров) MATLAB относятся к периоду 2015-2016 г.
При рассмотрении данной темы в интернете в основном встречается большое количество теоретического материала, - статьи, лекции, выдержки из книг, курсовые работы и др., однако они не дают однозначного ответа как практически реализовать цифровые фильтры нижних частот (ФНЧ) на микроконтроллерах общего применения.
Для решения подобной задачи принимались во внимание следующие факторы.
Проектирование цифровых фильтров начинается с задания определенных параметров, типа фильтра (КИХ, БИХ), структурной схемы, расчета коэффициентов и др. Чтобы не заниматься сложными математическими вычислениями в настоящее время используются программы моделирования цифровых фильтров. Например, на бытовом уровне давно забытая "WinFilter" и наиболее продвинутая и широко используемая программа GUI FDATool (Filter Design and Analysis Toolbox - средства проектирования и анализа фильтров) как составная часть программного обеспечения MATLAB различных версий.
Самой удобной и наиболее функциональной по мнению разработчиков является программа GUI FDATool. Эта программа дает графическое представление частотной и фазовой характеристик, групповой и фазовых временных задержек и многое другое для описания цифровых фильтров.
На рис.1 в качестве примера приведена частотная характеристика фильтра нижних частот с бесконечной импульсной характеристикой (БИХ) типа Elliptic 7-го порядка с частотой дискретизации 10 кГц и частотой среза 1,2 кГц с неравномерностью в полосе пропускания 1 дБ и затуханием в полосе заграждения 80 дБ.
В результате были реализованы различного типа (КИХ, БИХ) цифровые фильтры нижних частот при задании набора исходных параметров (частоты дискретизации и граничные частоты полосы пропускания и полосы задерживания, неравномерность в полосе пропускания, затухание в полосе задерживания, порядок фильтра , алгоритм и структуры обработки) на выбранных контроллерах, причем экспериментальные частотные характеристики с высокой точностью повторяют проектные данные моделей, построенные на основе программных средств MATLAB.
На рис. 2-5 представлены осциллограммы цифрового фильтра нижних частот на основе микроконтроллера STM32F051K8. Осциллограмма синего цвета - сигнал на выходе ЦАП после обработки цифровым фильтром , желтого цвета - сигнал с генератора на входе АЦП. За основу были приняты параметры цифрового фильтра нижних частот модели, приведенной выше.
Вывод: На основе различных модификаций микроконтроллеров STM32 можно создавать цифровые фильтры нижних частот типа КИХ или БИХ, однако имеется ряд ограничений, связанных с отсутствием оптимизации обработки отсчетов сигнала и ограничением порядка фильтров из-за их неустойчивости. Это ограничивает верхнюю частоту дискретизации цифровых фильтров. Например, для микроконтроллера STM32F415RG ее величина ограничена 50 кГц.
Кроме того, подобные подходы пока не дали положительных результатов в отношении цифровых полосовых фильтров и фильтров высоких частот.