реклама на сайте
подробности

 
 
> STM32F3 FPU для фильтрации, обработка данных с магнетометра и акселерометра
serjj
сообщение Jun 10 2015, 09:16
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



Всем доброго дня.
Еще немного нубских вопросов про stm от плисовода.. )
Есть STM32F303, который принимает данные с датчиков LSM303DLHC (магнетометр + акселерометр) и L3GD20 (гироскоп, на самом деле измеряет угловую скорость). Итого получается 9 каналов, предварительно: 3x220Гц, 3х50Гц, 3х95Гц. В силу низкочастотного характера измеряемых процессов, ставлю ФНЧ с достаточно узкой полосой. На каждом канале сначала делаю медианный фильтр с окном 7, а потом FIR фильтр с порядком 32-64. Все операции во floating point. Затем децимация всех каналов до 10 Гц и там окончательные рассчёты также в плавучке и передача данных "вверх". Вероятно, что какой-то еще значительной вычислительной нагрузки сверх описанной не будет. Пока проверял с фильтрами до 48 порядка по отдельным группам каналов, вроде все ок.
Интересуют вычислительные возможности FPU на борту - какие тут могут быть подводные камни при запуске всех каналов? Или если я захочу, например поднять порядки FIR фильтров до 64-128? Как правильно оценить его силы и на какой вычислительной загрузке лучше остановиться, чтобы не было неожиданных сюрпризов, когда он начнёт не успевать обрабатывать поток. Или я может быть зря беспокоюсь и такие полосы для него это фигня и смело можно лепить длинные фильтры?
Заранее благодарен!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
serjj
сообщение Jun 10 2015, 10:27
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



Цитата
Ну во-первых заранее приготовьтесь делать ваш фир через бпф.
В облом считать, но есть ощущение что вам хватит.
Опять же, не знаю что там в F3xx, но на F4xx комплексный бпф 1024 точки 16 бит это чуть менее 100000 тактов.

А почему через бпф? Он и в лоб работает. У меня же не супер длины и фильтр не комплексный, не вижу какой тут будет выигрыш от бпф.

Цитата
Если у Вас уже есть какие-то расчёты и хочется знать, что будет при кратном увеличени их кол-ва, то в чём проблема измерить текущую загрузку CPU и сделать прогноз на основании этих данных?

Пока есть только наблюдения по работе в отдельных группах каналов и анализ этих наблюдений в матлабе (пользовался STM Studio для захвата данных).

Цитата
Попробуйте вывести на пин время работы фильтра. Т.е. перед началом работы фильтра пин устанавливайте в единичку,
после работы фильтра пин устанавливайте в 0. Осциллографом можно посмотреть сколько мкс длится работа. Поделив на период можно получить загрузку CPU.

Интересная идея, думаю грубо с помощью таймера можно еще получить оценку..

Если данные будут не успевать отрабатываться, это как-то можно отследить через тот же STM Studio?
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jun 10 2015, 10:32
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(serjj @ Jun 10 2015, 16:27) *
Если данные будут не успевать отрабатываться, это как-то можно отследить через тот же STM Studio?

Программу вообще-то пишете Вы, значит Вы и должны знать когда переполняются Ваши FIFO-буфера (или что там используете для буферизации данных).
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 02:21
Рейтинг@Mail.ru


Страница сгенерированна за 0.01717 секунд с 7
ELECTRONIX ©2004-2016