STM32, первые впечатления.

Кто любит RISC в жизни, заходим, не стесняемся.
linkov1959
Держит паяльник хвостом
Сообщения: 923
Зарегистрирован: Пн сен 10, 2018 19:16:28

Re: STM32, первые впечатления.

Сообщение linkov1959 »

НЧ фильтр с постоянной времени 0.001 c. Выборка 50кГц.
Прога в микробейсике.

program filtr
dim akk as longword
dim Vout as word
dim Vin as word
main:
ADC1_Init()
ADC_Set_Input_Channel(6)

GPIO_Digital_Output(@GPIOB_BASE, _GPIO_PINMASK_ALL)

while TRUE
Vin = ADC1_Read(6)
akk = akk + Vin - Vout
Vout = akk / 50
GPIOB_ODR = Vout
wend
end.

Сигнал на выходе ЦАПа из резисторов. На входе меандр 240 Гц.
filtr.jpg
(65.96 КБ) 253 скачивания
Реклама
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25290
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: STM32, первые впечатления.

Сообщение КРАМ »

[uquote="linkov1959",url="/forum/viewtopic.php?p=3884266#p3884266"]НЧ фильтр с постоянной времени 0.001 c. Выборка 50кГц.[/uquote]
Из приведенной программы следует, что реализован IIR LPF первого порядка в узких кругах именуемый ЭКСПОНЕНЦИАЛЬНЫМ ФИЛЬТРОМ СГЛАЖИВАНИЯ имеющим простейшую математику вида:
Uout [i+1]=(1-b)*Uout+b*Uin[i+1], где b<1.
Реализован коэффициент фильтра b=0,02.
Из той же программы совершенно не следует, что частота выборок равна 50 кГц, как не следует и соответствие фильтра этой частоте....
:dont_know:
:tea:
Экспоненциальные фильтры обычно применяют не для фильтрации сигналов, а для сглаживания пульсаций. Это канешна тоже фильтрация, но самая примитивная.
Странно ее реализовывать на АРМах. Такой фильтр на предложенной частоте дискретизации может переварить и восьмибитник...
И уж тем более, для его расчета не требуется никакая программа.
Реклама
linkov1959
Держит паяльник хвостом
Сообщения: 923
Зарегистрирован: Пн сен 10, 2018 19:16:28

Re: STM32, первые впечатления.

Сообщение linkov1959 »

КРАМ, это была проба пера, но я ценю Ваши комментарии. Прога Filter Solutions мне выдала готовый код на Си, но я с ним не разобрался. Алгоритм отрабатывал ручками в визуал бейсике. Если завтра сам не разберусь, то понадобится Ваша помощь. Если внимательно смотреть на выходной сигнал с ЦАПа, то видны некоторые дефекты, два пина PB3 и PB4 оказались нерабочими. То ли брак, то ли фаза на корпусе компа виновата. Обязательно заземляйте комп и другие сетевые приборы. Евростандарт обязывает ставить кондеры с фазы на корпус. Европейцы ружья кирпичом не чистят и имеют на вилках третий контакт заземления.:)
tonyk
Это не хвост, это антенна
Сообщения: 1309
Зарегистрирован: Вт ноя 19, 2019 06:10:18

Re: STM32, первые впечатления.

Сообщение tonyk »

А если обладает, то почему бы ему пару книжек по цифровой обработке сигналов не осилить?
Eddy_Em, не осилит. У тебя на на лице учёная дотошность написана. Для тебя осиливать- профессиональная привычка. У поколения некст терпежа хватает на новостную заметку в один экран. Не суди людей, тем более молодых, по себе.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Eddy_Em
Собутыльник Кота
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01
Контактная информация:

Re: STM32, первые впечатления.

Сообщение Eddy_Em »

tonyk, если не осилит, то пусть сливается в канализацию! Тем паче, у нас нонче "капитализм", и слабые просто вымирают. Псевдоестественный отбор...
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Реклама
linkov1959
Держит паяльник хвостом
Сообщения: 923
Зарегистрирован: Пн сен 10, 2018 19:16:28

Re: STM32, первые впечатления.

Сообщение linkov1959 »

Filter Solutions генерирует не совсем корректный код. Подправил, как сам понимаю и заработало.
Там еще все типы float и пришлось переводить в целые для быстродействия. А раз нельзя тупо копировать, то буду еще переводить на бейсик.
Реклама
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: STM32, первые впечатления.

Сообщение Мурик »

linkov1959 писал(а):Там еще все типы float и пришлось переводить в целые для быстродействия.
Возьмите МК с аппаратной поддержкой плавающей точки (M4, M7).
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25290
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: STM32, первые впечатления.

Сообщение КРАМ »

