Карманный осциллограф на STM32

Кто любит RISC в жизни, заходим, не стесняемся.
Аватара пользователя
Barbaris23
Открыл глаза
Сообщения: 45
Зарегистрирован: Пн авг 15, 2016 23:22:14

Re: Карманный осциллограф на STM32

Сообщение Barbaris23 »

GFX писал(а): Вот вам ништяков парочка, для затравки :wink:
Скрины.rar
Вот ЭТО он теперь может? Ничего себе :shock: , не ожидал... Дак это .. Вообще ... Пупер-супер!!! :music:
Плата уже на таможне, скоро приедет, капец как долго доставка ... ОУ вообще где-то застряли ...
Реклама
Аватара пользователя
Andrew Martin
Вымогатель припоя
Сообщения: 606
Зарегистрирован: Вт июн 25, 2013 18:45:07

Re: Карманный осциллограф на STM32

Сообщение Andrew Martin »

Не влезет 1024 точки - сделайте прокрутку по горизонтали. Индикация уровня по маркеру в децибелах тоже желательна, можно логарифмированием сжать ДД и отобразить на спектрограмме как большие амплитуды, так и малые.
С вычислительными мощностями вашего МК у вас и на 1024 должно летать. В нейлскопе МК куда как слабее. Я для убогого М0 делал на асме, на 256 точек затрачивается менее 40 000 тактов, на М3 можно сделать в разы лучше.
Реклама
Аватара пользователя
GFX
Поставщик валерьянки для Кота
Сообщения: 2040
Зарегистрирован: Вт окт 23, 2012 18:36:14
Откуда: Ростов-на-Дону

Re: Карманный осциллограф на STM32

Сообщение GFX »

Barbaris23 писал(а): Вот ЭТО он теперь может? ОУ вообще где-то застряли ...
Может :beer: Мои тоже застряли, причем отправлены с треком, такие обычно быстро приходят и отслеживаются, а этот нет и трек не виден, видимо надурил продавец, а что делать то, придется ждать пока выйдет срок и открывать диспут, жаль конечно столько времени потерял. В другом месте заказывать, а вдруг придут, итак с запасом их там кучка и стоили дорого, печаль в общем.

Добавлено after 28 minutes 57 seconds:
Andrew Martin писал(а):Не влезет 1024 точки - сделайте прокрутку по горизонтали. Индикация уровня по маркеру в децибелах тоже желательна, можно логарифмированием сжать ДД и отобразить на спектрограмме как большие амплитуды, так и малые.
С вычислительными мощностями вашего МК у вас и на 1024 должно летать. В нейлскопе МК куда как слабее. Я для убогого М0 делал на асме, на 256 точек затрачивается менее 40 000 тактов, на М3 можно сделать в разы лучше.
Должно - не должно, я делал 1024 и мне не понравилась скорость, памяти уходит воз, которой нет для этого, нужды я в этот не вижу, выложите быстрый код с прокруткой, добавлю. В нейлоскопе 256, я сделаю 512, может быть что-то измениться в будущем.

Добавлено after 1 hour 26 minutes 35 seconds:
Вот скрин с 512 FFP, однако он жрет 80кбайт памяти программ в качестве памяти констант, т.е. там какие-то огромные таблицы в нем судя по всему, мне это не нравится. Прошлый потреблял ~30, что более-менее хоть, а 80 из 256 это перебор, памяти программ занято столько сколько ее нет, как все работает непонятно. Нужен более экономичный алгоритм БПФ с поддержкой 512.
Скрины.rar
(16.04 КБ) 281 скачивание
Собственно вот эта собака жрет неимоверно память

Code (inc. data) RO Data RW Data ZI Data Debug Library Member Name
0 0 78936 0 0 4664 arm_common_tables.o
Аватара пользователя
Andrew Martin
Вымогатель припоя
Сообщения: 606
Зарегистрирован: Вт июн 25, 2013 18:45:07

Re: Карманный осциллограф на STM32

Сообщение Andrew Martin »

