Народный осциллограф "Мурзик" на базе STM32F303VCT6 - проект

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Грызет канифоль
Аватара пользователя
Сообщения: 255
Зарегистрирован: Вс мар 04, 2012 12:05:24
Откуда: Riga

Сообщение Juris »

Chettuser писал(а):Народ, а зачем вам FSMC? Для вывода осциллограммы и надписей такой бешеной молотилки не требуется. Или вы целыми кадрами заливаете?
Да тут Ваша правда, похоже незачем. Про FSMC поднялся чисто гипотетический вопрос, мы пытались угадать, как подключен дисплей ILI9341 k F303 у коммерческого осциллографо-подобия UCE-DSO210, этого:
http://www.ucore-electronics.com/produc ... illoscope/
Интерес спортивный. Красиво сделан осцик (всмысле оболочки), но автор схемы не даёт (а бинарник прошивка есть). Но, автор признался, что FSMC там не используетса. Так что про этот осцик технически известно только вот:
некий STM32F303, используютса 4 встроенных ADC, на входе операционники OPA2354, дисплей TFT ILI9341.
А, скажите, что у Вас за может интересная конструкция, которую упоминаете? Мы тут "больны" этим :) Ну, хорошо, я болен, это точно :)
Реклама
Chettuser

Сообщение Chettuser »

Что то мне кажется у него ОСь с ГУИм какая то натянута. Ну просто нереально уже такие уровни задач без шедулера осуществить.
Реклама
Грызет канифоль
Аватара пользователя
Сообщения: 255
Зарегистрирован: Вс мар 04, 2012 12:05:24
Откуда: Riga

Сообщение Juris »

Chettuser писал(а): У меня вообще на F103RC используется не параллельный выход 8 бит (S5230), а его "жалкое подобие" на SPI и 74HC164, для экономии нужных мне лап портов. И того 30 FPS спокойно тянет. А вот скорость числодробилки для расчётов здесь важнее - как только перевёл отрисовку с точек на "брезенхема" вывод сразу упал до 0...18 FPS. Так то вот.
А про это расскажете по подробнее? ;)
Chettuser писал(а):Что то мне кажется у него ОСь с ГУИм какая то натянута.
Может FreeRTOS, как сдесь ?
https://www.youtube.com/watch?v=DPaI-qk6Cr8&t=33s
Опытный кот
Аватара пользователя
Сообщения: 791
Зарегистрирован: Вт июн 17, 2014 00:34:26

Сообщение baghear »

Fsmc надо для увеличения fps, Вы же сами пишите, что при использовании алгоритма брезенхема падает fps.
Реклама
Эиком - электронные компоненты и радиодетали
Грызет канифоль
Аватара пользователя
Сообщения: 272
Зарегистрирован: Пт ноя 13, 2009 10:39:32
Откуда: Москва

Сообщение Fusion »

Для FSMC внешняя память нужна 320*240*2 =153600.
Слишком сложно получается.
А кстати зачем Алгоритм Брезенхема? В скопе вроде все линии прямые.
Контактная информация:
Реклама
Chettuser

Сообщение Chettuser »

Juris писал(а):А про это расскажете по подробнее?
А что интересует? :)
Juris писал(а):Может FreeRTOS, как здесь?
Вполне возможно и FreeRTOS, а может и что то самописное.
baghear писал(а):при использовании алгоритма брезенхема падает fps.
Не совсем так - падает скорость обработки, а поскольку вывод у меня пока последовательно привязан к обработке, то и FPS соответственно.
Fusion писал(а):А кстати зачем Алгоритм Брезенхема? В скопе вроде все линии прямые.
Честно говоря, другого способа чтобы из точек создать линию я пока не знаю. :oops:
Реклама
Грызет канифоль
Аватара пользователя
Сообщения: 255
Зарегистрирован: Вс мар 04, 2012 12:05:24
Откуда: Riga

Сообщение Juris »

Chettuser писал(а):
Juris писал(а):А про это расскажете по подробнее?
А что интересует? :)
Чтож, отвечу прямо, открыто и с подробностями :)
Интересует разное, осциллографицххеское или другое интересное, что можно спаять, потом туда программатором что-то залить, и потом радоватся что получилось. Нет, не так - огромная радость -во время- чтения схемы, чтения описания устройства, паяния устройства, радость, когда прошивка заливаетса и верифицируетса. Ну и радость результата, хотя это в некотором роде второстепенно. Потом - радость узнать, что прошивка обновилась, схема обновилась, плюшек прибавилось... Ну, я надеюсь, я ответил ;-)
Chettuser