[uquote="linkov1959",url="/forum/viewtopic.php?p=3884811#p3884811"]Там еще все типы float и пришлось переводить в целые для быстродействия[/uquote]
Рекурсивные фильтры нельзя переводить в целые. Нужен либо флоат, либо фикспойнт.
Иначе рекурсивный фильтр будет иметь порог в связи с умножением входного сигнала на коэффициент меньше 1.
Вы плавно приходите к пониманию простого факта - DSP не для школьнегов. За внешней якобы простотой кроется фундаментальная теория. И без ее понимания ничего путного получить невозможно.
Но у меня есть практический совет. Переходите на FIR. Он гораздо проще в реализации реальных фильтров с заданной АЧХ, а не эллиптического недофильтра.
Форма АЧХ в FIR определяется оконной функцией. А кроме того, можно использовать штатные DSP инструкции процессора в очень простом исполнении.
linkov1959
Держит паяльник хвостом
Сообщения: 923
Зарегистрирован: Пн сен 10, 2018 19:16:28

Re: STM32, первые впечатления.

Сообщение linkov1959 »

КРАМ, мне реально нужен полосовой 4-го порядка до 1кГц с полосой 10-20Гц.
Я пробовал FIR в Filter Solutions, мне не понравился. В целые должно перевестись до 4-го порядка точно.
Целый час потратил, что бы расшифровать выражение [i<3?i:4-i] :)
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25290
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: STM32, первые впечатления.

Сообщение КРАМ »

[uquote="linkov1959",url="/forum/viewtopic.php?p=3884948#p3884948"]В целые должно перевестись до 4-го порядка точно.[/uquote]
НЕТ!!!
Даже первый порядок - нет. Я объяснил почему. Только фикспойнт, как разновидность целого, но с фиксированной дробной частью.
На FIR такой проблемы нет. Там разрядность аккумулятора решает все, а числа могут быть целые и без дробной части.
[uquote="linkov1959",url="/forum/viewtopic.php?p=3884948#p3884948"]Я пробовал FIR в Filter Solutions, мне не понравился.[/uquote]
Чем конкретно не понравился?
tonyk
Это не хвост, это антенна
Сообщения: 1309
Зарегистрирован: Вт ноя 19, 2019 06:10:18

Re: STM32, первые впечатления.

Сообщение tonyk »

Вы плавно приходите к пониманию простого факта - DSP не для школьнегов. За внешней якобы простотой кроется фундаментальная теория. И без ее понимания ничего путного получить невозможно.
Вот как раз теорию читать и не хотят. Потому и не понимают нифига. Я двумя руками "за" то, о чём говорит КРАМ. Для осознания глубины непонимания вопроса, нарисуйте схему аналоговой части своего цифрового фильтра. Нарисуете с первого раза правильно- пишите номер телефона, а я перевожу на него деньги на пиво.
linkov1959
Держит паяльник хвостом
Сообщения: 923
Зарегистрирован: Пн сен 10, 2018 19:16:28

Re: STM32, первые впечатления.

Сообщение linkov1959 »

КРАМ, АЧХ кривобокая и в коде сотни коэффициентов.
tonyk, Вы не в теме.
tonyk
Это не хвост, это антенна
Сообщения: 1309
Зарегистрирован: Вт ноя 19, 2019 06:10:18

Re: STM32, первые впечатления.

Сообщение tonyk »

tonyk, Вы не в теме.
Я-то как раз в теме, а тот кто написал, что я не в теме, не понял сути моего вопроса. И подвоха. Н-да, разберитесь с теорией для начала. С такой базой лезть в эту область не стОит.
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25290
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: STM32, первые впечатления.

Сообщение КРАМ »

[uquote="linkov1959",url="/forum/viewtopic.php?p=3885064#p3885064"]КРАМ, АЧХ кривобокая и в коде сотни коэффициентов.[/uquote]
Эти "сотни коэффициентов" являются той самой оконной функцией. Длина оконной функции равна длине буфера сигнала. Форма АЧХ определяется формой оконной функции. ФЧХ абсолютно линейна. Фильтр абсолютно устойчив. Код фильтра при использовании DSP инструкций РОВНО ТРИ ИНСТРУКЦИИ. То есть фильтр - это тупо сумма произведений отсчетов в буфере на значения оконной функции с одинаковыми индексами. Ну еще нормировка после этого.
Что касается кривобокости, то полагаю, что Вы пытались задать некорректные условия реализации фильтра. БИХ при таких условиях просто возбуждается.
Открыл онлайн расчет КИХ (FIR) и за одну минуту получил вот такую АЧХ:
Изображение
Стесняюсь спросить... А где тут "кривобокость? :dont_know: :tea:
Параметры:
Центральная частота 1кГц
Частота дискретизации 10 кГц
Полоса пропускания 100 Гц
Подавление вне полосы -80дБ
Неравномерность в полосе 1дБ.
Итого 601 тапов фильтра.
При системной частоте МК 100 МГц фильтр будет посчитан примерно за 6 мкс. При частоте дискретизации 10 кГц (период отсчетов 100 мкс) - более чем легкий режим.
http://t-filter.engineerjs.com/
[uquote="linkov1959",url="/forum/viewtopic.php?p=3885064#p3885064"]tonyk, Вы не в теме.[/uquote]
Вопрос был про антиалиасинг. Актуальный вопрос для полосового фильтра, патамушта имеет место быть противоречие с высокой частотой дискретизации - фильтр перестает быть реализуемым и потребуется два последовательных фильтра с децимацией между ними, тогда зеркальные частоты будут значительно отодвинуты от полосы пропускания фильтра и реализация антиалиасинга по входу АЦП будет простой. В предложенном выше фильтре для обеспечения подавления зеркальных частот на величину заграждения самого фильтра в антиалиасинге требования оказываются слишком высокими - примерно -35 дБ/окт.
Но ситуация с БИХ будет примерно такой же.
linkov1959
Держит паяльник хвостом
Сообщения: 923
Зарегистрирован: Пн сен 10, 2018 19:16:28