А это вам плата за готовые либы - получи и распишись. :)))
Всё, что нужно для БПФ - это таблица 3/4 периода синуса, для RFFT на 1024 точек (CFFT на 512 точек). Для 16-битных данных надо таблицу поворачивающих множителей в 768 байт, плюс таблицу индексов для битреверсивной перестановки размером в 1К, чтобы быстрее летало. Итого можно свободно вписаться в 3К вместе с кодом функции. А у вас с внешним АЦП вообще разрядность данных 8 бит, соответственно можно сэкономить даже на точности множителей.
Математику нужно хорошую, а потом финтифлюшки цеплять, а то тачскрин уже прикрутили и чекбоксов откуда-то нарезали, а анализатор спектра по-прежнему игрушечный.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
GFX
Поставщик валерьянки для Кота
Сообщения: 2040
Зарегистрирован: Вт окт 23, 2012 18:36:14
Откуда: Ростов-на-Дону

Re: Карманный осциллограф на STM32

Сообщение GFX »

Нашел отличную либу, вообще ничего не жрет, 6 или 8 кбайт памяти программ и все, оператива бесплатно из кучи :kill: 512 длина, разницы с вчерашней нет(даже скрины выкладывать смысла нет), а экономия колоссальная.

Добавлено after 4 minutes 24 seconds:
Andrew Martin писал(а):А это вам плата за готовые либы - получи и распишись. :)))
Какой-то прикол и в ней есть. эта либа не абы кого, это либа такой фирмы для которой вы и я дворники.
Andrew Martin писал(а): Математику нужно хорошую, а потом финтифлюшки цеплять, а то тачскрин уже прикрутили и чекбоксов откуда-то нарезали, а анализатор спектра по-прежнему игрушечный.
Можно подумать тач скрин мешает математике и чекбоксы, не завидуйте, себе нарежте :facepalm: Одно другому не мешает, вы меня веселите уже своими коментами :lol:
Реклама
Аватара пользователя
Andrew Martin
Вымогатель припоя
Сообщения: 606
Зарегистрирован: Вт июн 25, 2013 18:45:07

Re: Карманный осциллограф на STM32

Сообщение Andrew Martin »

GFX писал(а):Можно подумать тач скрин мешает математике и чекбоксы, не завидуйте, себе нарежте :facepalm: Одно другому не мешает, вы меня веселите уже своими коментами :lol:
Ну это же хорошо, на мажорной волне лучше работается! :music: :solder:

А теперь внимание, ОФФТОП.
В фирмах тоже работают люди. Всё зависит от корпоративной политики, не мне вам это рассказывать, почему open source проекты зачастую качественнее, чем коммерческие.
Вы согласны, что в ST мы тоже дворники? Я так точно согласен (помахиваю метлой) :))) Тогда взгляните на это.
Тут данные о быстродействии стандартных БПФ из CMSIS. Для 256-точечного комплексного БПФ на М0 указывают 175 375(!!!) циклов, тогда как я уложился в менее чем 70 000 (даже сам не поверил). Таков парадокс современного мира - дворники порой пишут лучший код, чем раскрутые фирмы. А посему пусть на вас не давит ничей авторитет при выборе либ или чего-то другого.
Реклама
Аватара пользователя
scorpi_0n
Вымогатель припоя
Сообщения: 616
Зарегистрирован: Вс ноя 01, 2015 13:13:49

Re: Карманный осциллограф на STM32

Сообщение scorpi_0n »

Andrew Martin писал(а):не мне вам это рассказывать, почему open source проекты зачастую качественнее, чем коммерческие.
Очень спорный момент. Как правило - наоборот.
Тут данные о быстродействии стандартных БПФ из CMSIS. Для 256-точечного комплексного БПФ на М0 указывают 175 375(!!!) циклов, тогда как я уложился в менее чем 70 000 (даже сам не поверил). Таков парадокс современного мира - дворники порой пишут лучший код, чем раскрутые фирмы. А посему пусть на вас не давит ничей авторитет при выборе либ или чего-то другого.
А что вас так удивило? Сколько существуют МК, столько и существует меряние крутизной кода. Но в последнее время это уже мало кого интересует. Даже всё наоборот - никого не интересует размер кода, главное чтобы он был, был нахаляву и чтобы юзать не вдаваясь в подробности.
Да и сам размер кода ещё ни о чём не говорит, это ещё не значит что он быстрый. Да и большинство кода от производителя это только примеры применения, а не непревзойдённый образец. А в целом ничего не изменилось за многие годы. Если что-то не так, то лучше всего написать самому.

