Спасибо всем кто пишет комментарии и ставит лайки, это важно для развития канала! Проблема, в коде на 10:05 в том, что указатель создан неправильно, моя ошибка, правильно так: (uint32_t*)&FMAC->WDATA С CMSIS для G4 в этом плане все в порядке, единственное, зачем надо следить, обращение ко всем регистрам FMAC должно быть только по словам "Access: word access", обращение в пол слова "half word" не работает. Код по ссылке в описании исправлен.
@TheNewWorld823 Жыл бұрын
Какой же сверхмощный мегатруд был предпринят Обязательно продошжайте!!!!!! Вы приносите огромную пользу всему человечеству, которое за это вам крайне благодарно)))!
@dimzen21203 жыл бұрын
Зачёт и уважуха, почёт первопроходцам берущим на себя наш гемор!
@bigbani13343 жыл бұрын
Спасибо огромное! Благодаря вашему видео я наконец смог понять суть цифровых фильтров! P.S. про БИХ фильтры послушал бы с огромным интересом
@floks7003 жыл бұрын
книжки надо читать и в инете всё есть. не стоит это изучать по видео программиста. это ведёт в тупик к убогим.
@kardanium2 жыл бұрын
Там проще. Пять коэффициентов, три умножаются с входным потоком и складываются, как в КИХ, оставшиеся два умножаются с выходным потоком и вычитаются. Получается, что БИХ охвачиваются обратной связью.
@ehvl3 жыл бұрын
Интересное видео, автор глубоко копает. Про тригонометрический ускоритель CORDIC хотелось бы узнать по подробнее.
@Engineer_Stepanov3 жыл бұрын
Необходимо узнать. Мы не можем себе позволить прорехи в знаниях.
@denisyegorov51093 жыл бұрын
Это видео доказывает, кто должен работать в Сколково. Думаю компания STM должна вас заметить ) если вы их поправляете и находите их косяки. Спасибо за информацию о фильтрах и об этом МК.
@RomaShtep3 жыл бұрын
Что за компания STM и причем тут Сколково? Это видео доказывает, что его автор очень упертый и отлично разбирается в материале от чего иногда у него происходят подобные недокументированные прорывы. Хвала отладке!!!
@taichiveron92783 жыл бұрын
Порог вхождения в stm32 очень, ооочень высокой. Соотношение функционал / цена идеальное. Но реальность такова, что это просто кусок кремния, без головы, которая это настроит. Вот есть у меня мечта идиота, своя универсальная ЧПУ стойка. Да такая, что бы скинуть цену на один порядок ниже для людей. И конечно же на стмке. Но времени изучать всё интересное уже нету... Вашим энтузиазмом восхищён!
@sledleo3 жыл бұрын
Видимо знающие дяди не могут запилить простую либу с уровнями сложностями, например нулевой - одна функция в которую передается один параметр и т.д.
@Электроникавдеталях-з7д3 жыл бұрын
CUBE IDE, использованная в этом видео очень сильно его снижает. Была бы у ни ещё документация хорошая. На её создании стишники как всегда экономят. Разбираться самому по коду в их приколах порой действительно бывает трудно!
@sledleo3 жыл бұрын
@@Электроникавдеталях-з7д была бы нормальная документация, а не портянка... была бы нормальная либа с уровнями (от простого к сложному), были бы примеры четкие и понятные.... А есть темный лес и только стараниями из народа есть возможность разобраться. Поэтому смотрю лаконичные статьи по CMSIS на Hubstub и Dimoon, смотрю видосы на нормальных каналах как этот
@Электроникавдеталях-з7д3 жыл бұрын
@@sledleo Согласен. Сам ST не слишком много внимания уделяет документации. Мягко говоря. Мог бы подкидывать немного деньжат для стимуляции каналов, которые готовы этим заниматься. Например тому, на которым мы находимся. Для него 2 - 3 тысячи баксов в месяц вообще НИЧТО, а для блогера приличные деньги благодаря которым он мого бы глубже погружаться в тему!
@easystm68653 жыл бұрын
К сожалению стмки стали дорожать
@SaLaGaDH3 жыл бұрын
спасибо, чрезвычайно полезная и интересная информация
@artvk82943 жыл бұрын
Спасибо за бесценную информацию! Все понятно и по делу.
@АлександрБулыга-н2г3 жыл бұрын
Ссылка на компэловскую статью не рабочая. За освещение темы цифровых фильтров отдельное спасибо!
@TDMLab3 жыл бұрын
Поправил ссылку. Спасибо!
@DancingToys5D3 жыл бұрын
www.compel.ru/lib/139617
@yurijshmelkov83203 жыл бұрын
спасибо за твое терпение и упорство!
@muctex3 жыл бұрын
Респект и уважение за проделанную работу 🤝
@danilamaster8773 жыл бұрын
Красавчик. Огромный труд. Разобраться, да еще и разжевать так доступно. Так держать. Очень интересно про трехфазные решения для фильтров. Даешь ликбез про кортекс... ЗЫ: С удовольствием помогу с музыкальной подложкой доя твоего канала. Будет эксклюзивно и чисто по авторским правам.
@ИгорьКабакин-ц7у9 ай бұрын
По поводу нет даже намёка на интересующий вопрос в интернете - удивлялся много раз как такое может быть , далее идут разборки , поиски , решения. И вот и ответ - найдя ответ такой ценой люди не делится информацией. Так что вам огромное спасибо , материал отличный .
@watashisolify3 жыл бұрын
Высший пилотаж!!! Поздравляю!.
@DRDRPETR Жыл бұрын
Отличный обзор, хорошая штука этот FMAC.
@pswru3 жыл бұрын
Спасибо за труд, познавательно, хоть лично я и лишь читаю Си со словарём, а к АРМам вообще не подступался. DMA=ПДП (прямой доступ к памяти) устоявшаяся абревиатура из СССР. Чтоб эксель принимал запятые как разделитель при копипасте - оно должно в системных свойствах стоять как разделитель. Особенно помогает когда приходится чужие CVS файлы импортировать - в них разделитель полей запятая, а у нас - она разделитель целой и дробной, приходится временно менять подарок Билли всем не англосаксам. Чисто теоретически навскидку - глядя на 2:59 структуру - решение вопроса 15:58 может выглядеть как буфера на каждую фазу 1/3 от максимальных имеющихся 127 штук, при получении АЦП выборки фазы фильтр и ДМА получают (циклов за 10-20) в качестве настройки смещения буферов конкретной фазы, далее делают ~42 умножения с накоплением для этой выборки (уже быть могет в фоне), и так по кругу для трёх фаз. Удачи в исследованиях.
@ГАС-к3ъ3 жыл бұрын
Ничего не понял, но очень интересно. Шутка. Автору спасибо. Ценные вещи.
@СволочьКозловский2 жыл бұрын
Удивительная настойчивость
@РусланКраснощёков-ы8ж3 жыл бұрын
Большое спасибо) Жду теперь ещё БИХ фильтры) Было бы супер если помимо CubeMX был ещё CMSIS...
@АлександрНевский-е4д3 жыл бұрын
Очень круто! Большое спасибо, ждем новых видео!!! Больше ЦОС!!! ))
@johnrom87873 жыл бұрын
Тоже помню как столкнулся с ошибкой регистра в cmsis на stm32f417. Пришлось всю инициализацию по мануалу прописать
@johnrom87873 жыл бұрын
Вспомнил Лайонса ЦОС. Хорошая книжка
@floks7003 жыл бұрын
высоцкий - цифр фильтры на имс 1984 рабинер, шаффер, цифр обраб речевых сигналов. )) истоки, так сказать , начала.
@Diject3 жыл бұрын
Для DMA не имеет значения из/в куда отправлять данные - важно лишь что затриггерит саму передачу. То есть можно запустить передачу через DMA от АЦП, а писать из RAM в RAM, из любой переферии в любую переферию и т.д. Главное, чтобы участки памяти были доступны для DMA (можно глянуть в разделе System architecture мануала).
@TDMLab3 жыл бұрын
Ну да, но это не очевидно если не разу этим не пользовался. Даже ST в той ветке говорили что у них там бардак в документации относительно обращений по DMA к FMAC.
@FastChargeIsFuture3 жыл бұрын
FMAC служат в основном для одной главной цели. Это аппаратная реализация функций компенсатора 2P2Z и 3P3Z и нужно это для создания БП работающих на очень высокой частоте, от 200кГц и выше (2P2Z и 3P3Z это как ПИД только круче). По принципу ADC - FMAC - PWM. Больше негде он особо не нужен.
@TDMLab3 жыл бұрын
FMAC это лишь аппаратная реализация цифровых фильтров, а область применений ЦФ просто огромна.
@FastChargeIsFuture3 жыл бұрын
@@TDMLab Это понятно, модуль очень простой, целочисленный 16бит умножение, применений для него кроме кок для компенсатора, очень ограниченны. Но при желании, можно конечно делать все что угодно!
@TDMLab3 жыл бұрын
@@FastChargeIsFuture там ST-шники в апноуте даже про адаптивные фильтры заикались. А по сути LP фильтры небольших порядков не вредно применять на всех каналах аналоговых данных.
@FastChargeIsFuture3 жыл бұрын
@@kokotmkokot4926 В самый раз. Я, например зарядками для электромобилей занимаюсь и БП у нас 10 - 20кВт, сейчас пользую f334, но G4 на отладке, в скором времени перейдем на них.
@KARMAElectronics3 жыл бұрын
Так это магическое число и есть адрес периферийного модуля FMAC плюс офсет регистра внутри модуля)
@TDMLab3 жыл бұрын
Так и есть)
@DIY_Repair20243 жыл бұрын
Класс, большое спасибо Вам!
@DIY-hv2hv8 ай бұрын
Спасибо, круто!
@aisonaison28773 жыл бұрын
Какой ужас. Ты огромный молодец, что не сдался!
@АндрейКришнамурти3 жыл бұрын
Капец, я б уже трижды застрелился, если б сам разбирался в этом! Респект терпению и технической грамотности автора!
@michaeltimoshkin9193 жыл бұрын
Очень интересно, тоже себе плату заказал.
@TheVasil20102 жыл бұрын
Супер! Спасибо!
@Sanchogus3 жыл бұрын
Основательно подошел. Еще и с субтитрами заморочился. CORDIC тоже интересен.
@yuribochkarev44773 жыл бұрын
Очень круто! Сними серию уроков по ЦОС, у тебя отлично получается
@alvarobs3 ай бұрын
Excellent video my friend.👏👏👏👏👏
@lira83293 жыл бұрын
Благодарю за подробный разбор! CORDIC алгоритм будет весьма кстати. И вообще всё что касается DSP обработки очень интересует. DSP это вообще как "чёрная магия".
@ВикторТаранов-м4с3 жыл бұрын
Да автор правильно подметил что в случае с стм нужно как минимум 4 таких канала. 3 фазы и по входу dc мерять ток. А для обычного инвертора с lc контуром мне хватило программной реализации на дешманском контроллере avr.
@Электроникавдеталях-з7д3 жыл бұрын
Глобальный труд! На своём опыте знаю как трудно бывает первопроходцам, когда пишешь программы не имея примеров да ещё для новых чипов с неполной неустоявшейся документацией, а иной раз имеющих ещё и хардвэрные баги не отражённые в ерратах. Что касается магии на десятой с половиной минуте, то вы скорее всего не совсем разобрались в теме. Впрочем вас уже поправили в комментариях, не буду попугайничать. Удачи в освоении этих интересных чипов.
@МихаилСадилов-й1ж3 жыл бұрын
Про CORDIC давайте! Интеренсно. Никто про g474 толком не пишет и не снимает. Я аж отладку заказал после ваших видосов.
@АндрейК-м8д7ъ3 жыл бұрын
Это просто круто.
@ДмитрийНелюбин-д3у3 жыл бұрын
то что делает этот человек, в институте занимает не один семестр преподавания, это нереально сжатая выжимка по теории ЦОС
@floks7003 жыл бұрын
ерунду вы пишете. в Лэисе и в Чпи это занимало 1 семестр - теория бих/ких, фурье/бпф. кроме этого, парллельно изучалось ещё как минимум 12 курсов. а автор копает только 1 направление, но в свободном плавании, без ненужного ему балласта, поэтому ему легче, чем студенту.
@antonchik80123 жыл бұрын
Молодчина. Хотелось бы разобраться с DAC G серии. Непонятно, что значит внутренние и внешние DAC и какое всё таки кол-во каналов?
@TDMLab3 жыл бұрын
Ок, войдет в общий разбор переферии
@DIMAL3 жыл бұрын
Автор, ты крут !
@blackeagle10303 жыл бұрын
Класс, жду видео про CORDIC
@Stereobot3 жыл бұрын
Я просто электрик,но все равно очень интересно)
@rustybroom70713 жыл бұрын
Молорик!
@Vod-b4n3 жыл бұрын
Вам нужно использовать fpga и настраивать под себя.
@TDMLab3 жыл бұрын
Конкретно для цифровых фильтров да, ПЛИС то что доктор прописал, но для некоторых задач управления у МК есть несомненные преимущества.
@FastChargeIsFuture3 жыл бұрын
Есть кстати бесплатная программка WinFilter, можно считать разные фильтра, плюс умеет делать исходники. Не matlab но на скорую руку считает хорошо.
@andreykunitsyn41683 жыл бұрын
uint32_t* Fmac_Wdata = (uint32_t*)(&FMAC->WDATA); а у вас значение из регистра в качестве адреса
@TDMLab3 жыл бұрын
Да, я действительно ошибся, вообще не обратил внимания, зря гнал на ST, по крайней мере в этом плане все там в порядке. Проверил с uint32_t *Fmac_Wdata = (uint32_t *)&FMAC->WDATA; все работает корректно, спасибо, что кто-то смотрит код, а то сам порой не видишь в упор очевидного:)
@Электроникавдеталях-з7д3 жыл бұрын
Спасибо за то, что обратили внимание на данный момент и не пожалели время на то, чтобы заглянуть а даташит! Как полезно бывает снимать видео! Можно узнать много нового для себя у Аксакалов в области Embedded!
@alexandrsavochkin94423 жыл бұрын
1:37 "Обычно в задачах риалтайма у контроллера и так много дел по работе с ПИД-регуляторами..." Интересно, можно ли собственно ПИД-регулятор засунуть в FMAC? Рекуррентная формула для ПИД регулятора в дискретном времени вроде бы подходит в тот шаблон КИХ+БИХ, что заложен в FMAC.
@TDMLab3 жыл бұрын
В общем то да, на 4:50 пример с 3P3Z компенсатором, PID это тоже компенсатор microchipdeveloper.com/dcdt:selecting-the-compensator
@Fastereus3 жыл бұрын
Автор доброе время суток, вот и вы наконец наткнулись на косяки STшек , когдато давно когда явыбирал платформу для большого массового заказа и какраз был момент что я работал с AT/ESP/i контроллерами а вот ST как то меня минули , толком IDE в те времена у них небыло сразу скажу, в общем купиля тогда 8 и 16 битный варианты истал ихизучать , и о боже чтото более сложное чем подергать ножкой запустить не могу, мне не нужны были шимы меня интересовало тогда пробуждение окнтроллера по внешнему сигналу ... поыв даташиты выяснилось что в прилагаемлом inc файле естьошибки , не верно указаны регисты и вуаля все заработало ... чутьпозже я наткнулся и на ошибку в мануале ... когда работал с аналоговым компаратором . ибо заначения коэфициента усиления указщнные в мане были обратнопропорциональны тем что я получал. с тех пор две отладки так и лежат ,а 23 бита пришедшую через месяц я даже не подключил так что я думаю что вы еще не раз хлебнете, кстати ни у кого я таких косяков не встречал, глюки IDE да а вот чтобы инки были косячные не разу или в мане такая серьезная ошибка ..
@TDMLab3 жыл бұрын
Ну, да, не доработали они этот блок, но в целом в что-то более простое ST дает легкий вход.
@Fastereus3 жыл бұрын
@@TDMLab угу если в include нет косяков
@TDMLab3 жыл бұрын
@@Fastereus Как оказалось в данном примере это я слепой, я не указатель отдавал DMA, а сам регистр)) оттого и была проблема. Думаю я не единственный который нашел такой "косяк" у ST)
@ДмитрийБуньков-щ8ш3 жыл бұрын
Благодарная публика просит продолжения разбора G4 процов) Очень полезно. LL кстати пользуетесь?
@TDMLab3 жыл бұрын
Ок, все будет) Не, LL нет, только HAL + CMSIS
@DART2WADER3 жыл бұрын
Тоже себе прикупил пару для посмотреть, что за зверь такой и чем жирный stlink v3 отличается от v2
@alexburceacov92323 жыл бұрын
Респект Автору за подачу материалов и упорство! А что у STM с тех.поддержкой, не пробовали обращаться?
@TDMLab3 жыл бұрын
Спасибо! нет не пробовал.
@olegpupkin44603 жыл бұрын
вери гуд!
@krisd95064 ай бұрын
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.
@arduinomega10307 ай бұрын
Походу нужно брать Digital Signal Processing класс. Оч интересная тема.
@Григорий-ч8д7я3 жыл бұрын
Не судите строго, но хочу скажем так по возможности сэкономить автору время на копипастинг и замены запятых в word: в общем для конкретной задачи приведенной в ролике есть решение в excel - "=ЗНАЧЕН(ПОДСТАВИТЬ(A1;".";","))", ПОДСТАВИТЬ(A1;".";",") - сначала меняем точки на запятые, а потом заставляем excel воспринимать как число. Но иногда бывает при копировании с вебстраниц встречаются еще паразитные пробелы и вот такая конструкция предпочтительна: "=ЗНАЧЕН(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A1;" ";"");".";",")) "
@TDMLab3 жыл бұрын
Спасибо)
@alexburceacov92323 жыл бұрын
Ну или в настройке Windows указать точку вместо запятой как десятичный разделитель 😀
@ivandiystatic61793 жыл бұрын
Красава!🤝
@Addenri3 жыл бұрын
Содержательное видео, помогло подобрать коэф. для КИХ-фильтра на G474. Но разрабатываем преобразователь, где необходим БИХ с меньшим сдвигом фазы. Тоже запускается, но в отличие от КИХ, АЧХ не соответствует рассчитаной в MATLAB. Пробовали ли вы запустить БИХ на этом FMAC?
@TDMLab3 жыл бұрын
Конкретно FMAC на БИХ не проверял, но математика есть математика. Учитывали ли вы Уменьшение разрядности до 16 бит для коэффициентов и расчетов, это в значительной степени может влиять на БИХ. Насколько АЧХ/ФЧХ отличаются? Совсем белиберда или немного другие?
@Addenri3 жыл бұрын
@@TDMLab Предполагаю, точность могла потеряться при конвертации в формат с фикс. точкой. Согласно графику MATLAB, подавление должно начинаться от 10 кГц при частоте дискретизации 68 кГц и срезе ФНЧ 16 кГц. и 4-м порядке фильтра. На деле же амплитуда падает начиная с 3 кГц, и больше похоже на линейную характеристику.
@TDMLab3 жыл бұрын
@@Addenri У матлаба по идеи должен быть перерасчет для выбранной разрядности. Это может сильно влиять. Вообще фильтры БИХ высших порядков могут быть нестабильны, вот тут у меня немного про это есть kzbin.info/www/bejne/fX-Ug42hi854d6c По описанию фильтр работает совсем не так как нужно. Я бы начал с одного биквада, см видео.
@Addenri3 жыл бұрын
@@TDMLab Спасибо, попробую разобраться с фильтрами меньших порядков.
@pingburner3 жыл бұрын
Классно ты расколол этот орех. Я так и не понял от куда ты взял адрес ввода на модуль. Был в готовых примерах?
@TDMLab3 жыл бұрын
Адрес регистра я взял из отладки, но его можно взяnь и из reference manual-а
@lionlinux3 жыл бұрын
всё понятн ждём новых диких глюков в китайских клонах :-(
@TDMLab3 жыл бұрын
В китайских клонах не знаю, у меня нет, да и эта проблема с обращением к регистру была моим косяком, дальше расскажу)
@akvilion73653 жыл бұрын
Дублируй название ролика на английском, и сабы тоже бы прикрутить. Я же говорил - на эту тему инфы толком нет, в общих словах только, в тч от самих ST (что странно, обычно когда они хвалят свои фишки у них целые поваренные тома выходят). А камню уже как бы год...
@TDMLab3 жыл бұрын
Английские сабы добавил партнеры просили уже, а название итак переводится на язык зрителя. Да вообще столько обновлений куба было и ничего по этому блоку не добавили. Кстати, FMAC на H7 тоже есть. Спасибо!
@kjlas82 жыл бұрын
Скорее всего можно заставить FMAC обрабатывать два канала если записывать коэффициенты с промежутком: a1, 0, a2, 0, a3, 0, a4, 0, ...
@TDMLab2 жыл бұрын
Как вы это видите?
@kjlas82 жыл бұрын
@@TDMLab проталкиваем в фильтр данные двух каналов по очереди. В четных ячейках будут данные одного канала в нечетных другого. Нули в коеффициентах маскируют второй канал.
@TDMLab2 жыл бұрын
@@kjlas8 Да, пожалуй это возможно. Уменьшим максимальную длину вдвое, но да, это работоспособно. Спасибо за интересный комментарий.
@artvk82943 жыл бұрын
Использовать один блок для 3х фаз... Частота в 3 раза меньше... Может легче еще один контроллер поставить только на фильтры, подешевле, с малым кол. ножек, возможно g431? Насчет CORDIC конечно интересно послушать. Кстати, CORDIC и FMAC в g431 есть.
@TDMLab3 жыл бұрын
Да не, тогда легче сделать обычный аналоговый фильтр на ОУ. ST-шники продвигают идею, что не надо больше внешних компонентов, все внутри, но пока не совсем ясно, возможно еще расскажут подробнее.
@АндрейАлпатов-ъ5г3 жыл бұрын
А для фильтров и дсп не пробывали библиотеку для питона scipy.signals?
@TDMLab3 жыл бұрын
Нет
@vovanchik_ru42083 жыл бұрын
Получается на КИХ фильтре можно запилить свёрточный, входной слой нейронной сети?
@TDMLab3 жыл бұрын
О, нейронные сети на микроконтроллерах. Я уже пометил это себе как одну из будущих тем)
@vovanchik_ru42083 жыл бұрын
@@TDMLabЯ так понял, что один КИХ фильтр полностью соответствует принципу работы нейрона: входные значения, веса, сумматор. Осталось после сумматора запилить функцию срабатывания и фсё. Дальше плодить и размножать нейроны в слои. А дальше можно просто взять какую-нить модель, повыдёргивать оттуда веса со структурой и получится вот эта статья www.compel.ru/lib/140486 :)
@TDMLab3 жыл бұрын
@@vovanchik_ru4208 тихо-тихо, вы все секреты раскроете до начала:)))
@vovanchik_ru42083 жыл бұрын
@@TDMLab :)
@vovanchik_ru42083 жыл бұрын
@@TDMLab если будешь что-то пилить на эту тему - рекомендую и тему "OpenMV4 Mini" затронуть
@AlexanderBelikov3 жыл бұрын
У меня вопрос не по теме этого видео. Я делаю устройство для машины. В нем будет мега328-ая и блютус модуль hc-06. Я заметил что БТ модуль достаточно сильно шумит в линию питания и решил его отсадить на отдельное питание. Хочу чтоб у меги было достаточно стабильное питание чтоб не плыли показания АЦП. Планирую ставить 2 регулятора LM7805 но не знаю нужна ли какая-то дополнительная обвязка чтоб они друг другу не мешали. Конденсатор на входе я так понимаю будет один на 0.33 мкФ? Есть ли смысл ставить гальванические развязки (например изолированный DC-DC B0505-1W) чтоб убрать наводки от генератора? Спасибо за твои ролики, уже много всего полезного подчерпнул для себя!
@TDMLab3 жыл бұрын
Думаю, что не стоит никаких развязок так как они импульсные. Конденсаторы можно и побольше.
@stm32Lab Жыл бұрын
Круто, не знал, что коэффициенты можно домножать, т.к. важно их соотношение. Глупый вопрос, т.к. с ЦОС недавно: подключил DSP, там типы: f32, q31, q15, q7, при этом АЦП и ЦАП 12 бит (F407). Получается, можно использовать только FIR с q7?
@TDMLab Жыл бұрын
Q15, Q32 это просто целочисленные знаковые форматы 16 и 32 бита, они подходят для обработки целочисленных данных с АЦП 12 бит с правым выравниванием. Тип данных должен быть больше или равен размерности входящих данных, но лучше использовать Q32 будет запас по точности вычислений и динамическому диапазону.
@sergeyrusmod55003 жыл бұрын
Лайк!
@pingburner3 жыл бұрын
у меня тут в моём последнем и единственном проэкте на стм32 да и вообще на МК был worning с DMA. в кубе стояло half-word а в проэкте в SW4STM32 функция ADC_чётотам_DMA принимало адресс (*uint_32) и когда я всирал ей адрес uint_16 переменной вылетал ворнинг. Но всё работало и даже при исправлении этого ворнинга всё ломалось и двухканальное сканирование писалось целиком в первый элемент массива. Это я просто к тому твоему мнению что все ворнинги надо исправить как можно скорее и не тянуть до сдачи проэкта. У меня при первом же знакомстве с МК этот ворнинг так и попал в окончательную сборку.
@TDMLab3 жыл бұрын
Иногда ворнинг локализуют, то есть понимают то отчего он и как повлияет в дальнейшем. Хотя нужно стремиться этого избегать и лучше переписать весь блок если какой-то метод приводит к ворнингу. Все решается в конкретном случае.
@pingburner3 жыл бұрын
@@TDMLab спасибо, разморочил. Переписывать HAL мы конечно же не будем. По крайней мере в этой жизни.
@pingburner3 жыл бұрын
@@TDMLab А ты представляешь как вообще пишутся колбеки в си на аппаратные события? Особо не гуглится этот вопрос. Было бы прикольно посмореть пример программы с абсолютно пустым while() в мейне. Пускай что то простенькое но с самодельной хотя бы одной колбек функцией. Гуглится что это функция, которая принимает адрессный тип данных и больше ничего. Просто _IO переменную сделать и вписать указатель на неё в прототип функции? сомневаюсь что это будет работать. ЗЫ: извиняюсь если не точен в терминологиях.
@TDMLab3 жыл бұрын
@@pingburner так дело полагаю было не в HAL, а то как этот слой был применен. Хотя опять таки вам виднее. Это проект с пустым while если что:) У меня есть видео про вейвлет генератор, там я применяю кол-бек и рассказываю для чего.
@pingburner3 жыл бұрын
@@TDMLab То есть чтобы очистить вайл в твоём проэкте вейвлет оставалось только перевести ацп на дма? А в этом видео я даже не заметил что вайл пустой :) У тебя очень качественный контент, спасибо.
@massacr64283 жыл бұрын
Здраствуйте! Спасибо за видео! Хотел спросить-предложить!?, не хотите на базе STM32 сделать метеостанцию ? , к примеру взять STM32 , модуль барометр BME280, модуль чтения записи MicroSD кардридер и модуль связи ,к примеру радиомодуль NRF24L01 2.4ГГц, сделать передачу данных через модуль связи на пк, видел в Ютубе на ESP8266 что то подобное делали, но там нету записи на микро сд как резерв записи. Думаю для многих людей будет очень интересно увидиеть как сделать метеостанцию на STM32. спасибо !
@TDMLab3 жыл бұрын
Ох, этих погодных станций на просторах интернета...
@massacr64283 жыл бұрын
@@TDMLab да как бы не видел, не одной, чтоб писала информацию на сдкарту, и предавала на другой стм32,на дисплей информацию, возможно я ищу не правильно?)
@TDMLab3 жыл бұрын
@@massacr6428 На esp8266 kzbin.info/www/bejne/jHKQi6eef7Sdfck
@РодионБоркунов3 жыл бұрын
Есть ещё бесплатная программка для генерирования FIR фильтров rePhase. На неё очень даже стоит взглянуть.
@TDMLab3 жыл бұрын
Она разве позволяет забирать FIR коэффициенты? Это выглядит как просто программа для фильтрации не для расчета.
@РодионБоркунов3 жыл бұрын
@@TDMLab , так она для генерации коэффициентов в файл и сделана. Причем в разные форматы может, в том числе, и в txt, и csv..
@TDMLab3 жыл бұрын
@@РодионБоркунов Ок, спасибо, для аудио пожалуй неплохо что имеет графический эквалайзер.
@akvilion73653 жыл бұрын
Кста, можно не только проги обрезать, но и прикрыть названия измерительного ПО/оборудования. Если это не спонсоры, разумеется.
@TDMLab3 жыл бұрын
Мне для сиглента ничего не жалко лишь бы обновление за 21 год сделали:))
@3x__3 жыл бұрын
👍
@TonyWilson-r5h10 ай бұрын
Great video! Can you redo in English?
@souris7713 жыл бұрын
Сделайие видео, но мне ещё далеко до такого, вся эта математика пока ещё тёмный лес для меня.
@kardanium2 жыл бұрын
Я такой аппаратный фильтр реализовал на FPGA.
@TDMLab2 жыл бұрын
Да, FPGA хорошо подходят для КИХ/БИХ фильтров, а если FPGA типа Zynq, то вообще всё для жизни уже на кристале есть.
@kardanium2 жыл бұрын
@@TDMLab Я делал на Cyclone II. Там умножителей не так много, но мне хватило всего четырёх для свертки 24-битного потока с 18-битной импульсной характеристикой, длиной в 128 коэффициентов. Да, пришлось кольцевой буфер собирать на встроенных блоках памяти и ROM для ИХ. Плюс, управляющий конечный автомат и генератор адресов памяти. Ресурсов вроде немного ушло на него. Конечно, у более современных плисов уже не просто умножители, как у древнего Циклона, а навороченные DSP блоки. Особенно у Зайлинкса.
@TDMLab2 жыл бұрын
@@kardanium Да, новые плисины крутые есть. Я работал с циклоном 3, делал адаптивный КИХ фильтр, корректор АЧХ проводного канала связи. Он по известной тестовой последовательности подбирал оптимальные коэффициенты минимизируя межсимволную интерференцию и шумы. Было что то типа 64 или 128 коэффициентов. Работало прям как магия после того как мы раньше это делали отвёрткой по сигналу на осцилле, подстраивая набор из 2-3 аналоговых ФВЧ.
@TDMLab2 жыл бұрын
@@kardanium Я использовал последовательно-пораллельную схему работы аппаратных умножителей, задействуя один несколько раз за одну выборку АЦП. У меня был не высокий поток данных, 16 бит 1-2Мвыб/с
@kardanium2 жыл бұрын
@@TDMLab Да, ныне аналог уходит в прошлое. Сейчас даже простое радио реализуют через оцифровку и последующую цифровую обработку. Ну, у меня с умножителями так же было. Один использовался на все 128 операций. Их четыре ушло, потому что они 18-битные, а выборки 24 бита. Квартус собрал из четырёх один. Скорость потока в моем случае была ещё ниже - 48кВыб. Это обычный аудиопоток. Потоков два было - для левого и правого канала. Кольцевых буферов два, одна ROM и управляющая часть тоже общая на оба канала, так как выборки поступают параллельно. Фильтр этот использовался в роли фильтра-корректора после апсемплинга и CIC интерполятора. Интерполяция много нервов съела, так как чем ближе частота сигнала к частоте Fs/2, тем сложнее технически его восстановить.
@Diamond88223 жыл бұрын
Мужик, есть частотник invt gd200. Могу дать для опытов. Надо?
@pavel5345 Жыл бұрын
ПРошло уже 2 года с момента опубликования видео а в кубе в части FMAC так нифига и не сделано (версия пакета под G4 ->1.5.1).
@TDMLab Жыл бұрын
Да, забили они на фмак, как собственно и я в итоге не нашел ему применения.
@pavel5345 Жыл бұрын
@@TDMLab да, то что FMAC на борту всего один - сильно ограничивает его применение. Хотя бы 3 завезли. Хотя бы под 3-фазные сети. И еще, может я что-то не понял, получается что на максимальной скорости семплирования 4 мсемпла/с с максимальным кол-вом коэффициентов FMAC работать не будет? Если так то это полумера от ST. МОжет поэтому они и сами на него забили и в кубе его не развивают.
@TDMLab Жыл бұрын
@@pavel5345 Количество вычислений необходимых для расчета всех этапов фильтра на 256 при скорости 4 Мега выборки много больше производительности по тактовой частоте. То есть фильтр же обсчитывает по очереди все выходы, то есть 256 умножений и накопление и его тактирование такое же как и ЦП и он не успеет.
@aksel41803 жыл бұрын
Молодец, на твоих примерах хоть учись.
@sledleo3 жыл бұрын
Где Компел? Помощи от них нет?
@TDMLab3 жыл бұрын
Мы идем параллельными курсами:)
@johnblack75363 жыл бұрын
cmsis st давно не развивает. Вместо cmsis использую LL.
@TDMLab3 жыл бұрын
Это как? А на чем LL написан тогда?:) developer.arm.com/tools-and-software/embedded/cmsis А вообще ничего против не имею, хотя сам использую HAL + CMSIS
@johnblack75363 жыл бұрын
@@TDMLab базовый адрес FMAC в файле stm32g474xx.h #define FMAC_BASE (AHB1PERIPH_BASE + 0x1400UL). А LL - собственная библиотека ST, к CMSIS отношения не имеет. В STM32CubeMX вариантов инициализации периферии только 2 - LL и HAL
@TDMLab3 жыл бұрын
@@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
@PyctamG3 жыл бұрын
Малоизвестные факт, Дмитрия на картошку не брали, он очень глубоко копал
@TDMLab3 жыл бұрын
Ха)
@sledleo3 жыл бұрын
Видимо знающие дяди не могут запилить простую либу с уровнями сложности, например нулевой - одна функция в которую передается один параметр и т.д. И так по каждой теме
@dgo423 жыл бұрын
Из моего опыта работы с СТМ32 - много просто нет в кубе и надо долго и нудно "курить" даташиты...
@TDMLab3 жыл бұрын
Да, так и есть)
@DF-09973 жыл бұрын
На компонентах не пробовал без этой преблуды сделать!
@odissey23 жыл бұрын
У Cypress PSoC5 был похожий цифровой фильтр 24х24-бит 128 taps максимум. В целом оказалась бесполезная штука. Слишком малое количество taps, и слишком сложно работать с ним. Опять же, всего один фильтр, а часто нужны несколько, и в каскаде. В-общем, не пошло, и в PSoC6 он был заброшен.
@TDMLab3 жыл бұрын
Согласен, если бы блоков было N-ное количество, можно было бы подумать, а так я думаю, что это "пилот".
@odissey23 жыл бұрын
@@TDMLab Спасибо за обзор микроконтроллера. Я давно приглядываюсь к ST линейке, но руки не доходят. В PSoC6 Cypress установил два процессора, Cortex M0. + M4. Так что можно, например, общаться с периферией (ADC, DAC) используя M0, а DSP делать в M4. Однако, в целом, PSoC6 "не пошёл', и сложно сказать почему. Это очень странный маркет.
@TDMLab3 жыл бұрын
@@odissey2 У ST-шников в самом жирном H7 семействе M4 + M7 и еще и этот FMAC, а так да, второе ядро можно как математический сопроцессор использовать)) В мире правит маркетинг, "Кипарисам" просто не повезло по всей видимости, хотя то что они работают в связке с Infineon думаю без масла на хлеб не останутся:)
@ivandiystatic61793 жыл бұрын
Кордик даааа!!!
@sergoseleznev49793 жыл бұрын
Со светом разберись. Мерцает на видео. Свет это не частотник там ШИМ без надобности.
@TDMLab3 жыл бұрын
Мерцания происходят из-за пересвета камеры, не имея профессионального осветительного прибора рассеянного света победить это иногда достаточно сложно, а делать темнее не хочу.
@ИгорьКулешов-н1я3 жыл бұрын
стоит чего то не норм!
@igorsuhonosov87573 жыл бұрын
На самом деле можно было найти адрес регистра FMAC_WDATA и сделать нужный указатель гораздо быстрее - обратившись к документу RM0440 Reference manual для STM32G4 Series. Сдвиг базового адреса 0x18 для регистра FMAC_WDATA указан на стр. 511 документа, а базовый регистр 0x4002 1400 для FMAC можно найти на странице 83 и того адрес нужного регистра 0x4002 1418
@TDMLab3 жыл бұрын
Проблема была не в нахождении адреса WDATA, это как раз не проблема) Настоящая засада была в том чтобы понять, что именно из-за этого модуль и не запускается.
@igorsuhonosov87573 жыл бұрын
@@TDMLab Ага понимаю, у меня после кучи потраченных часов на поиски и отладку, уже параноя появилась, теперь все используемые библиотеки проверяю на соответствие адресам регистров. Долго, зато нервы целее =).
@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 Жыл бұрын
Я уже не помню, а там ядро используется для вывода в ЦАП? Я там прерывание возможно использую. А если в ЦАП не выводить или опять использовать DMA? FMAC может принять новую выборку, у него есть кольцевой буфер. Фильтрация по всем 127 коэффициентам происходит корректно, это видно по отклику фильтра на дельта функцию.