Например TDA7294

Форум РадиоКот :: Просмотр темы - Спектральный анализ БПФ в CubeIDE
Форум РадиоКот
https://radiokot.ru/forum/

Спектральный анализ БПФ в CubeIDE
https://radiokot.ru/forum/viewtopic.php?f=59&t=195958
Страница 1 из 3

Автор:  linkov1959 [ Пн дек 09, 2024 19:23:25 ]
Заголовок сообщения:  Спектральный анализ БПФ в CubeIDE

STM32F4 поддерживает БПФ на уровне ядра, а библиотеки CubeIDE делают эти БПФ в две строчки кода.
Есть сигнал и нужно сделать его спектральный анализ и вывести на TFT экран с дополнительной информацией.
Для БПФ нужно получить входной массив данных об амплитуде сигнала на определенном отрезке времени через каждый тактовый шаг.
В CubeIDE это делается через настройки DMA ADC. Имея входной массив данных используем функции БПФ и получаем выходной массив данных, который выводим на экран в виде спектра и дополнительной информации об этом спектре. Входной массив представляет функцию амплитуды от времени, а выходной после БПФ функцию амплитуды от частоты.
Это теория.

Автор:  Gudd-Head [ Вт дек 10, 2024 19:26:19 ]
Заголовок сообщения:  Re: Спектральный анализ БПФ в CubeIDE

STM32F4 поддерживает БПФ на уровне ядра

не нашёл "fft" на сайте стм32ф4 https://www.st.com/en/microcontrollers- ... eries.html

Автор:  linkov1959 [ Ср дек 11, 2024 00:13:54 ]
Заголовок сообщения:  Re: Спектральный анализ БПФ в CubeIDE

На практике нужно уметь подключать в CubeIDE поддержку DSP, в настройках поставить галочку в DSP library и добавить одну строчку #ARM_MATH_CM4.
Тут можно посмотреть
А это код, который из массива input после БПФ создает массив output.
arm_rfft_fast_init_f32(&fftInstance,SamplesFFT);
arm_rfft_fast_f32(&fftInstance, input, output, 0);

Автор:  tonyk [ Ср дек 11, 2024 00:26:31 ]
Заголовок сообщения:  Re: Спектральный анализ БПФ в CubeIDE

Gudd-Head писал(а):
не нашёл "fft" на сайте стм32ф4

Ну если именно так вбить Гуглу, то ничего не найдёте, а вот если то же самое на аглицком, то запросто ищется.
https://www.st.com/en/embedded-software ... pdemo.html
https://www.st.com/resource/en/applicat ... ronics.pdf

Ну и до кучи:
https://qna.habr.com/q/340670

Автор:  Gudd-Head [ Ср дек 11, 2024 12:41:11 ]
Заголовок сообщения:  Re: Спектральный анализ БПФ в CubeIDE

Там просто подключаются какие-то математические библиотеки.

Автор:  AlanDrakes [ Ср дек 11, 2024 17:49:15 ]
Заголовок сообщения:  Re: Спектральный анализ БПФ в CubeIDE

STM32F4 поддерживает БПФ на уровне ядра


Я как-то пользовался вот этой библиотекой на STM32F030. Вообще без каких-либо махинаций с плавающей точкой. Данные подаются в виде int32_t [-32768, +32767] в массиве любого размера в степени двойки (хотя ниже 128 не проверял). Была задача поймать сигнал в заданном диапазоне частот. Проблема была только в том, что сигнала могло не быть, а на выходе что-то находилось. Ну и "поймать" частоту нужно было, не имея экрана. Попутно перед отправкой данных в саму фукнцию натягивал на буфер Гауссово окно.

Автор:  linkov1959 [ Ср дек 11, 2024 20:18:18 ]
Заголовок сообщения:  Re: Спектральный анализ БПФ в CubeIDE

Спектральный анализ не цветомузыка, а имеет практическое применение во многих областях. Из готовых решений мне больше всего понравилась программа под смартфон Spectrum Analyser_1.43_APKPure, которая строит спектр и выводит данные про основную гармонику. Прекрасная программа, но мне нужно выводить данные частоты и амплитуды на все заметные гармоники с декодировкой.

Автор:  jcxz [ Пт дек 13, 2024 09:50:31 ]
Заголовок сообщения:  Re: Спектральный анализ БПФ в CubeIDE