Сообщение Chettuser »

Короче, не обещаю, но завтра выйду на работу и попробую заснять разницу с выводом точками и векторами на моём железе. Если конечно кому интересно.
Грызет канифоль
Аватара пользователя
Сообщения: 272
Зарегистрирован: Пт ноя 13, 2009 10:39:32
Откуда: Москва

Сообщение Fusion »

Я вывожу 320 линий. Получается реальная кривая)
Точки беру из массива захваченного с АЦП.
Вобщем рисую весь экран. Ну почти весь. 318*192
Изображение
Контактная информация:
Электрический кот
Аватара пользователя
Сообщения: 1029
Зарегистрирован: Сб мар 09, 2013 11:29:22
Откуда: 40RUS, Жуков

Сообщение 240265 »

Chettuser писал(а):..... а его "жалкое подобие" на SPI и 74HC164, для экономии нужных мне лап портов. .....
Не поделтесь схемой , библиотекой ? Сам хотел такое сделать, но если уже есть готовые наработки , было бы интересно. Есть несколька 8-бтных шилдов . а "ног" жалко.
IVL ex UA6PJ
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Сообщение Reflector »

Chettuser писал(а):Короче, не обещаю, но завтра выйду на работу и попробую заснять разницу с выводом точками и векторами на моём железе. Если конечно кому интересно.
Пару страниц назад обсуждали увеличение скорости отрисовки линий. Я код выкладывал, GFX переделывал и тоже выкладывал. В основе все тот же алгоритм Брезенхема, расчеты самые минимальные, в основном цикле отрисовки для большинства точек из математики только одно сложение, что еще надо? Реализацию на ассме? :)
Грызет канифоль
Аватара пользователя
Сообщения: 272
Зарегистрирован: Пт ноя 13, 2009 10:39:32
Откуда: Москва

Сообщение Fusion »

А рисовать по одной точке? Там 14 команд. И все с ожиданием готовности spi. А сигнал и белый шум бывет. На весь экран. А еще старый затереть. А тут молотит в цикле весь экран и всегда с одним ФПС.
При 40 мгц SPI вполне приличная скорость. Я правда готовность spi не жду. Пока другие расчеты он успевает отправить.
Контактная информация:
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Сообщение Reflector »

Fusion писал(а):А рисовать по одной точке? Там 14 команд. И все с ожиданием готовности spi. А сигнал и белый шум бывет. На весь экран. А еще старый затереть. А тут молотит в цикле весь экран и всегда с одним ФПС.
При 40 мгц SPI вполне приличная скорость. Я правда готовность spi не жду. Пока другие расчеты он успевает отправить.
Если взять твой последний скрин, сколько там практически вертикальных прямых по 20+ точек? Десяток. Я предлагал алгоритм при котором один раз задаешь начальные координаты и направление вывода, а потом выводишь только цвета. Для 20 точек это будет 40 байт плюс начальная инициализация. Даже если нарисовать диагональ на весь экран, то уже получается чуть быстрее вывода по одной точке, т.к. такая линия будет состоять в том числе и из небольших прямых длиной 2, местами может 3 точки и ускорение их отрисовки компенсирует затраты на задание направления. Белый шум - это много вытянутых линий, на нем экономия будет особенно заметной.
GFX
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2040
Зарегистрирован: Вт окт 23, 2012 18:36:14
Откуда: Ростов-на-Дону

Сообщение GFX »

Fusion писал(а):Для FSMC внешняя память нужна 320*240*2 =153600.
Слишком сложно получается.
А кстати зачем Алгоритм Брезенхема? В скопе вроде все линии прямые.
Какая связь между FSMC и памятью? Не нужно там ничего, все точно также как с SPI только быстрее. Юзал я такой дисплей на том же контроллере? скорость там ого-го, нужно не нужно это второй вопрос, но если МК многоногий то почему бы и нет. 10 млн пикселей в сек) Вот видос, мучал осенью https://www.youtube.com/watch?v=YwQiDhKDBqk
Fusion писал(а):Я вывожу 320 линий. Получается реальная кривая)
Точки беру из массива захваченного с АЦП.
Вобщем рисую весь экран. Ну почти весь. 318*192
Вот скрин
052.png
(4.8 КБ) 569 скачиваний
, я рисую только линии, которые изменяются, не вывожу целиком весь квадрат. Тут, например,47 кадров в секунду вышло, но оно может быть и 20-30 на сильно загруженном сигнале, а может быть и больше 100, но в любом случае всегда достаточно.
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Сообщение Reflector »