Добавлено after 29 minutes 30 seconds:
Andrew Martin писал(а): таблицу индексов для битреверсивной перестановки размером в 1К, чтобы быстрее летало.
В М3 и выше битреверс хардварный.
Аватара пользователя
GFX
Поставщик валерьянки для Кота
Сообщения: 2040
Зарегистрирован: Вт окт 23, 2012 18:36:14
Откуда: Ростов-на-Дону

Re: Карманный осциллограф на STM32

Сообщение GFX »

Сделал логарифмическую шкалу в Дб, конечно обычная была чище, на этой видно слишком многое, ну раз так положено хай будет. от 0 до -75 Дб, после сборки финальной версии посмотрю если сигнал будет чистым на -75Дб, добавлю вниз еще, а пока итак все зашумлено.
Скрины.rar
(9.18 КБ) 244 скачивания
Что брать за 0 дб? Я так полагаю, что сигнал с размахом в 256? Если сигнал будет на весь экран то это 0 Дб, а остальное ниже и гармоники и основная частота?
Аватара пользователя
Andrew Martin
Вымогатель припоя
Сообщения: 606
Зарегистрирован: Вт июн 25, 2013 18:45:07

Re: Карманный осциллограф на STM32

Сообщение Andrew Martin »

scorpi_0n писал(а): А что вас так удивило? Сколько существуют МК, столько и существует меряние крутизной кода. Но в последнее время это уже мало кого интересует. Даже всё наоборот - никого не интересует размер кода, главное чтобы он был, был нахаляву и чтобы юзать не вдаваясь в подробности.
Да и сам размер кода ещё ни о чём не говорит, это ещё не значит что он быстрый. Да и большинство кода от производителя это только примеры применения, а не непревзойдённый образец. А в целом ничего не изменилось за многие годы. Если что-то не так, то лучше всего написать самому.
Печально когда код не только огромного размера, но ещё и очень медленный. Похоже, что автор поначалу столкнулся именно с таким случаем. Если же производитель предлагает огромные и очень медленные стандартные либы, то это отнюдь не делает ему чести.
Мне вот интересно было реализовать БПФ для STM32F030F4P6, а стандартная библиотека DSP для этой цели оказалась слишком медленная и громоздкая.
scorpi_0n писал(а): В М3 и выше битреверс хардварный.
Спасибо, буду знать. Пока ещё туда не заглядывал...

Добавлено after 10 minutes 1 second:
GFX писал(а): Что брать за 0 дб? Я так полагаю, что сигнал с размахом в 256? Если сигнал будет на весь экран то это 0 Дб, а остальное ниже и гармоники и основная частота?
В том и прелесть логарифмической, что она "грязная" :)))
Если данные восемь бит, то ниже -75ДБ (по напряжению) вообще ничего не должно быть.

Думаю что за 0ДБ хорошо будет брать всю шкалу.
Можно ещё за 0ДБ взять максимальную амплитуду (будет первой гармоникой), а остальные гармоники нормировать к ней, это удобный вариант при оценке нелинейных искажений сигнала.
Аватара пользователя
GFX
Поставщик валерьянки для Кота
Сообщения: 2040
Зарегистрирован: Вт окт 23, 2012 18:36:14
Откуда: Ростов-на-Дону

Re: Карманный осциллограф на STM32

Сообщение GFX »

Andrew Martin писал(а): В том и прелесть логарифмической, что она "грязная" :)))
Я и сам понимаю, что "грязная" логарифмическая шкала это плюс, т.к. на нелогарифмической шкале сигнал меньший основной гармоники в 150 раз уже не виден, на логарифмической должен быть в тысячи раз меньше, на экране видно больше информации.
Andrew Martin писал(а): Думаю что за 0ДБ хорошо будет брать всю шкалу.
Можно ещё за 0ДБ взять максимальную амплитуду (будет первой гармоникой), а остальные гармоники нормировать к ней, это удобный вариант при оценке нелинейных искажений сигнала.
Что касается 0, я тоже склоняюсь к первой гармонике, чтобы амплитуда сигнала не влияла на картину, ведь нас интересует состав по частотам и их относительное значение, а не абсолютная величина. Если сигнал будет нулевой, то в этом случае на экране будет шум, но то, что он малой амплитуды понятно из осциллограммы (да и постоянная составляющая в основном будет первой гармоникой). Т.е. тогда мы видим, например, "первая гармоника 4к, и минус сколько-то децибел есть гармоники 8к, 16к и кучка более низкого шума". пока не видим - сколько там Дб, но будет время что-то наколдую удобное по возможности для просмотра Дб гармоник.
Andrew Martin писал(а): Если данные восемь бит, то ниже -75ДБ (по напряжению) вообще ничего не должно быть.
Не знал, хорошо, тогда на -75 Дб и остановимся, АЦП 8ми битное.
UmkaAP
Родился
Сообщения: 6
Зарегистрирован: Вт окт 25, 2016 09:09:29

Re: Карманный осциллограф на STM32

Сообщение UmkaAP »

Здравствуйте. GFX какую схему можно считать окончательной на данный момент для stm32f303 ? Планируете продавать платы или где можно заказать?
Аватара пользователя
GFX
Поставщик валерьянки для Кота
Сообщения: 2040
Зарегистрирован: Вт окт 23, 2012 18:36:14
Откуда: Ростов-на-Дону

Re: Карманный осциллограф на STM32

Сообщение GFX »

UmkaAP писал(а):Здравствуйте. GFX какую схему можно считать окончательной на данный момент для stm32f303 ? Планируете продавать платы или где можно заказать?
Платы я не делаю и не продаю соответственно, заказать можно где угодно. Сам из Китая жду. Обратись к Barbaris23 , он заказывал, и делал разводку, если организуется небольшая группа, то платы выйдут дешевле. Правда из Китая долго идут, можешь по России поискать, хотя обычно половина деталей тоже из Китая заказывается, поэтому все равно ждать.
05.10.2016.rar
(192.04 КБ) 354 скачивания
Добавлено after 5 hours 9 minutes:
Доработал анализатор. В режиме анализатора спектра нажимаем один раз энкодер включается пауза, крутим энкодер выделенная зеленым частота ползет вправо или влево, смотря куда крутим, и внизу отображается ее частота и уровень в Дб относительно первой гармоники. Только что-то отображается до -150Дб, считал по формуле для напряжения 20 логарифмов от отношения амплитуды текущей частоты к амплитуде первой гармоники. Если это правильно, то так и оставлю, а если нужно было считать 10 логарифмов от отношения на 1 Дб, то подправлю, но вроде для напряжения 20.
111.png
(5.95 КБ) 735 скачиваний
Замутить тестовый сигнал нужно.
Аватара пользователя
vlad465
Друг Кота
Сообщения: 5717
Зарегистрирован: Чт июн 24, 2010 22:59:35
Откуда: С-Петербург

Re: Карманный осциллограф на STM32

Сообщение vlad465 »

ИМХО, обычный энкодер не очень вписывается в эту компактную конструкцию, может есть смысл поставить что-то более миниатюрное, например такой: https://ru.aliexpress.com/item/meishang ... 31722.html
Изображение
Вложения
001.jpg
(111.04 КБ) 2626 скачиваний
Аватара пользователя
Andrew Martin
Вымогатель припоя
Сообщения: 606
Зарегистрирован: Вт июн 25, 2013 18:45:07

Re: Карманный осциллограф на STM32

Сообщение Andrew Martin »

Да уж, дологарифмировались :) :write:

Umax = 255
Umin = 1 (логарифм нуля не существует)

20*lg(Umin/Umax) = 20*(lg(Umin) - lg(Umax)) = 20*(0 - 2.4) = -48ДБ

Ну вот, даже не 75ДБ, а всего-то 48ДБ. Так же?
Аватара пользователя
GFX
Поставщик валерьянки для Кота
Сообщения: 2040
Зарегистрирован: Вт окт 23, 2012 18:36:14
Откуда: Ростов-на-Дону

Re: Карманный осциллограф на STM32

Сообщение GFX »

Andrew Martin писал(а):Да уж, дологарифмировались :) :write:

Umax = 255
Umin = 1 (логарифм нуля не существует)

20*lg(Umin/Umax) = 20*(lg(Umin) - lg(Umax)) = 20*(0 - 2.4) = -48ДБ

Ну вот, даже не 75ДБ, а всего-то 48ДБ. Так же?
Причем здесь входной сигнал? Речь идет о выходных амплитудах гармоник, которые не 0-255 а с плавающей точкой. А по выходу как мы видим диапазон амплитуд гораздо шире, минимум 0 может быть, а логарифм от этого может быть бесконечность ( ну типа близкое к нулю значение, 0 нельзя). По факту видим более широкий диапазон, явно не -48. Возможно, что меньшие -48 Дб это придуманные алгоритмом расчета значения, но они есть это факт, могу обрезать конечно. Да и зачем брать 2 логарифма и один раз вычитать, если проще поделить и взять 1 логарифм, или логарифм проще деления?

Если обрубить до -50 Дб, то картинка на редкость красивая и простая, неужели там так мало гармоник, хотя может и не мало, но меньшие действительно не увидеть при входном разрешении 8 бит, не знаю, вроде можно смотреть и до -150, но вымышленный там сигнал или нет.
Скрины 50.rar
(15.96 КБ) 170 скачиваний
- тут неправильно обрублено, не смотреть :)

Добавлено after 2 hours 9 seconds:
Замутил тестовый сигнал из 3х гармоник, вторая -20Дб, третья -6 Дб. Плюс минус лапать попадает.
Скрин.rar
(17.81 КБ) 193 скачивания
Аватара пользователя
Andrew Martin
Вымогатель припоя
Сообщения: 606
Зарегистрирован: Вт июн 25, 2013 18:45:07

Re: Карманный осциллограф на STM32

Сообщение Andrew Martin »

GFX писал(а): Причем здесь входной сигнал? Речь идет о выходных амплитудах гармоник, которые не 0-255 а с плавающей точкой. А по выходу как мы видим диапазон амплитуд гораздо шире, минимум 0 может быть, а логарифм от этого может быть бесконечность ( ну типа близкое к нулю значение, 0 нельзя). По факту видим более широкий диапазон, явно не -48. Возможно, что меньшие -48 Дб это придуманные алгоритмом расчета значения, но они есть это факт, могу обрезать конечно. Да и зачем брать 2 логарифма и один раз вычитать, если проще поделить и взять 1 логарифм, или логарифм проще деления?
Оптимизаторы... :facepalm:

1) На кой, скажите, вам арифметика с плавающей точкой при 8-разрядных входных данных? У вас и БПФ на плавучке? :shock:
И при любом линейном преобразовании динамический диапазон данных будет всё те же 8 бит, т.е. 48ДБ. Если больше - работайте над математикой. Эт вам не чекбоксы лепить :)))

2) Один из логарифмов (lg(Umax)) берётся только ОДИН РАЗ для одной спектрограммы - это логарифм 1й гармоники. Итого получаем для каждой палки одну операцию логарифмирования, одну умножения на константу и одну вычитания, вместо деления, логарифмирования и умножения на константу. Конечно, если в вашем МК есть аппаратный модуль деления, то деление не накладно. В случае отсутствия оного намного лучше заменять деление вычитанием.
Логарифм от значений менее 48ДБ имеет смысл заменять каким-либо спец. числом, а при выводе амплитуды палки отображать надпись "< -48ДБ" или что-то вроде этого.
Аватара пользователя
GFX
Поставщик валерьянки для Кота
Сообщения: 2040
Зарегистрирован: Вт окт 23, 2012 18:36:14
Откуда: Ростов-на-Дону

Re: Карманный осциллограф на STM32

Сообщение GFX »

Andrew Martin писал(а): 1) На кой, скажите, вам арифметика с плавающей точкой при 8-разрядных входных данных? У вас и БПФ на плавучке? :shock:
И при любом линейном преобразовании динамический диапазон данных будет всё те же 8 бит, т.е. 48ДБ. Если больше - работайте над математикой. Эт вам не чекбоксы лепить :)))

2) Один из логарифмов (lg(Umax)) берётся только ОДИН РАЗ для одной спектрограммы - это логарифм 1й гармоники. Итого получаем для каждой палки одну операцию логарифмирования, одну умножения на константу и одну вычитания, вместо деления, логарифмирования и умножения на константу. Конечно, если в вашем МК есть аппаратный модуль деления, то деление не накладно. В случае отсутствия оного намного лучше заменять деление вычитанием.
Логарифм от значений менее 48ДБ имеет смысл заменять каким-либо спец. числом, а при выводе амплитуды палки отображать надпись "< -48ДБ" или что-то вроде этого.
1) Какую библиотеку нашел с удобоваримыми показателями скорость-размер, такую и использую. Вычисление FFT занимает времени намного меньше чем вывод результата на экран, так какой смысл тут бороться за производительность. А по вычитанию, да не подумал, что логорифм от максимума то 1 раз вычислить нужно, хорошо. И что в вашем понимании работайте над математикой? Если входной сигнал 48Дб, то что за математика сделает из него больше, моя существующая итак больше рисует, правда я этому не доверяю и обрезал лишнее. И к сведению, прикрутить чекбоксы в 10 раз сложнее, чем FFT это несчастное с готовой либой, или скажете нужно было изобрести велосипед и написать свою? :))) Узкое место здесь скорость отрисовки экрана и если расчеты с плавающей точкой позволяют повысить точность, то мне не важно, что это снижает скорость самого расчета. К тому же смотреть можно данные по гармоникам нормально только на паузе, тогда вообще скорость не влияет.
2) Да так точно, хоть разницы на глаз не будет.
Аватара пользователя
Andrew Martin
Вымогатель припоя
Сообщения: 606
Зарегистрирован: Вт июн 25, 2013 18:45:07

Re: Карманный осциллограф на STM32

Сообщение Andrew Martin »

GFX писал(а): И что в вашем понимании работайте над математикой?
Если ваше БПФ выдаёт всякий мусор ("лишние" гармоники), то возможно это:
1) катастрофически накапливается ошибка вычислений
2) неадекватно работает какой-либо участок кода.

И с каких это пор расчеты с плавающей точкой позволяли повысить точность? У вас исходное разрешение сигнала 8 бит и ничего с этим не поделаешь. Поэтому вам бы хватило с головой даже 16-битной целочисленной арифметики, но поскольку у вас М3, то не накладно было бы и 32 бита. А 32-битное целое беззнаковое число точнее на 9 бит чем число float32, поскольку у последнего мантисса только 23 бита. Так же не нужно забывать и о форматах с фиксированной точкой, их в подавляющем большинстве случаев вполне достаточно.

Неужели отправка данных по SPI через DMA так много времени занимает? Что мешает сделать нормальный курсор с отображением значения выбранной "палки", прокрутку по частоте?
Надо чтобы "палки" плясали, а мы их меряли и крутили взад-вперёд, как на нормальных анализаторах спектра :)))
Аватара пользователя
GFX
Поставщик валерьянки для Кота
Сообщения: 2040
Зарегистрирован: Вт окт 23, 2012 18:36:14
Откуда: Ростов-на-Дону

Re: Карманный осциллограф на STM32

Сообщение GFX »

Andrew Martin писал(а): Неужели отправка данных по SPI через DMA так много времени занимает? Что мешает сделать нормальный курсор с отображением значения выбранной "палки", прокрутку по частоте?
Надо чтобы "палки" плясали, а мы их меряли и крутили взад-вперёд, как на нормальных анализаторах спектра :)))
Да отправка данных занимает много времени, SPI интерфейс не для экранов уж точно, ДМА на скорость не влияет, оно не для рисования линий и точек уж точно. Вывожу я только то, что меняется, экран полностью естественно не перерисовываю. Но все равно это самое узкое место. По поводу как в "нормальных", скиньте картинку, я не пойму что вы хотите, чтобы не было паузы, ну могу на паузу не ставить, курсор, какой курсор? выражайтесь яснее.
Аватара пользователя
Andrew Martin
Вымогатель припоя
Сообщения: 606
Зарегистрирован: Вт июн 25, 2013 18:45:07

Re: Карманный осциллограф на STM32

Сообщение Andrew Martin »

Да уж, видеопамять и полное обновление с таким экранищем не сделаешь :(
Оказалось есть у вас уже зелёный курсор (маркер), правда не в совсем привычном виде. В профессиональных АС это обычно вертикальная сплошная или штриховая линия во весь экран.
Тогда остаётся паузу убрать...
Ответить

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