STM32F4 поддерживает БПФ на уровне ядра, а библиотеки CubeIDE делают эти БПФ в две строчки кода. Есть сигнал и нужно сделать его спектральный анализ и вывести на TFT экран с дополнительной информацией. Для БПФ нужно получить входной массив данных об амплитуде сигнала на определенном отрезке времени через каждый тактовый шаг. В CubeIDE это делается через настройки DMA ADC. Имея входной массив данных используем функции БПФ и получаем выходной массив данных, который выводим на экран в виде спектра и дополнительной информации об этом спектре. Входной массив представляет функцию амплитуды от времени, а выходной после БПФ функцию амплитуды от частоты. Это теория.
_________________ [ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ] Измерить нннада?
На практике нужно уметь подключать в CubeIDE поддержку DSP, в настройках поставить галочку в DSP library и добавить одну строчку #ARM_MATH_CM4. Тут можно посмотреть А это код, который из массива input после БПФ создает массив output. arm_rfft_fast_init_f32(&fftInstance,SamplesFFT); arm_rfft_fast_f32(&fftInstance, input, output, 0);
Открыта удобная площадка с выгодными ценами, поставляющая весь ассортимент продукции, производимой компанией MEAN WELL – от завоевавших популярность и известных на рынке изделий до новинок. MEAN WELL.Market предоставляет гарантийную и сервисную поддержку, удобный подбор продукции, оперативную доставку по России.
На сайте интернет-магазина посетители смогут найти обзоры, интересные статьи о применении, максимальный объем технических сведений.
Заголовок сообщения: Re: Спектральный анализ БПФ в CubeIDE
Добавлено: Ср дек 11, 2024 12:41:11
Друг Кота
Карма: 67
Рейтинг сообщений: 1053
Зарегистрирован: Чт сен 18, 2008 12:27:21 Сообщений: 19349 Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения:0 Медали: 1
Там просто подключаются какие-то математические библиотеки.
_________________ [ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ] Измерить нннада?
Продукция MOSO предназначена в основном для индустриальных приложений, использует инновационные решения на основе более 200 собственных патентов для силовой электроники и соответствует международным стандартам. LED-драйверы MOSO применяются в системах наружного освещения разных отраслей, включая промышленность, сельское хозяйство, транспорт и железную дорогу. В ряде серий реализована возможность дистанционного контроля и программирования работы по заданному сценарию. Разберем решения MOSO
подробнее>>
AlanDrakes
Заголовок сообщения: Re: Спектральный анализ БПФ в CubeIDE
Я как-то пользовался вот этой библиотекой на STM32F030. Вообще без каких-либо махинаций с плавающей точкой. Данные подаются в виде int32_t [-32768, +32767] в массиве любого размера в степени двойки (хотя ниже 128 не проверял). Была задача поймать сигнал в заданном диапазоне частот. Проблема была только в том, что сигнала могло не быть, а на выходе что-то находилось. Ну и "поймать" частоту нужно было, не имея экрана. Попутно перед отправкой данных в саму фукнцию натягивал на буфер Гауссово окно.
Спектральный анализ не цветомузыка, а имеет практическое применение во многих областях. Из готовых решений мне больше всего понравилась программа под смартфон Spectrum Analyser_1.43_APKPure, которая строит спектр и выводит данные про основную гармонику. Прекрасная программа, но мне нужно выводить данные частоты и амплитуды на все заметные гармоники с декодировкой.
БПФ нужно умножение и сложение. Ядро STM32F4 умеет их делать? Умеет. Значит поддерживает БПФ на уровне ядра. Такая вот "логика". С такой "логикой" можно доказать поддержку ядром STM32F4 чего угодно: Алгоритм игры в шахматы требует команд умножения и сложения. Ядро STM32F4 их умеет. Значит шахматы "поддерживаются на уровне ядра STM32F4". если следовать "логике" linkov1959
Есть сигнал и нужно сделать его спектральный анализ и вывести на TFT экран с дополнительной информацией. Для БПФ нужно получить входной массив данных об амплитуде сигнала на определенном отрезке времени через каждый тактовый шаг.
> Есть сигнал - Уже хорошо. Потому что измерять шум, как приходилось мне - задача довольно скучная. Теперь определитесь с тем, как точно Вы хотите его измерить (количество бит и количество значащих бит). Если 12 (10 значщих) - хватит, то STM32 Вам в помощь. Если мало - придётся ставить внешний АЦП, который сможет выдать большую точность и большую битность.
> через каждый тактовый шаг - Что сие есть? Частота квантования сигнала? Размер окна выборки? Что?
> нужно сделать его спектральный анализ - Разрешение спектра в герцах?
Из готовых решений мне больше всего понравилась программа под смартфон Spectrum Analyser_1.43_APKPure, которая строит спектр и выводит данные про основную гармонику.
Ну Вы сравнили. Программа, которая использует оперативную память телефона (которая сейчас редко меньше чем 2ГБ) и оперативную память микроконтроллера (которая редко больше 1МБ, а в Вашем случае не превышает 320кБ, в которой так же нужно хранить принимаемые данные, преобразовывать их во Float (если мало 16 бит), входной буфер для БПФ преобразования, выходной буфер результата, экранный буфер... памаяти уже не кажется ТАК много).
Постарайтесь определиться с тем, что Вам нужно получить на выходе. Может быть подсказка будет куда лучше простых рассуждений и шуток. А может и не потребуется, так как в правильно составленном вопросе уже содержится половина ответа.
STM32F4 поддерживает БПФ на уровне ядра, а библиотеки CubeIDE делают эти БПФ в две строчки кода. ..... Это теория.
Это традиционная чушь. В ядре 4-х Кортексов нет векторной математики и тригонометрии, а значит нет ничего для ускорения БПФ. Ну и упомянутые "две строчки кода" являются всего лишь вызовом громоздких по времени функций библиотеки.
Сейчас ремонтирую древний прибор, который выводит на 7-сегментный 9разрядный индикатор список частот и их амплитуд в рельсовой цепи в виде бегущей строки. Если частоты в допуске, то дополнительно горят светодиоды на каждую рабочую частоту в диапазоне 50-775Гц. Частоты 725 и 775 гц различаются еще по модуляции 8 и 12 Гц. Нерабочие частоты тоже нужно отслеживать хотя бы до 5кГц.. Нужно сделать такой прибор на STM32 и дисплее TFT.
Добавлено after 22 minutes 59 seconds: КРАМ, а DSP это не ускорение?
Определяете список частот и разрешение по частоте (полосу фильтра), а так же весь диапазон частот для анализа. Делите весь диапазон на полосу одного фильтра и получаете требования к БПФ. А требование к ДПФ равно всего лишь количеству фильтров. Таким образом вы выясняете что требует меньше ресурсов, а значит работает быстрее. И не забудьте про оконную функцию, которая обязательна в любом случае. Если конечно вам нужна динамика больше 12 дБ.
КРАМ, Значит stm32f4xx. Требования к БПФ можно изменять в программе и смотреть результат - обратная связь называется. Полоса фильтра один процент от несущей, проца stm32f401 должно хватить.
Сейчас ремонтирую древний прибор, который выводит на 7-сегментный 9разрядный индикатор список частот и их амплитуд в рельсовой цепи в виде бегущей строки
Нерабочие частоты тоже нужно отслеживать хотя бы до 5кГц
Разрешение по частоте примерно получается по такой формуле: Частота Сэмплирования / Количество Отсчётов в буфере Например, для выборок с частотой 24кГц и размера буфера в 1024 байта получится ~24Гц / отсчёт. Довольно грубый обзор.
Для более точного - можно использовать 24кГц / 8192 отсчёта. Здесь уже будет около 3Гц / отсчёт. Но вычисляться такое будет кратно дольше.
Запустил пробу на F401 и ILI9341. От таймера пока не получилось, АЦП с DMA молотит без останова и что бы получить спектр до 10кГц выставил 16384 отсчета. На чистый синус столбик с дребезгом и часто зависает, но DSP работает, картинка есть.
Вы занимаетесь наивной ерундой, пытаясь приспособить чужую вундервафлю под свои нужды. Это так не работает, придется разбираться по существу. Тем более, что это не сложно.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения