Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 15.11.2015, 20:12  
STM32F0
Заблокирован
 
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
STM32F0 на пути к лучшему
По умолчанию STM8 + TFT: как оно ещё работает

Как всегда, дело было вечером, делать было нечего. А тут ещё и настойчивые утверждения, что широко распространённые восьмибитки списывать рано. Типа им ещё жить и жить. Вот и захотелось посмотреть, какое у них там житие-бытие.
А тут ещё и ссыль на глаза попалась, про шилды для ардуинщиков. И называется это скромно так "графический акселератор".
http://andybrown.me.uk/2015/02/02/awcopper/
Жесть, для унылой ардуины прицепили ТФТ 640х360 который обслуживает... STM32F0! Вот это поворот! Это при том, что упомянутый на сайте STM32F030 дешевле чипа на ардуине. Ну да бог с ним. Ардуинисто жить не запретишь. Привлекло внимание другое. Чел, чтобы обслужить этот сравнительно жирный ТФТ, опустился до АСМа и оверклокинга. Сильно не вдавался в подробности этой лепнины, но из прочитанного по кривой диагонали понял, что АСМ и оверклокинг нужен для суперногодрыга.
Ну если оверклокинг и даёт прирост производительности, что благоприятно сказывается на всём, то увязание в болоте АСМа меня как-то совсем не прикололо.

Ну что же, попробуем сотворить что либо скромное и скоромное. И не будем, конечно, его называть "графический акселератор", из-за самой восьмибитной скромности. Скромным будет всё, абсолютно, даже желания. Мега девайсы на мега чипах решил не трогать. Там и так всё ясно и уныло. Пусть покоятся себе с миром. Из распространённых и по адекватной цене рассмотрим СТМ8 серии S и L. И попробуем подключить дешёвый ТФТ от мобилы, типа 240х320х16 бит цвета с восьмиразрядной шиной, типа Nokia N82.
Начнём с STM8L. Почему? Да на столе просто валялась. Ничем особо не примечательный восьмибитник. Ну там таймера которые вяжутся между собой, чуть-чуть ДМА, с одним полным каналом. STM8L151K6 с 32-я пинами, по цене дешевле Меги в местном ларе. Но можно взять и STM8L051F3 в 20-и ногом корпусе, для совсем уж мелких и дешёвых поделок. Там цена вообще супер гуманная, правда и ресурсов поскромнее.
Возьмём самую простую задачу, прицепить ТФТ по восьмибитной шине для вывода цифробуквенной информации. Цепляние ТФТ к МК обычное, без CS (CS тупо на земле), RD не юзаем, но TE (tearing) заводим, а вдруг пригодится.
Пишем простую функцию очистки экрана ногодрыгом, получаем время закраски ~200мС. Да, при такой скорости юзать ТЕ явно не понадобится.
Снижаем уровень хотелок до минимума и оптимизируем код не опускаясь до АСМа. Теперь у нас цвет хоть и остаётся номинально 16-и битным, но передаётся одним байтом с двойным дёрганьем WR, типа RED 0xE0E0. Получаем время закраски ~42мС. Уже лучше, но тиринг всё равно наблюдается, даже при задействованом TE.
Начинаем ковыряться в кишках STM8L. ДМА. Один канал позволяет связать GPIO с памятью через таймер. Учитывая латентность ДМА (три такта) при таком трансфере получим 5,333333 мегасемплов, что, в общем, уже неплохо.
Считаем. 5333333 / 153600 = 34,72 кадра/сек. Или 28,8мС по времени закраски экрана. Уже не плохо. Итого - один канал (полный, единственный, к сожалению) ДМА и пара таймеров. Расточительно немного, особенно для STM8L051F3, но в принципе можно.
Ещё WR можно просто дёргать таймером. Максимальная частота - 8МГц при 16МГц тактовой. Считаем. 8000000 / 153600 = 52,08 кадра/сек. Или - 19,2мС на закраску. Итого - два таймера, и всё! Пнули один таймер, он задаёт фактически количество импульсов WR, он запустил второй таймер, который и дёргает WR. Всё крутится и всё чудесно! Можем 19,2мС, при желании, заниматься своими делами. Задействуем ТЕ, тиринг не наблюдается, всё чудесно!
Возьмём пару штифтов, один 16X24, другой 32Х50 (типа CRYSTAL). Шаманим функции с увеличением по горизонтали и вертикали. С двойным ногодрыгом на 32Х50 и увеличением по вертикали Х2 при выводе строки типа "0234567" (практически на всю ширину) получаем время вывода ~60мС. На двух таймерах - ~51мС. Что и понятно, здесь уже больше вычислений, чем работы с портом (вот здесь оверклокинг уже бы помог). Но если 17% таки важны, то вариант на два таймера выручит. Визуально в обоих случаях тиринг не наблюдается, а скорость вывода вполне приемлема и на глаз отрисовка практически не заметна. Т.е. для простых и дешёвых применений без вывода графики вполне себе даже ничего.
Для STM8L051F3 - вполне годится, с учётом малого размера флэша, которого может не хватить на шрифты-хотелки, и меньшего количества таймеров изначально.
Для STM8S003F3/103F3/903F3 - не взлетит, порты растянуты угрёбищно.
Для STM8S903K3 - с учётом малого размера флэша и малого количества таймеров, ограниченно, но пойдёт.
Для STM8S103K3/105 и др. - в принципе пойдёт, с различными ограничениями. Основное - у них таймера не вяжутся как у STM8L и STM8S903. Придётся пару пинов таймеров соединить вручную.
Для STM32F - без проблем, только от хотелок и желаемой скорости, в пределах разумного (не каждый ТФТ одолеет 24МГц тактовой).

Для ТФТ с 16-и битной шиной всё аналогично. Главное чтобы хватило свободных портов и нашлось пару таймеров.

Вывод: при ограничениях и напрягах юзать восьмибитки типа СТМ8 в связке с простыми ТФТ ещё как-то можно, если не предъявлять особых требований. Но ИМХО всё уже это на грани фола.
С мегами и и младшими пиками всё намного хуже и юзать их с ТФТ разве что только от полной безнадёги.
Реклама:

Последний раз редактировалось STM32F0; 15.11.2015 в 22:41.
STM32F0 вне форума  
Непрочитано 15.11.2015, 20:56  
zöner
Гражданин KAZUS.RU
 
Регистрация: 16.02.2012
Сообщений: 441
Сказал спасибо: 89
Сказали Спасибо 735 раз(а) в 149 сообщении(ях)
zöner на пути к лучшему
По умолчанию Re: STM8 + TFT: как оно ещё работает

отдельный вопрос - кому нужна полная закраска каждые 19мс ? мультики показывать?
а линии/текст и так шустро рисует, даже через программный SPI.
zöner вне форума  
Непрочитано 15.11.2015, 21:16  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: STM8 + TFT: как оно ещё работает

Он вам дает понимание оптимизации расхода ресурсов микроконтроллера, а вы продолжаете черпать помои чайной ложкой.
Easyrider83 вне форума  
Сказали "Спасибо" Easyrider83
akegor (15.11.2015)
Непрочитано 15.11.2015, 22:29  
STM32F0
Заблокирован
 
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
STM32F0 на пути к лучшему
По умолчанию Re: STM8 + TFT: как оно ещё работает

Сообщение от zöner Посмотреть сообщение
линии/текст и так шустро рисует, даже через программный SPI
Поверьте, я вам верю! Особенно шустро при программном 9 бит SPI. И особенно на меге.
STM32F0 вне форума  
Непрочитано 15.11.2015, 22:58  
zöner
Гражданин KAZUS.RU
 
Регистрация: 16.02.2012
Сообщений: 441
Сказал спасибо: 89
Сказали Спасибо 735 раз(а) в 149 сообщении(ях)
zöner на пути к лучшему
По умолчанию Re: STM8 + TFT: как оно ещё работает

на меге - не знаю, не проверял. А на 32F030 - вполне шустро, хватает для отрисовки осциллограммы и сопутствующего текста без заметных для глаз задержек, на программном SPI. Полное стирание экрана - да, заметно, но оно выполняется один раз на старте.
Программный вариант распараллеленный под Protothreads тоже работает без нареканий.
Т.е. погоня за мегабитами и DMA не всегда нужна.

Последний раз редактировалось zöner; 15.11.2015 в 23:05.
zöner вне форума  
Непрочитано 15.11.2015, 23:21  
Kabron
Почётный гражданин KAZUS.RU
 
Аватар для Kabron
 
Регистрация: 12.11.2004
Адрес: Москва
Сообщений: 8,587
Сказал спасибо: 704
Сказали Спасибо 4,353 раз(а) в 1,996 сообщении(ях)
Kabron на пути к лучшему
По умолчанию Re: STM8 + TFT: как оно ещё работает

Все это уже давно делает 4dsystems и iteadstudio Nextion.
__________________
Я не помогаю. Я провоцирую думать.
Не дай вам Бог плохих контактов.
Kabron вне форума  
Непрочитано 16.11.2015, 00:01  
zöner
Гражданин KAZUS.RU
 
