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

  Рет қаралды 14,941

TDM Lab

TDM Lab

Күн бұрын

Пікірлер: 187
@TDMLab
@TDMLab 3 жыл бұрын
Спасибо всем кто пишет комментарии и ставит лайки, это важно для развития канала! Проблема, в коде на 10:05 в том, что указатель создан неправильно, моя ошибка, правильно так: (uint32_t*)&FMAC->WDATA С CMSIS для G4 в этом плане все в порядке, единственное, зачем надо следить, обращение ко всем регистрам FMAC должно быть только по словам "Access: word access", обращение в пол слова "half word" не работает. Код по ссылке в описании исправлен.
@TheNewWorld823
@TheNewWorld823 Жыл бұрын
Какой же сверхмощный мегатруд был предпринят Обязательно продошжайте!!!!!! Вы приносите огромную пользу всему человечеству, которое за это вам крайне благодарно)))!
@dimzen2120
@dimzen2120 3 жыл бұрын
Зачёт и уважуха, почёт первопроходцам берущим на себя наш гемор!
@bigbani1334
@bigbani1334 3 жыл бұрын
Спасибо огромное! Благодаря вашему видео я наконец смог понять суть цифровых фильтров! P.S. про БИХ фильтры послушал бы с огромным интересом
@floks700
@floks700 3 жыл бұрын
книжки надо читать и в инете всё есть. не стоит это изучать по видео программиста. это ведёт в тупик к убогим.
@kardanium
@kardanium 2 жыл бұрын
Там проще. Пять коэффициентов, три умножаются с входным потоком и складываются, как в КИХ, оставшиеся два умножаются с выходным потоком и вычитаются. Получается, что БИХ охвачиваются обратной связью.
@ehvl
@ehvl 3 жыл бұрын
Интересное видео, автор глубоко копает. Про тригонометрический ускоритель CORDIC хотелось бы узнать по подробнее.
@Engineer_Stepanov
@Engineer_Stepanov 3 жыл бұрын
Необходимо узнать. Мы не можем себе позволить прорехи в знаниях.
@denisyegorov5109
@denisyegorov5109 3 жыл бұрын
Это видео доказывает, кто должен работать в Сколково. Думаю компания STM должна вас заметить ) если вы их поправляете и находите их косяки. Спасибо за информацию о фильтрах и об этом МК.
@RomaShtep
@RomaShtep 3 жыл бұрын
Что за компания STM и причем тут Сколково? Это видео доказывает, что его автор очень упертый и отлично разбирается в материале от чего иногда у него происходят подобные недокументированные прорывы. Хвала отладке!!!
@taichiveron9278
@taichiveron9278 3 жыл бұрын
Порог вхождения в stm32 очень, ооочень высокой. Соотношение функционал / цена идеальное. Но реальность такова, что это просто кусок кремния, без головы, которая это настроит. Вот есть у меня мечта идиота, своя универсальная ЧПУ стойка. Да такая, что бы скинуть цену на один порядок ниже для людей. И конечно же на стмке. Но времени изучать всё интересное уже нету... Вашим энтузиазмом восхищён!
@sledleo
@sledleo 3 жыл бұрын
Видимо знающие дяди не могут запилить простую либу с уровнями сложностями, например нулевой - одна функция в которую передается один параметр и т.д.
@Электроникавдеталях-з7д
@Электроникавдеталях-з7д 3 жыл бұрын
CUBE IDE, использованная в этом видео очень сильно его снижает. Была бы у ни ещё документация хорошая. На её создании стишники как всегда экономят. Разбираться самому по коду в их приколах порой действительно бывает трудно!
@sledleo
@sledleo 3 жыл бұрын
@@Электроникавдеталях-з7д была бы нормальная документация, а не портянка... была бы нормальная либа с уровнями (от простого к сложному), были бы примеры четкие и понятные.... А есть темный лес и только стараниями из народа есть возможность разобраться. Поэтому смотрю лаконичные статьи по CMSIS на Hubstub и Dimoon, смотрю видосы на нормальных каналах как этот
@Электроникавдеталях-з7д
@Электроникавдеталях-з7д 3 жыл бұрын
@@sledleo Согласен. Сам ST не слишком много внимания уделяет документации. Мягко говоря. Мог бы подкидывать немного деньжат для стимуляции каналов, которые готовы этим заниматься. Например тому, на которым мы находимся. Для него 2 - 3 тысячи баксов в месяц вообще НИЧТО, а для блогера приличные деньги благодаря которым он мого бы глубже погружаться в тему!
@easystm6865
@easystm6865 3 жыл бұрын
К сожалению стмки стали дорожать
@SaLaGaDH
@SaLaGaDH 3 жыл бұрын
спасибо, чрезвычайно полезная и интересная информация
@artvk8294
@artvk8294 3 жыл бұрын
Спасибо за бесценную информацию! Все понятно и по делу.
@АлександрБулыга-н2г
@АлександрБулыга-н2г 3 жыл бұрын
Ссылка на компэловскую статью не рабочая. За освещение темы цифровых фильтров отдельное спасибо!
@TDMLab
@TDMLab 3 жыл бұрын
Поправил ссылку. Спасибо!
@DancingToys5D
@DancingToys5D 3 жыл бұрын
www.compel.ru/lib/139617
@yurijshmelkov8320
@yurijshmelkov8320 3 жыл бұрын
спасибо за твое терпение и упорство!
@muctex
@muctex 3 жыл бұрын
Респект и уважение за проделанную работу 🤝
@danilamaster877
@danilamaster877 3 жыл бұрын
Красавчик. Огромный труд. Разобраться, да еще и разжевать так доступно. Так держать. Очень интересно про трехфазные решения для фильтров. Даешь ликбез про кортекс... ЗЫ: С удовольствием помогу с музыкальной подложкой доя твоего канала. Будет эксклюзивно и чисто по авторским правам.
@ИгорьКабакин-ц7у
@ИгорьКабакин-ц7у 9 ай бұрын
По поводу нет даже намёка на интересующий вопрос в интернете - удивлялся много раз как такое может быть , далее идут разборки , поиски , решения. И вот и ответ - найдя ответ такой ценой люди не делится информацией. Так что вам огромное спасибо , материал отличный .
@watashisolify
@watashisolify 3 жыл бұрын
Высший пилотаж!!! Поздравляю!.
@DRDRPETR
@DRDRPETR Жыл бұрын
Отличный обзор, хорошая штука этот FMAC.
@pswru
@pswru 3 жыл бұрын
Спасибо за труд, познавательно, хоть лично я и лишь читаю Си со словарём, а к АРМам вообще не подступался. DMA=ПДП (прямой доступ к памяти) устоявшаяся абревиатура из СССР. Чтоб эксель принимал запятые как разделитель при копипасте - оно должно в системных свойствах стоять как разделитель. Особенно помогает когда приходится чужие CVS файлы импортировать - в них разделитель полей запятая, а у нас - она разделитель целой и дробной, приходится временно менять подарок Билли всем не англосаксам. Чисто теоретически навскидку - глядя на 2:59 структуру - решение вопроса 15:58 может выглядеть как буфера на каждую фазу 1/3 от максимальных имеющихся 127 штук, при получении АЦП выборки фазы фильтр и ДМА получают (циклов за 10-20) в качестве настройки смещения буферов конкретной фазы, далее делают ~42 умножения с накоплением для этой выборки (уже быть могет в фоне), и так по кругу для трёх фаз. Удачи в исследованиях.
@ГАС-к3ъ
@ГАС-к3ъ 3 жыл бұрын
Ничего не понял, но очень интересно. Шутка. Автору спасибо. Ценные вещи.
@СволочьКозловский
@СволочьКозловский 2 жыл бұрын
Удивительная настойчивость
@РусланКраснощёков-ы8ж
@РусланКраснощёков-ы8ж 3 жыл бұрын
Большое спасибо) Жду теперь ещё БИХ фильтры) Было бы супер если помимо CubeMX был ещё CMSIS...
@АлександрНевский-е4д
@АлександрНевский-е4д 3 жыл бұрын
Очень круто! Большое спасибо, ждем новых видео!!! Больше ЦОС!!! ))
@johnrom8787
@johnrom8787 3 жыл бұрын
Тоже помню как столкнулся с ошибкой регистра в cmsis на stm32f417. Пришлось всю инициализацию по мануалу прописать
@johnrom8787
@johnrom8787 3 жыл бұрын
Вспомнил Лайонса ЦОС. Хорошая книжка
@floks700
@floks700 3 жыл бұрын
высоцкий - цифр фильтры на имс 1984 рабинер, шаффер, цифр обраб речевых сигналов. )) истоки, так сказать , начала.
@Diject
@Diject 3 жыл бұрын
Для DMA не имеет значения из/в куда отправлять данные - важно лишь что затриггерит саму передачу. То есть можно запустить передачу через DMA от АЦП, а писать из RAM в RAM, из любой переферии в любую переферию и т.д. Главное, чтобы участки памяти были доступны для DMA (можно глянуть в разделе System architecture мануала).
@TDMLab
@TDMLab 3 жыл бұрын
Ну да, но это не очевидно если не разу этим не пользовался. Даже ST в той ветке говорили что у них там бардак в документации относительно обращений по DMA к FMAC.
@FastChargeIsFuture
@FastChargeIsFuture 3 жыл бұрын
FMAC служат в основном для одной главной цели. Это аппаратная реализация функций компенсатора 2P2Z и 3P3Z и нужно это для создания БП работающих на очень высокой частоте, от 200кГц и выше (2P2Z и 3P3Z это как ПИД только круче). По принципу ADC - FMAC - PWM. Больше негде он особо не нужен.
@TDMLab
@TDMLab 3 жыл бұрын
FMAC это лишь аппаратная реализация цифровых фильтров, а область применений ЦФ просто огромна.
@FastChargeIsFuture
@FastChargeIsFuture 3 жыл бұрын
@@TDMLab Это понятно, модуль очень простой, целочисленный 16бит умножение, применений для него кроме кок для компенсатора, очень ограниченны. Но при желании, можно конечно делать все что угодно!
@TDMLab
@TDMLab 3 жыл бұрын
@@FastChargeIsFuture там ST-шники в апноуте даже про адаптивные фильтры заикались. А по сути LP фильтры небольших порядков не вредно применять на всех каналах аналоговых данных.
@FastChargeIsFuture
@FastChargeIsFuture 3 жыл бұрын
@@kokotmkokot4926 В самый раз. Я, например зарядками для электромобилей занимаюсь и БП у нас 10 - 20кВт, сейчас пользую f334, но G4 на отладке, в скором времени перейдем на них.
@KARMAElectronics
@KARMAElectronics 3 жыл бұрын
Так это магическое число и есть адрес периферийного модуля FMAC плюс офсет регистра внутри модуля)
@TDMLab
@TDMLab 3 жыл бұрын
Так и есть)
@DIY_Repair2024
@DIY_Repair2024 3 жыл бұрын
Класс, большое спасибо Вам!
@DIY-hv2hv
@DIY-hv2hv 8 ай бұрын
Спасибо, круто!
@aisonaison2877
@aisonaison2877 3 жыл бұрын
Какой ужас. Ты огромный молодец, что не сдался!
@АндрейКришнамурти
@АндрейКришнамурти 3 жыл бұрын
Капец, я б уже трижды застрелился, если б сам разбирался в этом! Респект терпению и технической грамотности автора!
@michaeltimoshkin919
@michaeltimoshkin919 3 жыл бұрын
Очень интересно, тоже себе плату заказал.
@TheVasil2010
@TheVasil2010 2 жыл бұрын
Супер! Спасибо!
@Sanchogus
@Sanchogus 3 жыл бұрын
Основательно подошел. Еще и с субтитрами заморочился. CORDIC тоже интересен.
@yuribochkarev4477
@yuribochkarev4477 3 жыл бұрын
Очень круто! Сними серию уроков по ЦОС, у тебя отлично получается
@alvarobs
@alvarobs 3 ай бұрын
Excellent video my friend.👏👏👏👏👏
@lira8329
@lira8329 3 жыл бұрын
Благодарю за подробный разбор! CORDIC алгоритм будет весьма кстати. И вообще всё что касается DSP обработки очень интересует. DSP это вообще как "чёрная магия".
@ВикторТаранов-м4с
@ВикторТаранов-м4с 3 жыл бұрын
Да автор правильно подметил что в случае с стм нужно как минимум 4 таких канала. 3 фазы и по входу dc мерять ток. А для обычного инвертора с lc контуром мне хватило программной реализации на дешманском контроллере avr.
@Электроникавдеталях-з7д
@Электроникавдеталях-з7д 3 жыл бұрын
Глобальный труд! На своём опыте знаю как трудно бывает первопроходцам, когда пишешь программы не имея примеров да ещё для новых чипов с неполной неустоявшейся документацией, а иной раз имеющих ещё и хардвэрные баги не отражённые в ерратах. Что касается магии на десятой с половиной минуте, то вы скорее всего не совсем разобрались в теме. Впрочем вас уже поправили в комментариях, не буду попугайничать. Удачи в освоении этих интересных чипов.
@МихаилСадилов-й1ж
@МихаилСадилов-й1ж 3 жыл бұрын
Про CORDIC давайте! Интеренсно. Никто про g474 толком не пишет и не снимает. Я аж отладку заказал после ваших видосов.
@АндрейК-м8д7ъ
@АндрейК-м8д7ъ 3 жыл бұрын
Это просто круто.
@ДмитрийНелюбин-д3у
@ДмитрийНелюбин-д3у 3 жыл бұрын
то что делает этот человек, в институте занимает не один семестр преподавания, это нереально сжатая выжимка по теории ЦОС
@floks700
@floks700 3 жыл бұрын
ерунду вы пишете. в Лэисе и в Чпи это занимало 1 семестр - теория бих/ких, фурье/бпф. кроме этого, парллельно изучалось ещё как минимум 12 курсов. а автор копает только 1 направление, но в свободном плавании, без ненужного ему балласта, поэтому ему легче, чем студенту.
@antonchik8012
@antonchik8012 3 жыл бұрын
Молодчина. Хотелось бы разобраться с DAC G серии. Непонятно, что значит внутренние и внешние DAC и какое всё таки кол-во каналов?
@TDMLab
@TDMLab 3 жыл бұрын
Ок, войдет в общий разбор переферии
@DIMAL
@DIMAL 3 жыл бұрын
Автор, ты крут !
@blackeagle1030
@blackeagle1030 3 жыл бұрын
Класс, жду видео про CORDIC
@Stereobot
@Stereobot 3 жыл бұрын
Я просто электрик,но все равно очень интересно)
@rustybroom7071
@rustybroom7071 3 жыл бұрын
Молорик!
@Vod-b4n
@Vod-b4n 3 жыл бұрын
Вам нужно использовать fpga и настраивать под себя.
@TDMLab
@TDMLab 3 жыл бұрын
Конкретно для цифровых фильтров да, ПЛИС то что доктор прописал, но для некоторых задач управления у МК есть несомненные преимущества.
@FastChargeIsFuture
@FastChargeIsFuture 3 жыл бұрын
Есть кстати бесплатная программка WinFilter, можно считать разные фильтра, плюс умеет делать исходники. Не matlab но на скорую руку считает хорошо.
@andreykunitsyn4168
@andreykunitsyn4168 3 жыл бұрын
uint32_t* Fmac_Wdata = (uint32_t*)(&FMAC->WDATA); а у вас значение из регистра в качестве адреса
@TDMLab
@TDMLab 3 жыл бұрын
Да, я действительно ошибся, вообще не обратил внимания, зря гнал на ST, по крайней мере в этом плане все там в порядке. Проверил с uint32_t *Fmac_Wdata = (uint32_t *)&FMAC->WDATA; все работает корректно, спасибо, что кто-то смотрит код, а то сам порой не видишь в упор очевидного:)
@Электроникавдеталях-з7д
@Электроникавдеталях-з7д 3 жыл бұрын
Спасибо за то, что обратили внимание на данный момент и не пожалели время на то, чтобы заглянуть а даташит! Как полезно бывает снимать видео! Можно узнать много нового для себя у Аксакалов в области Embedded!
@alexandrsavochkin9442
@alexandrsavochkin9442 3 жыл бұрын
1:37 "Обычно в задачах риалтайма у контроллера и так много дел по работе с ПИД-регуляторами..." Интересно, можно ли собственно ПИД-регулятор засунуть в FMAC? Рекуррентная формула для ПИД регулятора в дискретном времени вроде бы подходит в тот шаблон КИХ+БИХ, что заложен в FMAC.
@TDMLab
@TDMLab 3 жыл бұрын
В общем то да, на 4:50 пример с 3P3Z компенсатором, PID это тоже компенсатор microchipdeveloper.com/dcdt:selecting-the-compensator
@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)
@ДмитрийБуньков-щ8ш
@ДмитрийБуньков-щ8ш 3 жыл бұрын
Благодарная публика просит продолжения разбора G4 процов) Очень полезно. LL кстати пользуетесь?
@TDMLab
@TDMLab 3 жыл бұрын
Ок, все будет) Не, LL нет, только HAL + CMSIS
@DART2WADER
@DART2WADER 3 жыл бұрын
Тоже себе прикупил пару для посмотреть, что за зверь такой и чем жирный stlink v3 отличается от v2
@alexburceacov9232
@alexburceacov9232 3 жыл бұрын
Респект Автору за подачу материалов и упорство! А что у STM с тех.поддержкой, не пробовали обращаться?
@TDMLab
@TDMLab 3 жыл бұрын
Спасибо! нет не пробовал.
@olegpupkin4460
@olegpupkin4460 3 жыл бұрын
вери гуд!
@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.
@arduinomega1030
@arduinomega1030 7 ай бұрын
Походу нужно брать Digital Signal Processing класс. Оч интересная тема.
@Григорий-ч8д7я
@Григорий-ч8д7я 3 жыл бұрын
Не судите строго, но хочу скажем так по возможности сэкономить автору время на копипастинг и замены запятых в word: в общем для конкретной задачи приведенной в ролике есть решение в excel - "=ЗНАЧЕН(ПОДСТАВИТЬ(A1;".";","))", ПОДСТАВИТЬ(A1;".";",") - сначала меняем точки на запятые, а потом заставляем excel воспринимать как число. Но иногда бывает при копировании с вебстраниц встречаются еще паразитные пробелы и вот такая конструкция предпочтительна: "=ЗНАЧЕН(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A1;" ";"");".";",")) "
@TDMLab
@TDMLab 3 жыл бұрын
Спасибо)
@alexburceacov9232
@alexburceacov9232 3 жыл бұрын
Ну или в настройке Windows указать точку вместо запятой как десятичный разделитель 😀
@ivandiystatic6179
@ivandiystatic6179 3 жыл бұрын
Красава!🤝
@Addenri
@Addenri 3 жыл бұрын
Содержательное видео, помогло подобрать коэф. для КИХ-фильтра на G474. Но разрабатываем преобразователь, где необходим БИХ с меньшим сдвигом фазы. Тоже запускается, но в отличие от КИХ, АЧХ не соответствует рассчитаной в MATLAB. Пробовали ли вы запустить БИХ на этом FMAC?
@TDMLab
@TDMLab 3 жыл бұрын
Конкретно FMAC на БИХ не проверял, но математика есть математика. Учитывали ли вы Уменьшение разрядности до 16 бит для коэффициентов и расчетов, это в значительной степени может влиять на БИХ. Насколько АЧХ/ФЧХ отличаются? Совсем белиберда или немного другие?
@Addenri
@Addenri 3 жыл бұрын
@@TDMLab Предполагаю, точность могла потеряться при конвертации в формат с фикс. точкой. Согласно графику MATLAB, подавление должно начинаться от 10 кГц при частоте дискретизации 68 кГц и срезе ФНЧ 16 кГц. и 4-м порядке фильтра. На деле же амплитуда падает начиная с 3 кГц, и больше похоже на линейную характеристику.
@TDMLab
@TDMLab 3 жыл бұрын
@@Addenri У матлаба по идеи должен быть перерасчет для выбранной разрядности. Это может сильно влиять. Вообще фильтры БИХ высших порядков могут быть нестабильны, вот тут у меня немного про это есть kzbin.info/www/bejne/fX-Ug42hi854d6c По описанию фильтр работает совсем не так как нужно. Я бы начал с одного биквада, см видео.
@Addenri
@Addenri 3 жыл бұрын
@@TDMLab Спасибо, попробую разобраться с фильтрами меньших порядков.
@pingburner
@pingburner 3 жыл бұрын
Классно ты расколол этот орех. Я так и не понял от куда ты взял адрес ввода на модуль. Был в готовых примерах?
@TDMLab
@TDMLab 3 жыл бұрын
Адрес регистра я взял из отладки, но его можно взяnь и из reference manual-а
@lionlinux
@lionlinux 3 жыл бұрын
всё понятн ждём новых диких глюков в китайских клонах :-(
@TDMLab
@TDMLab 3 жыл бұрын
В китайских клонах не знаю, у меня нет, да и эта проблема с обращением к регистру была моим косяком, дальше расскажу)
@akvilion7365
@akvilion7365 3 жыл бұрын
Дублируй название ролика на английском, и сабы тоже бы прикрутить. Я же говорил - на эту тему инфы толком нет, в общих словах только, в тч от самих ST (что странно, обычно когда они хвалят свои фишки у них целые поваренные тома выходят). А камню уже как бы год...
@TDMLab
@TDMLab 3 жыл бұрын
Английские сабы добавил партнеры просили уже, а название итак переводится на язык зрителя. Да вообще столько обновлений куба было и ничего по этому блоку не добавили. Кстати, FMAC на H7 тоже есть. Спасибо!
@kjlas8
@kjlas8 2 жыл бұрын
Скорее всего можно заставить FMAC обрабатывать два канала если записывать коэффициенты с промежутком: a1, 0, a2, 0, a3, 0, a4, 0, ...
@TDMLab
@TDMLab 2 жыл бұрын
Как вы это видите?
@kjlas8
@kjlas8 2 жыл бұрын
​@@TDMLab проталкиваем в фильтр данные двух каналов по очереди. В четных ячейках будут данные одного канала в нечетных другого. Нули в коеффициентах маскируют второй канал.
@TDMLab
@TDMLab 2 жыл бұрын
@@kjlas8 Да, пожалуй это возможно. Уменьшим максимальную длину вдвое, но да, это работоспособно. Спасибо за интересный комментарий.
@artvk8294
@artvk8294 3 жыл бұрын
Использовать один блок для 3х фаз... Частота в 3 раза меньше... Может легче еще один контроллер поставить только на фильтры, подешевле, с малым кол. ножек, возможно g431? Насчет CORDIC конечно интересно послушать. Кстати, CORDIC и FMAC в g431 есть.
@TDMLab
@TDMLab 3 жыл бұрын
Да не, тогда легче сделать обычный аналоговый фильтр на ОУ. ST-шники продвигают идею, что не надо больше внешних компонентов, все внутри, но пока не совсем ясно, возможно еще расскажут подробнее.
@АндрейАлпатов-ъ5г
@АндрейАлпатов-ъ5г 3 жыл бұрын
А для фильтров и дсп не пробывали библиотеку для питона scipy.signals?
@TDMLab
@TDMLab 3 жыл бұрын
Нет
@vovanchik_ru4208
@vovanchik_ru4208 3 жыл бұрын
Получается на КИХ фильтре можно запилить свёрточный, входной слой нейронной сети?
@TDMLab
@TDMLab 3 жыл бұрын
О, нейронные сети на микроконтроллерах. Я уже пометил это себе как одну из будущих тем)
@vovanchik_ru4208
@vovanchik_ru4208 3 жыл бұрын
@@TDMLabЯ так понял, что один КИХ фильтр полностью соответствует принципу работы нейрона: входные значения, веса, сумматор. Осталось после сумматора запилить функцию срабатывания и фсё. Дальше плодить и размножать нейроны в слои. А дальше можно просто взять какую-нить модель, повыдёргивать оттуда веса со структурой и получится вот эта статья www.compel.ru/lib/140486 :)
@TDMLab
@TDMLab 3 жыл бұрын
@@vovanchik_ru4208 тихо-тихо, вы все секреты раскроете до начала:)))
@vovanchik_ru4208
@vovanchik_ru4208 3 жыл бұрын
@@TDMLab :)
@vovanchik_ru4208
@vovanchik_ru4208 3 жыл бұрын
@@TDMLab если будешь что-то пилить на эту тему - рекомендую и тему "OpenMV4 Mini" затронуть
@AlexanderBelikov
@AlexanderBelikov 3 жыл бұрын
У меня вопрос не по теме этого видео. Я делаю устройство для машины. В нем будет мега328-ая и блютус модуль hc-06. Я заметил что БТ модуль достаточно сильно шумит в линию питания и решил его отсадить на отдельное питание. Хочу чтоб у меги было достаточно стабильное питание чтоб не плыли показания АЦП. Планирую ставить 2 регулятора LM7805 но не знаю нужна ли какая-то дополнительная обвязка чтоб они друг другу не мешали. Конденсатор на входе я так понимаю будет один на 0.33 мкФ? Есть ли смысл ставить гальванические развязки (например изолированный DC-DC B0505-1W) чтоб убрать наводки от генератора? Спасибо за твои ролики, уже много всего полезного подчерпнул для себя!
@TDMLab
@TDMLab 3 жыл бұрын
Думаю, что не стоит никаких развязок так как они импульсные. Конденсаторы можно и побольше.
@stm32Lab
@stm32Lab Жыл бұрын
Круто, не знал, что коэффициенты можно домножать, т.к. важно их соотношение. Глупый вопрос, т.к. с ЦОС недавно: подключил DSP, там типы: f32, q31, q15, q7, при этом АЦП и ЦАП 12 бит (F407). Получается, можно использовать только FIR с q7?
@TDMLab
@TDMLab Жыл бұрын
Q15, Q32 это просто целочисленные знаковые форматы 16 и 32 бита, они подходят для обработки целочисленных данных с АЦП 12 бит с правым выравниванием. Тип данных должен быть больше или равен размерности входящих данных, но лучше использовать Q32 будет запас по точности вычислений и динамическому диапазону.
@sergeyrusmod5500
@sergeyrusmod5500 3 жыл бұрын
Лайк!
@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 То есть чтобы очистить вайл в твоём проэкте вейвлет оставалось только перевести ацп на дма? А в этом видео я даже не заметил что вайл пустой :) У тебя очень качественный контент, спасибо.
@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 kzbin.info/www/bejne/jHKQi6eef7Sdfck
@РодионБоркунов
@РодионБоркунов 3 жыл бұрын
Есть ещё бесплатная программка для генерирования FIR фильтров rePhase. На неё очень даже стоит взглянуть.
@TDMLab
@TDMLab 3 жыл бұрын
Она разве позволяет забирать FIR коэффициенты? Это выглядит как просто программа для фильтрации не для расчета.
@РодионБоркунов
@РодионБоркунов 3 жыл бұрын
@@TDMLab , так она для генерации коэффициентов в файл и сделана. Причем в разные форматы может, в том числе, и в txt, и csv..
@TDMLab
@TDMLab 3 жыл бұрын
@@РодионБоркунов Ок, спасибо, для аудио пожалуй неплохо что имеет графический эквалайзер.
@akvilion7365
@akvilion7365 3 жыл бұрын
Кста, можно не только проги обрезать, но и прикрыть названия измерительного ПО/оборудования. Если это не спонсоры, разумеется.
@TDMLab
@TDMLab 3 жыл бұрын
Мне для сиглента ничего не жалко лишь бы обновление за 21 год сделали:))
@3x__
@3x__ 3 жыл бұрын
👍
@TonyWilson-r5h
@TonyWilson-r5h 10 ай бұрын
Great video! Can you redo in English?
@souris771
@souris771 3 жыл бұрын
Сделайие видео, но мне ещё далеко до такого, вся эта математика пока ещё тёмный лес для меня.
@kardanium
@kardanium 2 жыл бұрын
Я такой аппаратный фильтр реализовал на FPGA.
@TDMLab
@TDMLab 2 жыл бұрын
Да, FPGA хорошо подходят для КИХ/БИХ фильтров, а если FPGA типа Zynq, то вообще всё для жизни уже на кристале есть.
@kardanium
@kardanium 2 жыл бұрын
@@TDMLab Я делал на Cyclone II. Там умножителей не так много, но мне хватило всего четырёх для свертки 24-битного потока с 18-битной импульсной характеристикой, длиной в 128 коэффициентов. Да, пришлось кольцевой буфер собирать на встроенных блоках памяти и ROM для ИХ. Плюс, управляющий конечный автомат и генератор адресов памяти. Ресурсов вроде немного ушло на него. Конечно, у более современных плисов уже не просто умножители, как у древнего Циклона, а навороченные DSP блоки. Особенно у Зайлинкса.
@TDMLab
@TDMLab 2 жыл бұрын
@@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, тем сложнее технически его восстановить.
@Diamond8822
@Diamond8822 3 жыл бұрын
Мужик, есть частотник invt gd200. Могу дать для опытов. Надо?
@pavel5345
@pavel5345 Жыл бұрын
ПРошло уже 2 года с момента опубликования видео а в кубе в части FMAC так нифига и не сделано (версия пакета под G4 ->1.5.1).
@TDMLab
@TDMLab Жыл бұрын
Да, забили они на фмак, как собственно и я в итоге не нашел ему применения.
@pavel5345
@pavel5345 Жыл бұрын
@@TDMLab да, то что FMAC на борту всего один - сильно ограничивает его применение. Хотя бы 3 завезли. Хотя бы под 3-фазные сети. И еще, может я что-то не понял, получается что на максимальной скорости семплирования 4 мсемпла/с с максимальным кол-вом коэффициентов FMAC работать не будет? Если так то это полумера от ST. МОжет поэтому они и сами на него забили и в кубе его не развивают.
@TDMLab
@TDMLab Жыл бұрын
@@pavel5345 Количество вычислений необходимых для расчета всех этапов фильтра на 256 при скорости 4 Мега выборки много больше производительности по тактовой частоте. То есть фильтр же обсчитывает по очереди все выходы, то есть 256 умножений и накопление и его тактирование такое же как и ЦП и он не успеет.
@aksel4180
@aksel4180 3 жыл бұрын
Молодец, на твоих примерах хоть учись.
@sledleo
@sledleo 3 жыл бұрын
Где Компел? Помощи от них нет?
@TDMLab
@TDMLab 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
@PyctamG
@PyctamG 3 жыл бұрын
Малоизвестные факт, Дмитрия на картошку не брали, он очень глубоко копал
@TDMLab
@TDMLab 3 жыл бұрын
Ха)
@sledleo
@sledleo 3 жыл бұрын
Видимо знающие дяди не могут запилить простую либу с уровнями сложности, например нулевой - одна функция в которую передается один параметр и т.д. И так по каждой теме
@dgo42
@dgo42 3 жыл бұрын
Из моего опыта работы с СТМ32 - много просто нет в кубе и надо долго и нудно "курить" даташиты...
@TDMLab
@TDMLab 3 жыл бұрын
Да, так и есть)
@DF-0997
@DF-0997 3 жыл бұрын
На компонентах не пробовал без этой преблуды сделать!
@odissey2
@odissey2 3 жыл бұрын
У Cypress PSoC5 был похожий цифровой фильтр 24х24-бит 128 taps максимум. В целом оказалась бесполезная штука. Слишком малое количество taps, и слишком сложно работать с ним. Опять же, всего один фильтр, а часто нужны несколько, и в каскаде. В-общем, не пошло, и в PSoC6 он был заброшен.
@TDMLab
@TDMLab 3 жыл бұрын
Согласен, если бы блоков было N-ное количество, можно было бы подумать, а так я думаю, что это "пилот".
@odissey2
@odissey2 3 жыл бұрын
@@TDMLab Спасибо за обзор микроконтроллера. Я давно приглядываюсь к ST линейке, но руки не доходят. В PSoC6 Cypress установил два процессора, Cortex M0. + M4. Так что можно, например, общаться с периферией (ADC, DAC) используя M0, а DSP делать в M4. Однако, в целом, PSoC6 "не пошёл', и сложно сказать почему. Это очень странный маркет.
@TDMLab
@TDMLab 3 жыл бұрын
@@odissey2 У ST-шников в самом жирном H7 семействе M4 + M7 и еще и этот FMAC, а так да, второе ядро можно как математический сопроцессор использовать)) В мире правит маркетинг, "Кипарисам" просто не повезло по всей видимости, хотя то что они работают в связке с Infineon думаю без масла на хлеб не останутся:)
@ivandiystatic6179
@ivandiystatic6179 3 жыл бұрын
Кордик даааа!!!
@sergoseleznev4979
@sergoseleznev4979 3 жыл бұрын
Со светом разберись. Мерцает на видео. Свет это не частотник там ШИМ без надобности.
@TDMLab
@TDMLab 3 жыл бұрын
Мерцания происходят из-за пересвета камеры, не имея профессионального осветительного прибора рассеянного света победить это иногда достаточно сложно, а делать темнее не хочу.
@ИгорьКулешов-н1я
@ИгорьКулешов-н1я 3 жыл бұрын
стоит чего то не норм!
@igorsuhonosov8757
@igorsuhonosov8757 3 жыл бұрын
На самом деле можно было найти адрес регистра FMAC_WDATA и сделать нужный указатель гораздо быстрее - обратившись к документу RM0440 Reference manual для STM32G4 Series. Сдвиг базового адреса 0x18 для регистра FMAC_WDATA указан на стр. 511 документа, а базовый регистр 0x4002 1400 для FMAC можно найти на странице 83 и того адрес нужного регистра 0x4002 1418
@TDMLab
@TDMLab 3 жыл бұрын
Проблема была не в нахождении адреса WDATA, это как раз не проблема) Настоящая засада была в том чтобы понять, что именно из-за этого модуль и не запускается.
@igorsuhonosov8757
@igorsuhonosov8757 3 жыл бұрын
@@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 коэффициентам происходит корректно, это видно по отклику фильтра на дельта функцию.
Свой контроллер для мотор-колеса
25:33
Beat Ronaldo, Win $1,000,000
22:45
MrBeast
Рет қаралды 156 МЛН
Леон киллер и Оля Полякова 😹
00:42
Канал Смеха
Рет қаралды 4,6 МЛН
Enceinte et en Bazard: Les Chroniques du Nettoyage ! 🚽✨
00:21
Two More French
Рет қаралды 42 МЛН
Анализ мультимодальных банковских данных
1:25:30
Факультет технологий искусственного интеллекта
Рет қаралды 38
STM32G4 ЦАП Скорость, буферизация
8:23
Уроки Ардуино. ПИД регулятор
28:57
Заметки Ардуинщика
Рет қаралды 483 М.
into to iot HW
51:05
Mohammad Aljaafreh
Рет қаралды 82