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

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

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

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

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

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


 
Опции темы

STM8 + TFT: как оно ещё работает

Непрочитано 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.RUN
 
Регистрация: 16.02.2012
Сообщений: 440
Сказал спасибо: 89
Сказали Спасибо 735 раз(а) в 149 сообщении(ях)
zöner на пути к лучшему
По умолчанию Re: STM8 + TFT: как оно ещё работает

отдельный вопрос - кому нужна полная закраска каждые 19мс ? мультики показывать?
а линии/текст и так шустро рисует, даже через программный SPI.
zöner вне форума  
Непрочитано 15.11.2015, 21:16  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,821
Сказал спасибо: 919
Сказали Спасибо 4,289 раз(а) в 2,570 сообщении(ях)
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.RUN
 
Регистрация: 16.02.2012
Сообщений: 440
Сказал спасибо: 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.RUN
 
Аватар для Kabron
 
Регистрация: 12.11.2004
Адрес: Москва
Сообщений: 8,835
Сказал спасибо: 721
Сказали Спасибо 4,535 раз(а) в 2,070 сообщении(ях)
Kabron на пути к лучшему
По умолчанию Re: STM8 + TFT: как оно ещё работает

Все это уже давно делает 4dsystems и iteadstudio Nextion.
__________________
33Й ДАН БАНА
Я не помогаю. Я провоцирую думать.
Не дай вам Бог плохих контактов.
Kabron вне форума  
Непрочитано 16.11.2015, 00:01  
zöner
Гражданин KAZUS.RUN
 
Регистрация: 16.02.2012
Сообщений: 440
Сказал спасибо: 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.RUN
 
Регистрация: 16.02.2012
Сообщений: 440
Сказал спасибо: 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, время: 02:09.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.