Регистрация: 16.02.2012
Сообщений: 441
Сказал спасибо: 89
Сказали Спасибо 735 раз(а) в 149 сообщении(ях)
zöner на пути к лучшему
По умолчанию Re: STM8 + TFT: как оно ещё работает

дороговато, можно уложиться в 8..12$ за 2.2..3.2" LCD + контроллер.
ну и непонятна производительность предлагаемой связки через RS232, плюс ненужные ограничения их API
Цитата:
а вы продолжаете черпать помои чайной ложкой
в моем случае пока хватает, я же не говорю что оптимизация никому не нужна.

Последний раз редактировалось zöner; 16.11.2015 в 00:03.
zöner вне форума  
Непрочитано 16.11.2015, 00:50  
STM32F0
Заблокирован
 
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
STM32F0 на пути к лучшему
По умолчанию Re: STM8 + TFT: как оно ещё работает

Сообщение от zöner Посмотреть сообщение
на меге - не знаю
Зато я знаю. Сравните возможности SPI у меги и у СТМ.
Сообщение от zöner Посмотреть сообщение
А на 32F030 - вполне шустро
Ну "Поднимите мне веки!"(с). Раздел по СТМ8. И тема по СТМ8. Перебейте свой исходник на СТМ8 и посмотрите что получится. И мне непонятно, в чём смысл юзать софтовый SPI, если в F030 чудесный хардварный?
Сообщение от zöner Посмотреть сообщение
Полное стирание экрана - да, заметно, но оно выполняется один раз на старте.
Ну так и сравните, у вас заметно на 030-ом, а на СТМ8 нет тиринга даже если зациклить смену нескольких цветов. Как? По мне мелочь, но приятно!
Сообщение от zöner Посмотреть сообщение
погоня за мегабитами и DMA не всегда нужна.
А дело не мегабитах и ДМА. Но если я цепляю что-то и оно работает хардварно настолько, что я даже не задумываюсь что оно работает, то почему и нет? Даже в этом случае, на пальцах, без ДМА, только два таймера. С ТФТ приходят импульсы по ТЕ. Можно программно ждать единицу, потом ждать нуль. Это тоже время. В каком-то случае важное, в каком-то нет. Можно через прерывание по пину. А можно заюзать запуск по входу таймера, всё равно пин на ТЕ расходуется, хоть как. Т.е. разрешается работа таймера, одной командой, и всё. Он не запустится и не запустит другой таймер пока по ТЕ не будет спадающего фронта. Ничего не нужно ждать, потому что всё хардварно. Как таймера отработают они отрубятся сами, без посторонней помощи. А это время можно потратить на что-то другое. Всегда важнее наличие вариантов. Без них может быть совсем туго.
STM32F0 вне форума  
Непрочитано 16.11.2015, 01:03  
zöner
Гражданин KAZUS.RU
 
Регистрация: 16.02.2012
Сообщений: 441
Сказал спасибо: 89
Сказали Спасибо 735 раз(а) в 149 сообщении(ях)
zöner на пути к лучшему
По умолчанию Re: STM8 + TFT: как оно ещё работает

Сообщение от STM32F0 Посмотреть сообщение
И мне непонятно, в чём смысл юзать софтовый SPI, если в F030 чудесный хардварный?
была готовая платка с разводкой под символьный LCD, попробовал графический - тоже думал что будет медленно, но пока хватило того что есть.
Цитата:
а на СТМ8 нет тиринга даже если зациклить смену нескольких цветов. Как? По мне мелочь, но приятно!
просто на практике непрерывная закраска прямоугольников - редко когда нужно
zöner вне форума  
Непрочитано 16.11.2015, 01:41  
STM32F0
Заблокирован
 
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
STM32F0 на пути к лучшему
По умолчанию Re: STM8 + TFT: как оно ещё работает

Сообщение от zöner Посмотреть сообщение
на практике непрерывная закраска прямоугольников - редко когда нужно
На практике я бы не стал привязывать ТФТ к СТМ8, привязал бы к СТМ32. Просто стала нтересна нижняя граница применения. Оказалось
Цитата:
при ограничениях и напрягах юзать восьмибитки типа СТМ8 в связке с простыми ТФТ ещё как-то можно, если не предъявлять особых требований. Но ИМХО всё уже это на грани фола.
С мегами и и младшими пиками всё намного хуже и юзать их с ТФТ разве что только от полной безнадёги.
И только.
STM32F0 вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает PD4 в ATTINY 4313 HeatSink Микроконтроллеры, АЦП, память и т.д 37 14.06.2011 17:46
[Решено] легкие деньги Коллекция глюков 0 17.04.2006 13:43


Часовой пояс GMT +4, время: 10:28.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot