STM32G4 Аппаратный цифровой фильтр FMAC

Поделиться
HTML-код
  • Опубликовано: 30 ноя 2024

Комментарии •

  • @TDMLab
    @TDMLab  3 года назад +11

    Спасибо всем кто пишет комментарии и ставит лайки, это важно для развития канала!
    Проблема, в коде на 10:05 в том, что указатель создан неправильно, моя ошибка, правильно так: (uint32_t*)&FMAC->WDATA
    С CMSIS для G4 в этом плане все в порядке, единственное, зачем надо следить, обращение ко всем регистрам FMAC должно быть только по словам "Access: word access", обращение в пол слова "half word" не работает.
    Код по ссылке в описании исправлен.

  • @TheNewWorld823
    @TheNewWorld823 Год назад +8

    Какой же сверхмощный мегатруд был предпринят
    Обязательно продошжайте!!!!!!
    Вы приносите огромную пользу всему человечеству, которое за это вам крайне благодарно)))!

  • @dimzen2120
    @dimzen2120 3 года назад +39

    Зачёт и уважуха, почёт первопроходцам берущим на себя наш гемор!

  • @bigbani1334
    @bigbani1334 3 года назад +16

    Спасибо огромное! Благодаря вашему видео я наконец смог понять суть цифровых фильтров!
    P.S. про БИХ фильтры послушал бы с огромным интересом

    • @floks700
      @floks700 3 года назад

      книжки надо читать и в инете всё есть. не стоит это изучать по видео программиста. это ведёт в тупик к убогим.

    • @kardanium
      @kardanium 2 года назад

      Там проще. Пять коэффициентов, три умножаются с входным потоком и складываются, как в КИХ, оставшиеся два умножаются с выходным потоком и вычитаются. Получается, что БИХ охвачиваются обратной связью.

  • @ehvl
    @ehvl 3 года назад +20

    Интересное видео, автор глубоко копает.
    Про тригонометрический ускоритель CORDIC хотелось бы узнать по подробнее.

    • @Engineer_Stepanov
      @Engineer_Stepanov 3 года назад

      Необходимо узнать. Мы не можем себе позволить прорехи в знаниях.

  • @denisyegorov5109
    @denisyegorov5109 3 года назад +2

    Это видео доказывает, кто должен работать в Сколково. Думаю компания STM должна вас заметить ) если вы их поправляете и находите их косяки. Спасибо за информацию о фильтрах и об этом МК.

    • @RomaShtep
      @RomaShtep 3 года назад +1

      Что за компания STM и причем тут Сколково? Это видео доказывает, что его автор очень упертый и отлично разбирается в материале от чего иногда у него происходят подобные недокументированные прорывы. Хвала отладке!!!

  • @danilamaster877
    @danilamaster877 3 года назад +3

    Красавчик. Огромный труд. Разобраться, да еще и разжевать так доступно. Так держать. Очень интересно про трехфазные решения для фильтров. Даешь ликбез про кортекс...
    ЗЫ: С удовольствием помогу с музыкальной подложкой доя твоего канала.
    Будет эксклюзивно и чисто по авторским правам.

  • @FastChargeIsFuture
    @FastChargeIsFuture 3 года назад +5

    FMAC служат в основном для одной главной цели.
    Это аппаратная реализация функций компенсатора 2P2Z и 3P3Z и нужно это для создания БП работающих на очень высокой частоте, от 200кГц и выше (2P2Z и 3P3Z это как ПИД только круче).
    По принципу ADC - FMAC - PWM.
    Больше негде он особо не нужен.

    • @TDMLab
      @TDMLab  3 года назад +4

      FMAC это лишь аппаратная реализация цифровых фильтров, а область применений ЦФ просто огромна.

    • @FastChargeIsFuture
      @FastChargeIsFuture 3 года назад +2

      @@TDMLab Это понятно, модуль очень простой, целочисленный 16бит умножение, применений для него кроме кок для компенсатора, очень ограниченны.
      Но при желании, можно конечно делать все что угодно!

    • @TDMLab
      @TDMLab  3 года назад +2

      @@FastChargeIsFuture там ST-шники в апноуте даже про адаптивные фильтры заикались. А по сути LP фильтры небольших порядков не вредно применять на всех каналах аналоговых данных.

    • @FastChargeIsFuture
      @FastChargeIsFuture 3 года назад

      @@kokotmkokot4926 В самый раз.
      Я, например зарядками для электромобилей занимаюсь и БП у нас 10 - 20кВт, сейчас пользую f334, но G4 на отладке, в скором времени перейдем на них.

  • @SaLaGaDH
    @SaLaGaDH 3 года назад +5

    спасибо, чрезвычайно полезная и интересная информация

  • @DRDRPETR
    @DRDRPETR Год назад

    Отличный обзор, хорошая штука этот FMAC.

  • @ИгорьКабакин-ц7у
    @ИгорьКабакин-ц7у 9 месяцев назад

    По поводу нет даже намёка на интересующий вопрос в интернете - удивлялся много раз как такое может быть , далее идут разборки , поиски , решения. И вот и ответ - найдя ответ такой ценой люди не делится информацией. Так что вам огромное спасибо , материал отличный .

  • @РусланКраснощёков-ы8ж

    Большое спасибо) Жду теперь ещё БИХ фильтры) Было бы супер если помимо CubeMX был ещё CMSIS...

  • @artvk8294
    @artvk8294 3 года назад +2

    Спасибо за бесценную информацию! Все понятно и по делу.

  • @DIY-hv2hv
    @DIY-hv2hv 7 месяцев назад

    Спасибо, круто!

  • @KARMAElectronics
    @KARMAElectronics 3 года назад +4

    Так это магическое число и есть адрес периферийного модуля FMAC плюс офсет регистра внутри модуля)

    • @TDMLab
      @TDMLab  3 года назад

      Так и есть)

  • @ГАС-к3ъ
    @ГАС-к3ъ 3 года назад

    Ничего не понял, но очень интересно. Шутка. Автору спасибо. Ценные вещи.

  • @taichiveron9278
    @taichiveron9278 3 года назад +4

    Порог вхождения в stm32 очень, ооочень высокой. Соотношение функционал / цена идеальное. Но реальность такова, что это просто кусок кремния, без головы, которая это настроит.
    Вот есть у меня мечта идиота, своя универсальная ЧПУ стойка. Да такая, что бы скинуть цену на один порядок ниже для людей. И конечно же на стмке. Но времени изучать всё интересное уже нету...
    Вашим энтузиазмом восхищён!

    • @sledleo
      @sledleo 3 года назад

      Видимо знающие дяди не могут запилить простую либу с уровнями сложностями, например нулевой - одна функция в которую передается один параметр и т.д.

    • @Электроникавдеталях-з7д
      @Электроникавдеталях-з7д 3 года назад

      CUBE IDE, использованная в этом видео очень сильно его снижает. Была бы у ни ещё документация хорошая. На её создании стишники как всегда экономят. Разбираться самому по коду в их приколах порой действительно бывает трудно!

    • @sledleo
      @sledleo 3 года назад

      @@Электроникавдеталях-з7д была бы нормальная документация, а не портянка... была бы нормальная либа с уровнями (от простого к сложному), были бы примеры четкие и понятные....
      А есть темный лес и только стараниями из народа есть возможность разобраться.
      Поэтому смотрю лаконичные статьи по CMSIS на Hubstub и Dimoon, смотрю видосы на нормальных каналах как этот

    • @Электроникавдеталях-з7д
      @Электроникавдеталях-з7д 3 года назад +1

      @@sledleo Согласен. Сам ST не слишком много внимания уделяет документации. Мягко говоря. Мог бы подкидывать немного деньжат для стимуляции каналов, которые готовы этим заниматься. Например тому, на которым мы находимся. Для него 2 - 3 тысячи баксов в месяц вообще НИЧТО, а для блогера приличные деньги благодаря которым он мого бы глубже погружаться в тему!

    • @easystm6865
      @easystm6865 3 года назад

      К сожалению стмки стали дорожать

  • @muctex
    @muctex 3 года назад +2

    Респект и уважение за проделанную работу 🤝

  • @yurijshmelkov8320
    @yurijshmelkov8320 3 года назад +1

    спасибо за твое терпение и упорство!

  • @pswru
    @pswru 3 года назад

    Спасибо за труд, познавательно, хоть лично я и лишь читаю Си со словарём, а к АРМам вообще не подступался.
    DMA=ПДП (прямой доступ к памяти) устоявшаяся абревиатура из СССР.
    Чтоб эксель принимал запятые как разделитель при копипасте - оно должно в системных свойствах стоять как разделитель.
    Особенно помогает когда приходится чужие CVS файлы импортировать - в них разделитель полей запятая, а у нас - она разделитель целой и дробной, приходится временно менять подарок Билли всем не англосаксам.
    Чисто теоретически навскидку - глядя на 2:59 структуру - решение вопроса 15:58 может выглядеть как буфера на каждую фазу 1/3 от максимальных имеющихся 127 штук, при получении АЦП выборки фазы фильтр и ДМА получают (циклов за 10-20) в качестве настройки смещения буферов конкретной фазы, далее делают ~42 умножения с накоплением для этой выборки (уже быть могет в фоне), и так по кругу для трёх фаз.
    Удачи в исследованиях.

  • @johnrom8787
    @johnrom8787 3 года назад +1

    Тоже помню как столкнулся с ошибкой регистра в cmsis на stm32f417. Пришлось всю инициализацию по мануалу прописать

  • @АлександрНевский-е4д

    Очень круто! Большое спасибо, ждем новых видео!!!
    Больше ЦОС!!! ))

  • @watashisolify
    @watashisolify 3 года назад

    Высший пилотаж!!! Поздравляю!.

  • @АлександрБулыга-н2г
    @АлександрБулыга-н2г 3 года назад +10

    Ссылка на компэловскую статью не рабочая.
    За освещение темы цифровых фильтров отдельное спасибо!

    • @TDMLab
      @TDMLab  3 года назад

      Поправил ссылку.
      Спасибо!

    • @DancingToys5D
      @DancingToys5D 3 года назад

      www.compel.ru/lib/139617

  • @СволочьКозловский
    @СволочьКозловский 2 года назад

    Удивительная настойчивость

  • @Diject
    @Diject 3 года назад +5

    Для DMA не имеет значения из/в куда отправлять данные - важно лишь что затриггерит саму передачу. То есть можно запустить передачу через DMA от АЦП, а писать из RAM в RAM, из любой переферии в любую переферию и т.д. Главное, чтобы участки памяти были доступны для DMA (можно глянуть в разделе System architecture мануала).

    • @TDMLab
      @TDMLab  3 года назад +2

      Ну да, но это не очевидно если не разу этим не пользовался. Даже ST в той ветке говорили что у них там бардак в документации относительно обращений по DMA к FMAC.

  • @TheVasil2010
    @TheVasil2010 2 года назад

    Супер! Спасибо!

  • @ВикторТаранов-м4с
    @ВикторТаранов-м4с 3 года назад +1

    Да автор правильно подметил что в случае с стм нужно как минимум 4 таких канала. 3 фазы и по входу dc мерять ток. А для обычного инвертора с lc контуром мне хватило программной реализации на дешманском контроллере avr.

  • @johnrom8787
    @johnrom8787 3 года назад +1

    Вспомнил Лайонса ЦОС. Хорошая книжка

    • @floks700
      @floks700 3 года назад

      высоцкий - цифр фильтры на имс 1984
      рабинер, шаффер, цифр обраб речевых сигналов. ))
      истоки, так сказать , начала.

  • @michaeltimoshkin919
    @michaeltimoshkin919 3 года назад

    Очень интересно, тоже себе плату заказал.

  • @DIY_Repair2024
    @DIY_Repair2024 3 года назад +1

    Класс, большое спасибо Вам!

  • @Sanchogus
    @Sanchogus 3 года назад

    Основательно подошел. Еще и с субтитрами заморочился. CORDIC тоже интересен.

  • @yuribochkarev4477
    @yuribochkarev4477 3 года назад

    Очень круто! Сними серию уроков по ЦОС, у тебя отлично получается

  • @FastChargeIsFuture
    @FastChargeIsFuture 3 года назад

    Есть кстати бесплатная программка WinFilter, можно считать разные фильтра, плюс умеет делать исходники.
    Не matlab но на скорую руку считает хорошо.

  • @lira8329
    @lira8329 3 года назад

    Благодарю за подробный разбор! CORDIC алгоритм будет весьма кстати. И вообще всё что касается DSP обработки очень интересует. DSP это вообще как "чёрная магия".

  • @АндрейКришнамурти
    @АндрейКришнамурти 3 года назад

    Капец, я б уже трижды застрелился, если б сам разбирался в этом! Респект терпению и технической грамотности автора!

  • @aisonaison2877
    @aisonaison2877 3 года назад +1

    Какой ужас. Ты огромный молодец, что не сдался!

  • @Электроникавдеталях-з7д

    Глобальный труд! На своём опыте знаю как трудно бывает первопроходцам, когда пишешь программы не имея примеров да ещё для новых чипов с неполной неустоявшейся документацией, а иной раз имеющих ещё и хардвэрные баги не отражённые в ерратах. Что касается магии на десятой с половиной минуте, то вы скорее всего не совсем разобрались в теме.
    Впрочем вас уже поправили в комментариях, не буду попугайничать.
    Удачи в освоении этих интересных чипов.

  • @АндрейК-м8д7ъ
    @АндрейК-м8д7ъ 3 года назад

    Это просто круто.

  • @alvarobs
    @alvarobs 2 месяца назад

    Excellent video my friend.👏👏👏👏👏

  • @МихаилСадилов-й1ж
    @МихаилСадилов-й1ж 3 года назад +1

    Про CORDIC давайте! Интеренсно. Никто про g474 толком не пишет и не снимает. Я аж отладку заказал после ваших видосов.

  • @arduinomega1030
    @arduinomega1030 7 месяцев назад

    Походу нужно брать Digital Signal Processing класс. Оч интересная тема.

  • @rustybroom7071
    @rustybroom7071 3 года назад

    Молорик!

  • @DIMAL
    @DIMAL 3 года назад

    Автор, ты крут !

  • @ДмитрийНелюбин-д3у
    @ДмитрийНелюбин-д3у 3 года назад +2

    то что делает этот человек, в институте занимает не один семестр преподавания, это нереально сжатая выжимка по теории ЦОС

    • @floks700
      @floks700 3 года назад

      ерунду вы пишете.
      в Лэисе и в Чпи это занимало 1 семестр - теория бих/ких, фурье/бпф. кроме этого, парллельно изучалось ещё как минимум 12 курсов. а автор копает только 1 направление, но в свободном плавании, без ненужного ему балласта, поэтому ему легче, чем студенту.

  • @blackeagle1030
    @blackeagle1030 3 года назад

    Класс, жду видео про CORDIC

  • @Fastereus
    @Fastereus 3 года назад

    Автор доброе время суток, вот и вы наконец наткнулись на косяки STшек , когдато давно когда явыбирал платформу для большого массового заказа и какраз был момент что я работал с AT/ESP/i контроллерами а вот ST как то меня минули , толком IDE в те времена у них небыло сразу скажу, в общем купиля тогда 8 и 16 битный варианты истал ихизучать , и о боже чтото более сложное чем подергать ножкой запустить не могу, мне не нужны были шимы меня интересовало тогда пробуждение окнтроллера по внешнему сигналу ... поыв даташиты выяснилось что в прилагаемлом inc файле естьошибки , не верно указаны регисты и вуаля все заработало ...
    чутьпозже я наткнулся и на ошибку в мануале ... когда работал с аналоговым компаратором . ибо заначения коэфициента усиления указщнные в мане были обратнопропорциональны тем что я получал.
    с тех пор две отладки так и лежат ,а 23 бита пришедшую через месяц я даже не подключил
    так что я думаю что вы еще не раз хлебнете, кстати ни у кого я таких косяков не встречал, глюки IDE да а вот чтобы инки были косячные не разу или в мане такая серьезная ошибка ..

    • @TDMLab
      @TDMLab  3 года назад

      Ну, да, не доработали они этот блок, но в целом в что-то более простое ST дает легкий вход.

    • @Fastereus
      @Fastereus 3 года назад

      @@TDMLab угу если в include нет косяков

    • @TDMLab
      @TDMLab  3 года назад

      @@Fastereus Как оказалось в данном примере это я слепой, я не указатель отдавал DMA, а сам регистр)) оттого и была проблема. Думаю я не единственный который нашел такой "косяк" у ST)

  • @Stereobot
    @Stereobot 3 года назад

    Я просто электрик,но все равно очень интересно)

  • @ivandiystatic6179
    @ivandiystatic6179 3 года назад

    Красава!🤝

  • @antonchik8012
    @antonchik8012 3 года назад +1

    Молодчина. Хотелось бы разобраться с DAC G серии. Непонятно, что значит внутренние и внешние DAC и какое всё таки кол-во каналов?

    • @TDMLab
      @TDMLab  3 года назад +1

      Ок, войдет в общий разбор переферии

  • @ДмитрийБуньков-щ8ш
    @ДмитрийБуньков-щ8ш 3 года назад +1

    Благодарная публика просит продолжения разбора G4 процов) Очень полезно. LL кстати пользуетесь?

    • @TDMLab
      @TDMLab  3 года назад

      Ок, все будет)
      Не, LL нет, только HAL + CMSIS

  • @olegpupkin4460
    @olegpupkin4460 3 года назад

    вери гуд!

  • @Vod-b4n
    @Vod-b4n 3 года назад +2

    Вам нужно использовать fpga и настраивать под себя.

    • @TDMLab
      @TDMLab  3 года назад

      Конкретно для цифровых фильтров да, ПЛИС то что доктор прописал, но для некоторых задач управления у МК есть несомненные преимущества.

  • @DART2WADER
    @DART2WADER 3 года назад +1

    Тоже себе прикупил пару для посмотреть, что за зверь такой и чем жирный stlink v3 отличается от v2

  • @AlexanderBelikov
    @AlexanderBelikov 3 года назад

    У меня вопрос не по теме этого видео. Я делаю устройство для машины. В нем будет мега328-ая и блютус модуль hc-06. Я заметил что БТ модуль достаточно сильно шумит в линию питания и решил его отсадить на отдельное питание. Хочу чтоб у меги было достаточно стабильное питание чтоб не плыли показания АЦП. Планирую ставить 2 регулятора LM7805 но не знаю нужна ли какая-то дополнительная обвязка чтоб они друг другу не мешали. Конденсатор на входе я так понимаю будет один на 0.33 мкФ? Есть ли смысл ставить гальванические развязки (например изолированный DC-DC B0505-1W) чтоб убрать наводки от генератора? Спасибо за твои ролики, уже много всего полезного подчерпнул для себя!

    • @TDMLab
      @TDMLab  3 года назад +1

      Думаю, что не стоит никаких развязок так как они импульсные. Конденсаторы можно и побольше.

  • @lionlinux
    @lionlinux 3 года назад +1

    всё понятн ждём новых диких глюков в китайских клонах :-(

    • @TDMLab
      @TDMLab  3 года назад

      В китайских клонах не знаю, у меня нет, да и эта проблема с обращением к регистру была моим косяком, дальше расскажу)

  • @Григорий-ч8д7я
    @Григорий-ч8д7я 3 года назад +1

    Не судите строго, но хочу скажем так по возможности сэкономить автору время на копипастинг и замены запятых в word: в общем для конкретной задачи приведенной в ролике есть решение в excel - "=ЗНАЧЕН(ПОДСТАВИТЬ(A1;".";","))", ПОДСТАВИТЬ(A1;".";",") - сначала меняем точки на запятые, а потом заставляем excel воспринимать как число. Но иногда бывает при копировании с вебстраниц встречаются еще паразитные пробелы и вот такая конструкция предпочтительна: "=ЗНАЧЕН(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A1;" ";"");".";",")) "

    • @TDMLab
      @TDMLab  3 года назад +1

      Спасибо)

    • @alexburceacov9232
      @alexburceacov9232 3 года назад

      Ну или в настройке Windows указать точку вместо запятой как десятичный разделитель 😀

  • @akvilion7365
    @akvilion7365 3 года назад +8

    Дублируй название ролика на английском, и сабы тоже бы прикрутить. Я же говорил - на эту тему инфы толком нет, в общих словах только, в тч от самих ST (что странно, обычно когда они хвалят свои фишки у них целые поваренные тома выходят). А камню уже как бы год...

    • @TDMLab
      @TDMLab  3 года назад +2

      Английские сабы добавил партнеры просили уже, а название итак переводится на язык зрителя.
      Да вообще столько обновлений куба было и ничего по этому блоку не добавили. Кстати, FMAC на H7 тоже есть.
      Спасибо!

  • @andreykunitsyn4168
    @andreykunitsyn4168 3 года назад +4

    uint32_t* Fmac_Wdata = (uint32_t*)(&FMAC->WDATA); а у вас значение из регистра в качестве адреса

    • @TDMLab
      @TDMLab  3 года назад

      Да, я действительно ошибся, вообще не обратил внимания, зря гнал на ST, по крайней мере в этом плане все там в порядке.
      Проверил с uint32_t *Fmac_Wdata = (uint32_t *)&FMAC->WDATA;
      все работает корректно, спасибо, что кто-то смотрит код, а то сам порой не видишь в упор очевидного:)

    • @Электроникавдеталях-з7д
      @Электроникавдеталях-з7д 3 года назад

      Спасибо за то, что обратили внимание на данный момент и не пожалели время на то, чтобы заглянуть а даташит!
      Как полезно бывает снимать видео! Можно узнать много нового для себя у Аксакалов в области Embedded!

  • @АндрейАлпатов-ъ5г
    @АндрейАлпатов-ъ5г 3 года назад

    А для фильтров и дсп не пробывали библиотеку для питона scipy.signals?

  • @vovanchik_ru4208
    @vovanchik_ru4208 3 года назад +3

    Получается на КИХ фильтре можно запилить свёрточный, входной слой нейронной сети?

    • @TDMLab
      @TDMLab  3 года назад +7

      О, нейронные сети на микроконтроллерах. Я уже пометил это себе как одну из будущих тем)

    • @vovanchik_ru4208
      @vovanchik_ru4208 3 года назад +1

      @@TDMLabЯ так понял, что один КИХ фильтр полностью соответствует принципу работы нейрона: входные значения, веса, сумматор. Осталось после сумматора запилить функцию срабатывания и фсё. Дальше плодить и размножать нейроны в слои. А дальше можно просто взять какую-нить модель, повыдёргивать оттуда веса со структурой и получится вот эта статья www.compel.ru/lib/140486 :)

    • @TDMLab
      @TDMLab  3 года назад +1

      @@vovanchik_ru4208 тихо-тихо, вы все секреты раскроете до начала:)))

    • @vovanchik_ru4208
      @vovanchik_ru4208 3 года назад +1

      @@TDMLab :)

    • @vovanchik_ru4208
      @vovanchik_ru4208 3 года назад +1

      @@TDMLab если будешь что-то пилить на эту тему - рекомендую и тему "OpenMV4 Mini" затронуть

  • @alexburceacov9232
    @alexburceacov9232 3 года назад +1

    Респект Автору за подачу материалов и упорство! А что у STM с тех.поддержкой, не пробовали обращаться?

    • @TDMLab
      @TDMLab  3 года назад

      Спасибо! нет не пробовал.

  • @stm32Lab
    @stm32Lab Год назад

    Круто, не знал, что коэффициенты можно домножать, т.к. важно их соотношение. Глупый вопрос, т.к. с ЦОС недавно: подключил DSP, там типы: f32, q31, q15, q7, при этом АЦП и ЦАП 12 бит (F407). Получается, можно использовать только FIR с q7?

    • @TDMLab
      @TDMLab  Год назад +1

      Q15, Q32 это просто целочисленные знаковые форматы 16 и 32 бита, они подходят для обработки целочисленных данных с АЦП 12 бит с правым выравниванием.
      Тип данных должен быть больше или равен размерности входящих данных, но лучше использовать Q32 будет запас по точности вычислений и динамическому диапазону.

  • @sergeyrusmod5500
    @sergeyrusmod5500 3 года назад +1

    Лайк!

  • @Addenri
    @Addenri 3 года назад

    Содержательное видео, помогло подобрать коэф. для КИХ-фильтра на G474. Но разрабатываем преобразователь, где необходим БИХ с меньшим сдвигом фазы. Тоже запускается, но в отличие от КИХ, АЧХ не соответствует рассчитаной в MATLAB. Пробовали ли вы запустить БИХ на этом FMAC?

    • @TDMLab
      @TDMLab  3 года назад +1

      Конкретно FMAC на БИХ не проверял, но математика есть математика. Учитывали ли вы Уменьшение разрядности до 16 бит для коэффициентов и расчетов, это в значительной степени может влиять на БИХ. Насколько АЧХ/ФЧХ отличаются? Совсем белиберда или немного другие?

    • @Addenri
      @Addenri 3 года назад

      @@TDMLab Предполагаю, точность могла потеряться при конвертации в формат с фикс. точкой. Согласно графику MATLAB, подавление должно начинаться от 10 кГц при частоте дискретизации 68 кГц и срезе ФНЧ 16 кГц. и 4-м порядке фильтра. На деле же амплитуда падает начиная с 3 кГц, и больше похоже на линейную характеристику.

    • @TDMLab
      @TDMLab  3 года назад +1

      @@Addenri У матлаба по идеи должен быть перерасчет для выбранной разрядности. Это может сильно влиять. Вообще фильтры БИХ высших порядков могут быть нестабильны, вот тут у меня немного про это есть ruclips.net/video/GN1RZkViEAE/видео.html
      По описанию фильтр работает совсем не так как нужно. Я бы начал с одного биквада, см видео.

    • @Addenri
      @Addenri 3 года назад

      @@TDMLab Спасибо, попробую разобраться с фильтрами меньших порядков.

  • @krisd9506
    @krisd9506 4 месяца назад

    Great video! I ported it to the STM32G431. Have you tried a highpass filter? I get strange results... it's like the sine wave has been cut at the 0 axis and the top arc has been pushed down and the bottom arc has been pushed up. It is a square wave with concave tops that change according to frequency. It is filtering, but a strange shift of the output has happened.

  • @kjlas8
    @kjlas8 2 года назад +1

    Скорее всего можно заставить FMAC обрабатывать два канала если записывать коэффициенты с промежутком: a1, 0, a2, 0, a3, 0, a4, 0, ...

    • @TDMLab
      @TDMLab  2 года назад

      Как вы это видите?

    • @kjlas8
      @kjlas8 2 года назад

      ​@@TDMLab проталкиваем в фильтр данные двух каналов по очереди. В четных ячейках будут данные одного канала в нечетных другого. Нули в коеффициентах маскируют второй канал.

    • @TDMLab
      @TDMLab  2 года назад

      @@kjlas8 Да, пожалуй это возможно. Уменьшим максимальную длину вдвое, но да, это работоспособно. Спасибо за интересный комментарий.

  • @pingburner
    @pingburner 3 года назад

    Классно ты расколол этот орех. Я так и не понял от куда ты взял адрес ввода на модуль. Был в готовых примерах?

    • @TDMLab
      @TDMLab  3 года назад

      Адрес регистра я взял из отладки, но его можно взяnь и из reference manual-а

  • @pingburner
    @pingburner 3 года назад

    у меня тут в моём последнем и единственном проэкте на стм32 да и вообще на МК был worning с DMA. в кубе стояло half-word а в проэкте в SW4STM32 функция ADC_чётотам_DMA принимало адресс (*uint_32) и когда я всирал ей адрес uint_16 переменной вылетал ворнинг. Но всё работало и даже при исправлении этого ворнинга всё ломалось и двухканальное сканирование писалось целиком в первый элемент массива. Это я просто к тому твоему мнению что все ворнинги надо исправить как можно скорее и не тянуть до сдачи проэкта. У меня при первом же знакомстве с МК этот ворнинг так и попал в окончательную сборку.

    • @TDMLab
      @TDMLab  3 года назад

      Иногда ворнинг локализуют, то есть понимают то отчего он и как повлияет в дальнейшем. Хотя нужно стремиться этого избегать и лучше переписать весь блок если какой-то метод приводит к ворнингу.
      Все решается в конкретном случае.

    • @pingburner
      @pingburner 3 года назад

      @@TDMLab спасибо, разморочил. Переписывать HAL мы конечно же не будем. По крайней мере в этой жизни.

    • @pingburner
      @pingburner 3 года назад

      @@TDMLab А ты представляешь как вообще пишутся колбеки в си на аппаратные события? Особо не гуглится этот вопрос. Было бы прикольно посмореть пример программы с абсолютно пустым while() в мейне. Пускай что то простенькое но с самодельной хотя бы одной колбек функцией. Гуглится что это функция, которая принимает адрессный тип данных и больше ничего. Просто _IO переменную сделать и вписать указатель на неё в прототип функции? сомневаюсь что это будет работать. ЗЫ: извиняюсь если не точен в терминологиях.

    • @TDMLab
      @TDMLab  3 года назад

      @@pingburner так дело полагаю было не в HAL, а то как этот слой был применен. Хотя опять таки вам виднее.
      Это проект с пустым while если что:)
      У меня есть видео про вейвлет генератор, там я применяю кол-бек и рассказываю для чего.

    • @pingburner
      @pingburner 3 года назад

      @@TDMLab То есть чтобы очистить вайл в твоём проэкте вейвлет оставалось только перевести ацп на дма? А в этом видео я даже не заметил что вайл пустой :) У тебя очень качественный контент, спасибо.

  • @alexandrsavochkin9442
    @alexandrsavochkin9442 3 года назад

    1:37 "Обычно в задачах риалтайма у контроллера и так много дел по работе с ПИД-регуляторами..." Интересно, можно ли собственно ПИД-регулятор засунуть в FMAC? Рекуррентная формула для ПИД регулятора в дискретном времени вроде бы подходит в тот шаблон КИХ+БИХ, что заложен в FMAC.

    • @TDMLab
      @TDMLab  3 года назад

      В общем то да, на 4:50 пример с 3P3Z компенсатором, PID это тоже компенсатор microchipdeveloper.com/dcdt:selecting-the-compensator

  • @3x__
    @3x__ 3 года назад

    👍

  • @artvk8294
    @artvk8294 3 года назад

    Использовать один блок для 3х фаз... Частота в 3 раза меньше... Может легче еще один контроллер поставить только на фильтры, подешевле, с малым кол. ножек, возможно g431? Насчет CORDIC конечно интересно послушать. Кстати, CORDIC и FMAC в g431 есть.

    • @TDMLab
      @TDMLab  3 года назад +1

      Да не, тогда легче сделать обычный аналоговый фильтр на ОУ. ST-шники продвигают идею, что не надо больше внешних компонентов, все внутри, но пока не совсем ясно, возможно еще расскажут подробнее.

  • @massacr6428
    @massacr6428 3 года назад

    Здраствуйте! Спасибо за видео! Хотел спросить-предложить!?, не хотите на базе STM32 сделать метеостанцию ? , к примеру взять STM32 , модуль барометр BME280, модуль чтения записи MicroSD кардридер и модуль связи ,к примеру радиомодуль NRF24L01 2.4ГГц, сделать передачу данных через модуль связи на пк, видел в Ютубе на ESP8266 что то подобное делали, но там нету записи на микро сд как резерв записи. Думаю для многих людей будет очень интересно увидиеть как сделать метеостанцию на STM32. спасибо !

    • @TDMLab
      @TDMLab  3 года назад

      Ох, этих погодных станций на просторах интернета...

    • @massacr6428
      @massacr6428 3 года назад

      @@TDMLab да как бы не видел, не одной, чтоб писала информацию на сдкарту, и предавала на другой стм32,на дисплей информацию, возможно я ищу не правильно?)

    • @TDMLab
      @TDMLab  3 года назад

      @@massacr6428 На esp8266 ruclips.net/video/VA-ZthJOjGg/видео.html

  • @РодионБоркунов
    @РодионБоркунов 3 года назад

    Есть ещё бесплатная программка для генерирования FIR фильтров rePhase. На неё очень даже стоит взглянуть.

    • @TDMLab
      @TDMLab  3 года назад

      Она разве позволяет забирать FIR коэффициенты? Это выглядит как просто программа для фильтрации не для расчета.

    • @РодионБоркунов
      @РодионБоркунов 3 года назад

      @@TDMLab , так она для генерации коэффициентов в файл и сделана. Причем в разные форматы может, в том числе, и в txt, и csv..

    • @TDMLab
      @TDMLab  3 года назад

      @@РодионБоркунов Ок, спасибо, для аудио пожалуй неплохо что имеет графический эквалайзер.

  • @Diamond8822
    @Diamond8822 3 года назад

    Мужик, есть частотник invt gd200. Могу дать для опытов. Надо?

  • @PyctamG
    @PyctamG 3 года назад +5

    Малоизвестные факт, Дмитрия на картошку не брали, он очень глубоко копал

  • @akvilion7365
    @akvilion7365 3 года назад

    Кста, можно не только проги обрезать, но и прикрыть названия измерительного ПО/оборудования. Если это не спонсоры, разумеется.

    • @TDMLab
      @TDMLab  3 года назад +1

      Мне для сиглента ничего не жалко лишь бы обновление за 21 год сделали:))

  • @souris771
    @souris771 3 года назад +1

    Сделайие видео, но мне ещё далеко до такого, вся эта математика пока ещё тёмный лес для меня.

  • @aksel4180
    @aksel4180 3 года назад

    Молодец, на твоих примерах хоть учись.

  • @sledleo
    @sledleo 3 года назад +1

    Где Компел? Помощи от них нет?

    • @TDMLab
      @TDMLab  3 года назад +2

      Мы идем параллельными курсами:)

  • @TonyWilson-r5h
    @TonyWilson-r5h 10 месяцев назад

    Great video! Can you redo in English?

  • @kardanium
    @kardanium 2 года назад

    Я такой аппаратный фильтр реализовал на FPGA.

    • @TDMLab
      @TDMLab  2 года назад +1

      Да, FPGA хорошо подходят для КИХ/БИХ фильтров, а если FPGA типа Zynq, то вообще всё для жизни уже на кристале есть.

    • @kardanium
      @kardanium 2 года назад

      @@TDMLab Я делал на Cyclone II. Там умножителей не так много, но мне хватило всего четырёх для свертки 24-битного потока с 18-битной импульсной характеристикой, длиной в 128 коэффициентов.
      Да, пришлось кольцевой буфер собирать на встроенных блоках памяти и ROM для ИХ. Плюс, управляющий конечный автомат и генератор адресов памяти. Ресурсов вроде немного ушло на него.
      Конечно, у более современных плисов уже не просто умножители, как у древнего Циклона, а навороченные DSP блоки. Особенно у Зайлинкса.

    • @TDMLab
      @TDMLab  2 года назад +1

      @@kardanium Да, новые плисины крутые есть.
      Я работал с циклоном 3, делал адаптивный КИХ фильтр, корректор АЧХ проводного канала связи. Он по известной тестовой последовательности подбирал оптимальные коэффициенты минимизируя межсимволную интерференцию и шумы. Было что то типа 64 или 128 коэффициентов. Работало прям как магия после того как мы раньше это делали отвёрткой по сигналу на осцилле, подстраивая набор из 2-3 аналоговых ФВЧ.

    • @TDMLab
      @TDMLab  2 года назад

      @@kardanium Я использовал последовательно-пораллельную схему работы аппаратных умножителей, задействуя один несколько раз за одну выборку АЦП.
      У меня был не высокий поток данных, 16 бит 1-2Мвыб/с

    • @kardanium
      @kardanium 2 года назад

      @@TDMLab Да, ныне аналог уходит в прошлое. Сейчас даже простое радио реализуют через оцифровку и последующую цифровую обработку.
      Ну, у меня с умножителями так же было. Один использовался на все 128 операций. Их четыре ушло, потому что они 18-битные, а выборки 24 бита. Квартус собрал из четырёх один.
      Скорость потока в моем случае была ещё ниже - 48кВыб. Это обычный аудиопоток. Потоков два было - для левого и правого канала. Кольцевых буферов два, одна ROM и управляющая часть тоже общая на оба канала, так как выборки поступают параллельно. Фильтр этот использовался в роли фильтра-корректора после апсемплинга и CIC интерполятора. Интерполяция много нервов съела, так как чем ближе частота сигнала к частоте Fs/2, тем сложнее технически его восстановить.

  • @pavel5345
    @pavel5345 Год назад

    ПРошло уже 2 года с момента опубликования видео а в кубе в части FMAC так нифига и не сделано (версия пакета под G4 ->1.5.1).

    • @TDMLab
      @TDMLab  Год назад

      Да, забили они на фмак, как собственно и я в итоге не нашел ему применения.

    • @pavel5345
      @pavel5345 Год назад

      @@TDMLab да, то что FMAC на борту всего один - сильно ограничивает его применение. Хотя бы 3 завезли. Хотя бы под 3-фазные сети. И еще, может я что-то не понял, получается что на максимальной скорости семплирования 4 мсемпла/с с максимальным кол-вом коэффициентов FMAC работать не будет? Если так то это полумера от ST. МОжет поэтому они и сами на него забили и в кубе его не развивают.

    • @TDMLab
      @TDMLab  Год назад +1

      @@pavel5345 Количество вычислений необходимых для расчета всех этапов фильтра на 256 при скорости 4 Мега выборки много больше производительности по тактовой частоте.
      То есть фильтр же обсчитывает по очереди все выходы, то есть 256 умножений и накопление и его тактирование такое же как и ЦП и он не успеет.

  • @sledleo
    @sledleo 3 года назад +1

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

  • @dgo42
    @dgo42 3 года назад

    Из моего опыта работы с СТМ32 - много просто нет в кубе и надо долго и нудно "курить" даташиты...

    • @TDMLab
      @TDMLab  3 года назад

      Да, так и есть)

  • @DF-0997
    @DF-0997 3 года назад

    На компонентах не пробовал без этой преблуды сделать!

  • @johnblack7536
    @johnblack7536 3 года назад

    cmsis st давно не развивает. Вместо cmsis использую LL.

    • @TDMLab
      @TDMLab  3 года назад

      Это как? А на чем LL написан тогда?:) developer.arm.com/tools-and-software/embedded/cmsis
      А вообще ничего против не имею, хотя сам использую HAL + CMSIS

    • @johnblack7536
      @johnblack7536 3 года назад

      @@TDMLab базовый адрес FMAC в файле stm32g474xx.h #define FMAC_BASE (AHB1PERIPH_BASE + 0x1400UL). А LL - собственная библиотека ST, к CMSIS отношения не имеет. В STM32CubeMX вариантов инициализации периферии только 2 - LL и HAL

    • @TDMLab
      @TDMLab  3 года назад

      @@johnblack7536 Да, заголовочные файлы типа stm32g474xx.h это вендорная часть библиотеки CMSIS. Часть которая работает с периферией написана в данном случае ST, а часть которая работает с самим ядром написана ARM. И да, в заголовочном файле была информация об адресе регистра WDATA, я уже закрепил комментарий с разъяснениями и поправил прикрепленный к этому видео пример кода.
      Любая библиотека на чем-то написана, в данном случае библиотека LL написана на основе библиотеки CMSIS, которая в свою очередь использует ASM.
      И да, кодогенератор CubeMX представляет только два варианта автоматизированной инициализации, но пользовательская инициализация может использовать любой из набора CMSIS/LL/HAL
      Как это работает на моем примере:
      uint32_t *Fmac_Wdata = (uint32_t*)&FMAC->WDATA; // Это объявление указателя с присвоением ему адреса регистра WDATA в периферийном устройстве FMAC и написано с использованием CMSIS
      HAL_ADC_Start_DMA(&hadc1, Fmac_Wdata, FILTER_IN_BUFFER_SIZE); // Это запуск АЦП с передачей оцифрованных данных по DMA в регистр по указателю Fmac_Wdata и написано с использованием HAL

  • @ivandiystatic6179
    @ivandiystatic6179 3 года назад

    Кордик даааа!!!

  • @odissey2
    @odissey2 3 года назад

    У Cypress PSoC5 был похожий цифровой фильтр 24х24-бит 128 taps максимум. В целом оказалась бесполезная штука. Слишком малое количество taps, и слишком сложно работать с ним. Опять же, всего один фильтр, а часто нужны несколько, и в каскаде. В-общем, не пошло, и в PSoC6 он был заброшен.

    • @TDMLab
      @TDMLab  3 года назад +1

      Согласен, если бы блоков было N-ное количество, можно было бы подумать, а так я думаю, что это "пилот".

    • @odissey2
      @odissey2 3 года назад

      @@TDMLab Спасибо за обзор микроконтроллера. Я давно приглядываюсь к ST линейке, но руки не доходят.
      В PSoC6 Cypress установил два процессора, Cortex M0. + M4. Так что можно, например, общаться с периферией (ADC, DAC) используя M0, а DSP делать в M4. Однако, в целом, PSoC6 "не пошёл', и сложно сказать почему. Это очень странный маркет.

    • @TDMLab
      @TDMLab  3 года назад +1

      @@odissey2 У ST-шников в самом жирном H7 семействе M4 + M7 и еще и этот FMAC, а так да, второе ядро можно как математический сопроцессор использовать))
      В мире правит маркетинг, "Кипарисам" просто не повезло по всей видимости, хотя то что они работают в связке с Infineon думаю без масла на хлеб не останутся:)

  • @sergoseleznev4979
    @sergoseleznev4979 3 года назад

    Со светом разберись. Мерцает на видео. Свет это не частотник там ШИМ без надобности.

    • @TDMLab
      @TDMLab  3 года назад

      Мерцания происходят из-за пересвета камеры, не имея профессионального осветительного прибора рассеянного света победить это иногда достаточно сложно, а делать темнее не хочу.

  • @ИгорьКулешов-н1я
    @ИгорьКулешов-н1я 3 года назад

    стоит чего то не норм!

  • @igorsuhonosov8757
    @igorsuhonosov8757 3 года назад +2

    На самом деле можно было найти адрес регистра FMAC_WDATA и сделать нужный указатель гораздо быстрее - обратившись к документу RM0440
    Reference manual для STM32G4 Series. Сдвиг базового адреса 0x18 для регистра FMAC_WDATA указан на стр. 511 документа, а
    базовый регистр 0x4002 1400 для FMAC можно найти на странице 83 и того адрес нужного регистра 0x4002 1418

    • @TDMLab
      @TDMLab  3 года назад

      Проблема была не в нахождении адреса WDATA, это как раз не проблема) Настоящая засада была в том чтобы понять, что именно из-за этого модуль и не запускается.

    • @igorsuhonosov8757
      @igorsuhonosov8757 3 года назад +2

      @@TDMLab Ага понимаю, у меня после кучи потраченных часов на поиски и отладку, уже параноя появилась, теперь все используемые библиотеки проверяю на соответствие адресам регистров. Долго, зато нервы целее =).

  • @exico_minsk
    @exico_minsk Год назад

    Здоровья TDM! Провел сегодя эксперименты и выяснил пренеприятнейшую вещь. При тактировании от TIM3 в 5uS резко падает производительность кода в цикле main().
    for(cnt = 0; cnt < 1000; cnt++) {
    __NOP(); __NOP(); __NOP(); __NOP(); __NOP(); __NOP(); __NOP(); __NOP(); __NOP(); __NOP();
    }
    HAL_GPIO_WritePin(TEST_GPIO_Port, TEST_Pin, GPIO_PIN_SET);
    for(cnt = 0; cnt < 1000; cnt++) {
    __NOP(); __NOP(); __NOP(); __NOP(); __NOP(); __NOP(); __NOP(); __NOP(); __NOP(); __NOP();
    }
    HAL_GPIO_WritePin(TEST_GPIO_Port, TEST_Pin, GPIO_PIN_RESET);
    При включенном FMAC цикл дергания ножкой TEST составляет 1.6mS, а при отключенном FMAC 0.3mS пятикратная разница. Потеря производительности обусловлена скорее всего тем, что запросы DMA занимают большую часть доступа к шинам (не разбирался по каким шинам идет обмен, не суть важно) . В итоге при такой реализации FMAC вещь достаточно бесполезная. И еще момент, который я не понимаю. Вы подаете выборку ADC раз в 5uS, но FMAC не может принять эту выборку ибо занимается расчетом предыдущей выборки. И это время при колличестве коэф. 127 составляет около 600us. Хотя я вижу на выходе DAC что фильтрация идет, но ... проходит ли до конца расчет для всех коэффициентов? Извините если написал глупость, тема новая и интересная, а информации мало.

    • @TDMLab
      @TDMLab  Год назад

      Я уже не помню, а там ядро используется для вывода в ЦАП? Я там прерывание возможно использую.
      А если в ЦАП не выводить или опять использовать DMA?
      FMAC может принять новую выборку, у него есть кольцевой буфер.
      Фильтрация по всем 127 коэффициентам происходит корректно, это видно по отклику фильтра на дельта функцию.