Re: STM32, первые впечатления.

Сообщение linkov1959 »

По полосовым фильтрам 4-го порядка такой расклад выходит.
На каждую выборку приходится десяток умножений Float. Было 20мкС, стало 25.
Разогнал АЦП с 12 до 18 Мгц, работает стабильно, стало опять 20мкС.
Выходит, что максимальная частота выборки 50кГц. Ее нужно задавать таймером.
Повысить можно, если использовать stm32f401 c аппаратным Float и DMA c АЦП. Но в stm32f401 нет ни одного полного порта и придется ставить stm32f407 с внутренним ЦАП, а он дорогой, если на плате.
Прога Filter Solutions выдает код на Си. Замучился переводить в микроБейсик и поставил себе микроСи.
Почти тоже самое, легко освоился.
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: STM32, первые впечатления.

Сообщение Мурик »

linkov1959 писал(а):Выходит, что максимальная частота выборки 50кГц.
Нет. В STM32F103 максимальная частота оцифровки 1 миллион выборок в секунду.
linkov1959 писал(а):Повысить можно, если использовать stm32f401 c аппаратным Float и DMA c АЦП.
Что мешает в STM32F103 использовать таймер+АПЦ+DMA? Я об этом уже писал. https://radiokot.ru/forum/viewtopic.php ... 4#p3882554
linkov1959
Держит паяльник хвостом
Сообщения: 923
Зарегистрирован: Пн сен 10, 2018 19:16:28

Re: STM32, первые впечатления.

Сообщение linkov1959 »

Мурик, Float вычисления тормозят. Пока мне 50кГц даже много, буду на 10-20кГц работать.
Сам по себе STM32F407 не дорогой, но придется плату самому делать, зато ЦАП внутри. Моя утюжная технология пока не справляется, но будем пробовать улучшить.
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: STM32, первые впечатления.

Сообщение Мурик »

Тогда можно попробовать STM32H750VBT6. Стоит примерно как STM32F407.
Аппаратно поддерживает float и double. Работает на частоте 480 МГц.
linkov1959
Держит паяльник хвостом
Сообщения: 923
Зарегистрирован: Пн сен 10, 2018 19:16:28

Re: STM32, первые впечатления.

Сообщение linkov1959 »

Мурик, шустрый кристалл и ЦАП есть. Я с внутренним ЦАП не работал. Там аналоговый выход коммутируется на любой пин?
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25290
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: STM32, первые впечатления.

Сообщение КРАМ »

[uquote="linkov1959",url="/forum/viewtopic.php?p=3885967#p3885967"]По полосовым фильтрам 4-го порядка такой расклад выходит.
На каждую выборку приходится десяток умножений Float. Было 20мкС, стало 25.
Разогнал АЦП с 12 до 18 Мгц, работает стабильно, стало опять 20мкС.[/uquote]Мыши кололись, плакали, но продолжали жрать кактус...
Какой то фееричный набор несуразностей...
Зачем нужно 18 МГц АЦП, если выборки 50 кГц? Впрочем, выборки 50 кГц так же ничем не обоснованы. Сигналы никак не определены от слова совсем.
Зачем применять рекурсивные фильтры в МК с практически неограниченным объемом ОЗУ для таких задач? Просто чтобы получить геморрой с флоатами?
Основная проблема с флоат без FPU не умножения, а сложения-вычитания, ибо требуется многократное приведение к нормативному виду и обратно.

Добавлено after 8 minutes 19 seconds:
[uquote="Мурик",url="/forum/viewtopic.php?p=3885976#p3885976"]Что мешает в STM32F103 использовать таймер+АЦП+DMA?[/uquote]
Ну наверное рекурсивная фильтрация... :) Какой смысл в ДМА, если кольцевой буфер как таковой не нужен или он совсем короткий?
Ответить

Вернуться в «ARM»