не нашёл "fft" на сайте стм32ф4 https://www.st.com/en/microcontrollers- ... eries.html
БПФ нужно умножение и сложение. Ядро STM32F4 умеет их делать? Умеет. Значит поддерживает БПФ на уровне ядра. Такая вот "логика". :)))
С такой "логикой" можно доказать поддержку ядром STM32F4 чего угодно:
Алгоритм игры в шахматы требует команд умножения и сложения. Ядро STM32F4 их умеет. Значит шахматы "поддерживаются на уровне ядра STM32F4". :))) если следовать "логике" linkov1959

Автор:  AlanDrakes [ Пт дек 13, 2024 12:41:37 ]
Заголовок сообщения:  Re: Спектральный анализ БПФ в CubeIDE

Спектральный анализ не цветомузыка, а имеет практическое применение во многих областях.

А с этим вроди бы никто пока и не спорил.
Есть сигнал и нужно сделать его спектральный анализ и вывести на TFT экран с дополнительной информацией.
Для БПФ нужно получить входной массив данных об амплитуде сигнала на определенном отрезке времени через каждый тактовый шаг.

> Есть сигнал - Уже хорошо. Потому что измерять шум, как приходилось мне - задача довольно скучная. Теперь определитесь с тем, как точно Вы хотите его измерить (количество бит и количество значащих бит). Если 12 (10 значщих) - хватит, то STM32 Вам в помощь. Если мало - придётся ставить внешний АЦП, который сможет выдать большую точность и большую битность.

> через каждый тактовый шаг - Что сие есть? Частота квантования сигнала? Размер окна выборки? Что?

> нужно сделать его спектральный анализ - Разрешение спектра в герцах?

Из готовых решений мне больше всего понравилась программа под смартфон Spectrum Analyser_1.43_APKPure, которая строит спектр и выводит данные про основную гармонику.

Ну Вы сравнили. Программа, которая использует оперативную память телефона (которая сейчас редко меньше чем 2ГБ) и оперативную память микроконтроллера (которая редко больше 1МБ, а в Вашем случае не превышает 320кБ, в которой так же нужно хранить принимаемые данные, преобразовывать их во Float (если мало 16 бит), входной буфер для БПФ преобразования, выходной буфер результата, экранный буфер... памаяти уже не кажется ТАК много).

Постарайтесь определиться с тем, что Вам нужно получить на выходе. Может быть подсказка будет куда лучше простых рассуждений и шуток. А может и не потребуется, так как в правильно составленном вопросе уже содержится половина ответа.

Автор:  КРАМ [ Пт дек 13, 2024 14:59:57 ]
Заголовок сообщения:  Re: Спектральный анализ БПФ в CubeIDE

STM32F4 поддерживает БПФ на уровне ядра, а библиотеки CubeIDE делают эти БПФ в две строчки кода.
.....
Это теория.

Это традиционная чушь.
:facepalm:
В ядре 4-х Кортексов нет векторной математики и тригонометрии, а значит нет ничего для ускорения БПФ.
Ну и упомянутые "две строчки кода" являются всего лишь вызовом громоздких по времени функций библиотеки.
мне нужно выводить данные частоты и амплитуды на все заметные гармоники с декодировкой.

Из этого не следует необходимость БПФ. Необходимость БПФ определяется потребным количеством фильтров и их полосой пропускания.

Автор:  linkov1959 [ Пт дек 13, 2024 18:04:27 ]
Заголовок сообщения:  Re: Спектральный анализ БПФ в CubeIDE

Сейчас ремонтирую древний прибор, который выводит на 7-сегментный 9разрядный индикатор список частот и их амплитуд в рельсовой цепи в виде бегущей строки. Если частоты в допуске, то дополнительно горят светодиоды на каждую рабочую частоту в диапазоне 50-775Гц. Частоты 725 и 775 гц различаются еще по модуляции 8 и 12 Гц. Нерабочие частоты тоже нужно отслеживать хотя бы до 5кГц.. Нужно сделать такой прибор на STM32 и дисплее TFT.

Добавлено after 22 minutes 59 seconds:
КРАМ, а DSP это не ускорение?

Автор:  КРАМ [ Пт дек 13, 2024 18:04:39 ]
Заголовок сообщения:  Re: Спектральный анализ БПФ в CubeIDE

Определяете список частот и разрешение по частоте (полосу фильтра), а так же весь диапазон частот для анализа. Делите весь диапазон на полосу одного фильтра и получаете требования к БПФ.
А требование к ДПФ равно всего лишь количеству фильтров.
Таким образом вы выясняете что требует меньше ресурсов, а значит работает быстрее. И не забудьте про оконную функцию, которая обязательна в любом случае. Если конечно вам нужна динамика больше 12 дБ.

Автор:  linkov1959 [ Пт дек 13, 2024 18:15:36 ]
Заголовок сообщения:  Re: Спектральный анализ БПФ в CubeIDE

КРАМ, функция DSP нужна или можно stm32f103 без этой функции?

Автор:  КРАМ [ Пт дек 13, 2024 18:27:36 ]
Заголовок сообщения:  Re: Спектральный анализ БПФ в CubeIDE

Нет никакой "функции DSP". Есть некоторые DSP инструкции и их желательно включить в компиляторе.

Автор:  linkov1959 [ Пт дек 13, 2024 18:34:18 ]
Заголовок сообщения:  Re: Спектральный анализ БПФ в CubeIDE

КРАМ, Значит stm32f4xx. Требования к БПФ можно изменять в программе и смотреть результат - обратная связь называется. Полоса фильтра один процент от несущей, проца stm32f401 должно хватить.

Автор:  AlanDrakes [ Пт дек 13, 2024 18:36:24 ]
Заголовок сообщения:  Re: Спектральный анализ БПФ в CubeIDE

Сейчас ремонтирую древний прибор, который выводит на 7-сегментный 9разрядный индикатор список частот и их амплитуд в рельсовой цепи в виде бегущей строки

Странное изначальное решение, но... ладно, допустим.

Частоты 725 и 775 гц различаются еще по модуляции 8 и 12 Гц.

То есть, сигналы с частотой 725Гц и 775Гц дополнительно модулированы ещё и низкочастотными волнами в 8 и 12Гц?

Нерабочие частоты тоже нужно отслеживать хотя бы до 5кГц

Разрешение по частоте примерно получается по такой формуле:
Частота Сэмплирования / Количество Отсчётов в буфере
Например, для выборок с частотой 24кГц и размера буфера в 1024 байта получится ~24Гц / отсчёт. Довольно грубый обзор.

Для более точного - можно использовать 24кГц / 8192 отсчёта. Здесь уже будет около 3Гц / отсчёт. Но вычисляться такое будет кратно дольше.

а DSP это не ускорение?

Его ядро всего лишь умеет инструкции по работе с плавающей точкой.
https://microsin.net/programming/dsp/st ... cmsis.html - Здесь даже свели примеры скорости вычислений БПФ (FFT) на разных ядрах.

Хм.. надо бы посмотреть в отладчике, сколько целочисленная библиотека требует времени на вычисления.

Автор:  КРАМ [ Пт дек 13, 2024 18:39:40 ]
Заголовок сообщения:  Re: Спектральный анализ БПФ в CubeIDE

Дело не только в fpu, но и в mac инструкциях.

Автор:  jcxz [ Пт дек 13, 2024 23:03:05 ]
Заголовок сообщения:  Re: Спектральный анализ БПФ в CubeIDE

Нет никакой "функции DSP". Есть некоторые DSP инструкции и их желательно включить в компиляторе.
Точнее - "DSP-подобные". Имеющие некоторые возможности архитектуры DSP. До настоящих возможностей DSP-ядер ARM-у как пешком до Луны.

Автор:  linkov1959 [ Пт дек 13, 2024 23:41:41 ]
Заголовок сообщения:  Re: Спектральный анализ БПФ в CubeIDE

Запустил пробу на F401 и ILI9341. От таймера пока не получилось, АЦП с DMA молотит без останова и что бы получить спектр до 10кГц выставил 16384 отсчета. На чистый синус столбик с дребезгом и часто зависает, но DSP работает, картинка есть.

Автор:  КРАМ [ Сб дек 14, 2024 05:16:45 ]
Заголовок сообщения:  Re: Спектральный анализ БПФ в CubeIDE

Вы занимаетесь наивной ерундой, пытаясь приспособить чужую вундервафлю под свои нужды.
Это так не работает, придется разбираться по существу.
Тем более, что это не сложно.
Точнее - "DSP-подобные". Имеющие некоторые возможности архитектуры DSP. До настоящих возможностей DSP-ядер ARM-у как пешком до Луны.

Это именно так. У обсуждаемых кортексов нет SIMD и они не могут быть VLIW.
Но очень условно регистровые MAC-инструкции называют DSP-инструкциями.

Страница 1 из 3 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/