GFX писал(а):я рисую только линии, которые изменяются, не вывожу целиком весь квадрат.
Квадрат можно рисовать вместе с очисткой, заполнять не черным цветом, а соответствующим паттерном. Тогда можно помимо крупной сетки еще мелкую добавить и на скорости это никак не отразится. 320 точек по 2 байта, 640 байт которые можно хоть во флеше хранить и через DMA выводить нужную линию, если не хочется заморачиваться с рисованием линий по частям. Если RAM позволяет, то можно выделить, допустим, 2 бита на точку(фон, сетка, 2 луча) и "отрисовать" все прямо в такой массив, потом каждую линию разворачивать и слать по DMA, а пока идет пересылка подготавливать следующую линию.
Или ты разбиваешь на квадраты и отслеживаешь в каких были изменения?
Грызет канифоль
Аватара пользователя
Сообщения: 272
Зарегистрирован: Пт ноя 13, 2009 10:39:32
Откуда: Москва

Сообщение Fusion »

да точно можно и без ОЗУ настроить FSMC.
У меня просто платка была диско - там с памятью работал.
А рисовать линии - ну это кому как нравится)
Весь экран заливать - стабильные фпс. А по точкам зависит от картинки.
Контактная информация:
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Сообщение Reflector »

Fusion писал(а):Весь экран заливать - стабильные фпс. А по точкам зависит от картинки.
Я уже запутался :) Ты рисуешь 318 линий в которых сразу фон, сетка и данные? Сплошным блоком выставив экрану инкремент по вертикали?
Грызет канифоль
Аватара пользователя
Сообщения: 272
Зарегистрирован: Пт ноя 13, 2009 10:39:32
Откуда: Москва

Сообщение Fusion »

Да сразу весь вертикально. И получается максимум 40 фпс. Реально меньше, так как еще цифры наверху. Готовность SPI не жду - пока сетка и цвет вычисляются два байта уходит.
Контактная информация:
Грызет канифоль
Аватара пользователя
Сообщения: 255
Зарегистрирован: Вс мар 04, 2012 12:05:24
Откуда: Riga

Сообщение Juris »

Я тут решил для себя подойти непривично к конструктиву "Мурзика". Поскольку "активных" проектиков с дисплеями в последнее время у меня бывает больше, чем этих самых TFT дисплеев, я решил экран делать отцепляемым, одновременно сделав его механически более опрятным. Так появился кожух к 2.2" дисплею, сделан из кусков пластмассовых заглушек 5-дюймовых отсеков PC (люблю эти заглушки приспосабливать как конструктивный материал). Потом я подумал, хмм... а не засунуть ли туда же батарейку, место есть. Получаетса весьма логично, устройству со снятым дисплеем батарейка по любому не нужна. Поскольку на китайских модулях SPI TFT ILI9341 2.2", 2.4", 2.8" есть свой стабилизатор на 3.3V, акуммулятор подключаю к пинам питания модуля, соответственно, при втыкании дисплея, устройству подаётса питание. За одно получаетса дополнительная развязка и разгрузка по питанию.
На фотках видно как это сейчас выглядит. У самого осцика будет своя коровочка, с вырезом для подключения дисплея/питания. Выключатель там пока валяетса, надо приспособить. Похожий модуль по больше будет с TFT модулем 2,8".
http://bildites.lv/a/s263dfnu#z82fen36
GFX
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2040
Зарегистрирован: Вт окт 23, 2012 18:36:14
Откуда: Ростов-на-Дону

Сообщение GFX »

Reflector писал(а):
GFX писал(а):я рисую только линии, которые изменяются, не вывожу целиком весь квадрат.
Квадрат можно рисовать вместе с очисткой, заполнять не черным цветом, а соответствующим паттерном.
Или ты разбиваешь на квадраты и отслеживаешь в каких были изменения?
Да так можно замутить, я думал об этом. Но я пока очистку не делаю совсем, вернее только при смене режимов типа осциллограф-анализатор спектра. А так отслеживаю именно осциллограммы или текст, вернее рисую старую линию цветом фона, следом новую линию. Фон не трогаю. Единственно все правильно ты говоришь, мелкую сетку накладно рисовать в данном случае, т.к. сетку нужно обновлять. А под только измененными я имел в виду например текст, если значение не поменялось то и не обновляем его. Частота в принципе высокая, единственное фремрейт не стабилен, что немного напрягает. Fusion обновляет сразу почти весь экран и с сеткой и фоном и графиками, так медленнее зато стабильный ФПС.
Ответить

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