Как и говорил, за быстродействием не гнался. Почти полностью перетащил UTFT - могу продемонстрировать быстродействие. Стандартное демо от UTFT по ссылке:
Поднимал еще частосту ISP начинают появлятся артифакты. Минимальное время теста доводил до 32000.
Если убрать сопли из проводов и качественные регистры взять - можно еще ускорить, но зачем?
Если убрать сопли из проводов и качественные регистры взять - можно еще ускорить, но зачем?
Крутяк. вот это да, вроде никто еще так не делал !
Так можно и не на esp8266 сделать , но и на arduino.
попробую попробую сделать на smd hc595 и выжать максималку :) по горячим следам, черкните для этого схему подключения (просто от руки на бумаге) , и все необходимые библы , скетч на яндекс диск . (и как частоту поднимать, что где менять ? (опыта с esp8266 у меня нет , но модули приобрел для будущих экспериментов)
И что надо сделать чтоб 8ми битные диспы подрубать по одной HC595 ?
Можете если время будет протестить , мож скорость такая же будет?
// чтот по видео , справа на диспе темное место, мож по горизонтали он не 320пикс а 400пикс?
Схему обязательно выложу в выходные. После недели бессоных ночей в пятницу я отдыхать :)
8-бит - быстрее не будет, в теории даже чуток медленнее. Но изменения в скорости врятли заметим. А вот проводов заметно меньше.
Сильно не ругать, по ссылке черновой вариант. Все функции одном файле, не все перенесено еще и порядок не наведен. Чуть позже наведу красоту.
в ESP частота 80МГц, а не как в меге 16МГц. Если привязываться к тактованию процессора - скорость SPI можно сделать довольно приличной. Я в сам протокол не вникал, но похоже используется аппаратный, с жесткой привязкой к некоторым пинам. Скорость передачи меняется "Делителем" относительно частоты тактования. В этом мой главный косяк, я с делителем не разобрался до конца - единственное место где методом тыка подбирал :(.
Для меги в моем файле в setup удалить задание частоты SPI.setFrequency(80000000) и указать делитель правильный SPI.setClockDivider(SPI_CLOCK_DIV2).
Или как вариант не использовать библиотеку SPI.h вообще. Для этого надо ряд функций заменить на вот это:
Есть у меня стекло ili9341, на нем выведен Fmark. Судя по даташиту это сигнал начала чтения памяти экрана(отображение ОЗУ в область матрицы). Пробовал его активировать, но не как не пойму, то ли он работает только в режиме 18 bit RGB, то ли я не все настраиваю в контроллере TFT. Если получится то можно будет используя внешнее ОЗУ размещать там обновленный фрэйм, а затем переписывать его в память TFT. При этом можно добится неплохих результатов и практически избавится от водимой отрисовки экрана. Максимальная скорость SPI которую использовал - это 50 МГц(stm32f746), использовался SPI на индикаторе. Очень хороший результат при использовании DMA. Но все равно видна отрисовка на экранах размером 480х320.
Сечас сформулирую требования к отображаемой информации и с библиотекой для работы с элементами управления на экране (коллекция элементов управления). Определюсь с количеством свободных ресурсов или их осутствии. Далее видно будет заниматься этим или нет.
Плюс у меня явно проблема с линией передачи - при увиличении скорости SPI появляются артифакты на цветах - где чередование 0101 часто встречается.
Но вариант с буфером отображаемой информации внутри контроллера мне все более симпотизирует, лучше два буфера актуальные данные и данные для передачи. Намного проще распределить процессорное время и легче делать наложение - оконный интерфейс :)
Без DMA тоже можно ускорить обновление, но буфер всеравсно нужен. Можно оформить "сжатие" данных. Делем массив не из 2х байт, а из 3х. 3й байт информация о "свежести данных". Если свежие данные передаем текущией пиксел и ближайшие пять. Или свежесть хранить построчно.
Пока задача номер два, 4 свободных пина и много датчиков. Похоже мультиплексоры......
Я три раза пересмотрел даташит на ili9341, что за Fmark?
вот тут нашел, по ILI это "TE"
только не понимаю зачем он? на прерывание повесить?
Теории не знаете, считать не любите, с референсом не дружите, вот и ковыряетесь пожизненно.
На голимом стм8 на восьмибитной шине при 320х240 и времени вывода инфы 60мС отрисовки не видно!
только не понимаю зачем он? на прерывание повесить?
В даташите от производителя tft помечен как Fmark, проедпологаю что да, повесить на прерывание и использовать ка сигнал синхронизации.
ssss, ой ли. Что по вашему незаметна отрисовка? Это когда вы цыферки выводите в област 16x24 пикселя. А нука отрисовать фон, да не статический, а динамический и при этом наложить на него спирайты динамические. Что то мне подсказывает что будут проблеммы. Большая часть библиотек растровая а не векторная. Да и для векторной графики вычислительных мощьностей stm8 вряд ли хватит.
Это когда вы цыферки выводите в област 16x24 пикселя.
Ващета... 32х50 было. Да ещё и с увеличением х2, и в 16 бит цвете. Для типовых восьмибиток это уже задача непомерно тяжёлая, изначально. И тем не менее, отрисовка была незаметна, не смотря на время в 60мС.
Просто юзались некоторые аппаратные фишки СТМ8.
Цитата:
А нука отрисовать фон, да не статический, а динамический и при этом наложить на него спирайты динамические. Что то мне подсказывает что будут проблеммы.
Для такой шняги проще взять планшет или навигатор и не прослыть, заодно, изобретателем-долгожителем каменного топора.
Пользуйтесь калькулятором, не стесняйтесь. Термин "максимально возможная теоретическая скорость передачи данных" ещё никто не отменял, как и "типовая скорость обновления экрана ТФТ".
Цитата:
Большая часть библиотек растровая а не векторная. Да и для векторной графики вычислительных мощьностей stm8 вряд ли хватит.
Красиво выдавать прописные истины за свои, да? Только если всё знаете, почему у вас не работает так как надо? Никто на стм8 HD контент крутить и не собирался. Какбэ и так было понятно. Ну, может быть не всем.
ssss, планшет или навигатор - это не интересно. Там аппаратная часть уже решена, да и приложения в достатке для разработки. И да, ты подтвердили что восьмибитки могут, но сильно ограничены. Не смотря на аппаратные фишки. Что касается частоты вывода фрэйма, то для ili9341 она может быть от 61 до 119 Гц, что соответственно равно от 16 до 9 мс. Если применить делитель то и того меньше, И в итоге все упирается в скорость обаботки и передачи информации в TFT. Многие да и я в то числе пока не нашел лучше способа чем использовать DMA, ну и на свой стах и риск разгонять кмикроконтроллкр до предела.
В выходные только часов 5 уделил, к сожалению ничего не успел - проблема с Тачем нарисовалась, точнее 2:
1) запускается через раз. В буквальном смысле слова. Ловлю на "PEN" - сброс в уровень 0 при касании. Проверял контроллером, мультитестором и светодиодом, результат один. Можно не меняя программы сидеть и перезагружать контроллер - пока не заработает. При этом заметил, что когда Тач оживает - просадка по питанию идет. В нормальном состоянии напряжение 3,3В, когда оживает тач просаживается до 3,1В. Сегодня попробую источник питания поменять, в том числе на экран отдельный блок выделить. Возможно не вытягивает преобразователь в ESP.
2) чтение координат странное. После замены источника питания буду повторять. По примеру sva_khv - чтение "работает" даже координата "Y" совпадает, Х - инверсия. Но главная проблема - после первого нажатия на экран постоянно пытается читать, при этом координаты уже далеки от реальности.
Попробовал библиотеку URTouch. Для ESP примеры надо переписывать - она в бесконечные циклы загоняет программу в ожидании ответа от татча. Как результат ESP - уходит в ребут по сторожевому таймеру. В калибровке вставил везде delay(0); - калибровка прошла, даже разные данные если "тыкать" не туда. И повторяются, если целится правильно.
Остальные примеры переписываю. Пока на первом остановился - кнопки. Координаты не читает (-1; -1). Сегодня посмотрю, где не доглядел.
Еще вопрос по библиотеке URTouch, зачем она вход для прерывания PEN от экрана, в перерывах между чтением переводит в выход и поднимает высокий уровень?
Посмотри, может поможет https://youtu.be/oAnAdO2NUCQ . Единственный способ как поборол проблемму с зависанием xpt2046, это в функции чтения координат ввел функцию инита чипа, возможно в xpt2046 не сбрасывается флаг прерывания по касанию. Как правильно это сделать не понял и не нашел ни в одной статье. Так же он стабильно работает при чтении параметра Z. Но возникают другие вопросы, какие сейчас не помню.
ArtemRu, питание д.б. хорошим и стабильным. на шилде два VDD , xpt2046 питается от sot-23 662K (это стаб 3.3вольта) , иногда могут ставить другой на 3.0в (на SPI TFT LCD шилдах особенно) . если нет у вас 5в , а только 3.3 внешних , то надо закоротить перемычку J1 , чтоб миновать провисание 662К , но д.б. очень надежное 3.3в.
Самый лучший вариант это дать всеже стабу 5в , и он сам даст надежные и ровные 3.3в (а не те что провисают у esp8266 под ее работой)
раз все-же просаживается , возможно шлейф тача в месте пайки коротит. Выключите питалово и прозвоните мультиметром сопротивление линий тача на входе xpt2046 . и при нажатии на тач они должны пересекаться. проверьте 4 крайние точки на таче.
Когда питание экрана было подключено к 3.3V ESP - тач работал при более "низком" напряжении, как писал выше
Когда подключил к 5V USB Тач стал намного чаще запускатья 50/50. Но картина обратная. При работающем татче напряжение 3.2 -3.3. При напряжении 3.0-3.1 татч не запускался.
Общее питание у меня от USB компьютера. Попробовал зарядки от телефонов, картина примерна такая же.
Взял внешнее питание 5В от макетки "-" посадил на общую землю, все плюсы от экрана VDD и BL посадил на + внешнего источника. включил и получил дымочек от экрана :)
насколько я понимаю теперь перемычка J1 и назад на 3.3 вольта. Вопрос только 662K лучше вообще удалить?
ArtemRu , попробуйте всеже найти XC6206P332MR (662K) 3.3V/0.5A в местных магазах должны быть.
Да и в домашней/офисной электронике полно 3.3в стабов (в других корпусах и распиновкой) , можно дернуть с нее. иногда на переходнике usb-ttl ch340 его допом ставят, на ардуино , да и других ардуино плат.
стаб этот сгорает от переполюсовки. и как-бы он не пустил сильное напр. в дисп.
пока только под заказ нашел...
я проверил раза 4 перед включением. и раз 10 после дымка. переполюсовки и не корректного подключения не нашел :(
Хоят - это с моей точки зрения корректное.
Пациент скорее жив чем мертв.
Поставил перемычку J1 убрал 662K. Экран ожил, татч ожил - в том же виде через раз. Пациент уше в запас до выяснения и ремонта.
Новый клон - симптомы теже. Раз 10 к разу перезагрузил - татч работает, на десятый раз отказал :).
Питание 5В, но в этот раз с контроллера внешнее питание боюсь заводить
Ссылка не работает. У меня сейчас - до первого чтения не доходит. Все библиотеки смотрят пин состояния от татча - а он не реагирует на нажатие.
Поищу про инициализацию - может поможет.
Пока что наиболее стабильно запускается сенс - если пин состояния татча - предварительно выходом сделать и подать высокое на него :).
В связи с выгоранием первого - это уже второй. Глюк аналогичен. У второго в левом нижнем углу трудно нажать. При калибровке приходится рукой придерживать и нажимать сильнее на крестик в нижнем левом углу.
Еще вопрос... ILI9341 и XPT2046 - Это же независимые контроллеры? у меня без инициализации дисплея ни разу татч не получилось запустить. Может в инициализации ILI надо вносить изменения?
xpt2046 отделный чип и ни как не связан с ili9341 галванически. Еще раз повторюсь в функцию считывания координат после считывания добавте фунцию inittouc(). С гарантией 100% проблема уйдет. У меня функция чтения выглядит примерно вот так.
bool Get_Touch_xy(__IO uint16_t *x_kor, __IO uint16_t *y_kor, bool calibrate)
{
__IO uint16_t touch_x = 0;
__IO uint16_t touch_y = 0;
uint16_t touch_X[10]={0}, touch_Y[10]={0}, touch_avg;
uint8_t i, flag;
flag = IsTouch();
//press = IsTouch_XY();
if(flag) //Есть касание //There is a touch
{
for(i=0;i<10;i++) //Считываем десять измерений x и y в точке касания //Read ten dimensions x and y at the point of tangency
{
touch_X[i] = Get_Touch(chx);
touch_Y[i] = Get_Touch(chy);
}
Sort(touch_X); //Сортируем измерения по нарастающей //We sort the measurements by increasing
Sort(touch_Y);
touch_avg=0; //Расчитываем среднее арифметическое измерений отбросив два наименьших и два наибольших
for(i=3;i<7;i++) //We calculate the average of the arithmetic measurements by discarding the two smallest and two largest
touch_avg+=touch_X[i];
touch_x=touch_avg/4;
touch_avg=0;
for(i=3;i<7;i++)
touch_avg+=touch_Y[i];
touch_y=touch_avg/4;
// touch_x -= Xmin;
// touch_x = Y_SIZE - touch_x/((Xmax-Xmin)/Y_SIZE);
// touch_y -= Ymin;
// touch_y = X_SIZE - touch_y/((Ymax-Ymin)/X_SIZE);
if(calibrate)
{
touch_x = Y_SIZE - touch_x/ay - by;
touch_y = X_SIZE - touch_y/ax - bx;
if(touch_x > 240) //240
touch_x = 240;
if(touch_y > 320) //320
touch_y = 320;
call_XPT2046(); //вот это обязательно добавлять, иначе глючит.....
// *x_kor = touch_x;
// *y_kor = touch_y;
*y_kor = touch_x;
*x_kor = touch_y;
}else{
call_XPT2046(); //вот это обязательно добавлять, иначе глючит.....
*y_kor = touch_x;
*x_kor = touch_y;
}
}
return flag;
}
Уже сделал. Только пока в функцию инициализации тача. Не знаю, почему в библиотеке примеров этого не было. Если глюки появятся в процессе работу - добавлю и в функции чтения данных. Примерно так и контроллеру уходит в режим ожидания и работает пин на прерывание:
Уже сделал. Только пока в функцию инициализации тача. Не знаю, почему в библиотеке примеров этого не было. ....
была мысля что вы одновременно пытаетесь пользовать аппаратный SPI для тача и для диспа. А не тест только тача - вывод в терминал координат нажатия тача.
В UTFT дисп сидит на других пинах - параллельная шина или на програмном SPI . поэтому пины тача (аппаратный SPI вход выход и скорость spi) настраиваются единожды его инитом вначале программы.
А если потом вы юзаете SPI для своих нужд , то надо заново его инитом перенастроить (видимо от большой перенастроенной скорости диспа SPI, xpt2046 офигевает и глючит) . мож и настройка доп пинов SS ,... затрагивается.
если глюки какие еще будут, то сделайте хорошие короткие провода - и + до шилда диспа , желательно еще танталовый кондер повешать на питание xpt2046.
Я скорость пока не дергаю, просто понизил до 2МГц. Когда все отлажу - для дисплея буду поднимать. Ножек у меня мало - что б каждое на свое вешать. Так что все на аппаратном SPI :)
Что б датчики подключить еще мультимплексор придется добавлять.
..... Ножек у меня мало - что б каждое на свое вешать. Так что все на аппаратном SPI :)
Что б датчики подключить еще мультимплексор придется добавлять.
а модуль ESP32 за 400р ? всего то 200р-250р разница с node mcu .
за 400 более продвинутая.
Для меня главный плюс - это WIFI. Если объединять потом все устройства - проводов дополнительных тянуть не надо. А питание по умолчанию у всех электрических приборов есть.
К примеру если сделать 5 розеток, пару термодатчикво. То разница в цене чувствительная. А для этих целей и первой версии за глаза.
160 рублей ESP + 50 Рублей термодатчик + 50 рублей Реле +50 рублей Блок питания, итог за 400 рублей уже термостат с удаленным контролем и управлением. Можно добавить 300-500 рублей на экран и за 800 получаем еще и локальный пульт управления. Для управления светом, можно добавить сенсорный датчик и датчик освещенности, вместо дисплея. Если Самому это паять, то можно еще снизить.
Я за децентрализацию - каждый отвечает за себя и за свою маленькую функциональную задачу. А не центральный процессор за все разом.
То что я сечас за уши к ней притягиваю много много - внешних устройств - это разово. Самому потренироваться и посмотреть, что из нее выжать можно.
ну можно готовые модули ESP32 все в одном не за 400 , а за 300 найти (если 10шт для проектов брать, а там уже можно и с OLED на борту - подавляющее большинство покупок модулей esp32 именно с дисплеями на борту)
Чуть выше - пост откорректировал, зачем и почему.
доставка всего 50 рублей, с увеличением количества - почти не меняется. Я 10 и брал - что бы стоимость доставки размазать.
Я не против новых модулей. ESP32 - думаю еще упадут в цене через полгода - год и до них доберусь. :)
Показывает, но все линии ломанные какие-то, текст темный, цвета не те. Вижу что схематика у него через шинные преобразователи 74ХХ541, может они влияют? Все таки на stm32 логика 3.3 вольта. Переключатель на екране 5 - 3.3 вольта не дает ничего. Контакт RD по схеме библиотеки нету как подключить (выведен с самого екрана), он на самом дисплее на на +, думаю тут не влияет чтение данных с дисплея. Перемычка R2 - R1 результата не дает никакого.
смотрите внимательней , шилд 16бит , библа для 8бит.
два варианта:
1. нагреть плату , отклеить дисплей от платы , посмотреть на шлейф , составить или найти распиновку ,перевести его на 8 бит.
2. найти либу которая может работать с 16бит , к примеру MCUFRIEND_kbv, поискать там нужный пример , подключить еще 8 проводов куда в ней описано . погуглить типа 16bit tft lcd stm32f103 , blue pill 16bit tft lcd, STM32F103C8T6 16bit tft lcd /
либа UTFT , и равно MCUFRIEND_kbv , точно работают с 16 бит . в есть MCUFRIEND_kbv поддержка stm32f4 для 16бит , и ардуин для 16бит. с blue pill надо искать как там и что для 16бит.
смотрите внимательней , шилд 16бит , библа для 8бит.
два варианта:
1. нагреть плату , отклеить дисплей от платы , посмотреть на шлейф , составить или найти распиновку ,перевести его на 8 бит.
2. найти либу которая может работать с 16бит , к примеру MCUFRIEND_kbv, поискать там нужный пример , подключить еще 8 проводов куда в ней описано . погуглить типа 16bit tft lcd stm32f103 , blue pill 16bit tft lcd, STM32F103C8T6 16bit tft lcd /
либа UTFT , и равно MCUFRIEND_kbv , точно работают с 16 бит . в есть MCUFRIEND_kbv поддержка stm32f4 для 16бит , и ардуин для 16бит. с blue pill надо искать как там и что для 16бит.
Дисплей имеет перемычки R2 - R1 - ничего не дало (( Не заводиться вообще в другой позиции.
utft пишет конкретно unsupported arm cpu ((((
Но ведь завелося же рисует шрифт, линии, кружочки, правда чуть крироватенькое ((
если не заводится в другой позиции , значит надо пробовать на других 8бит.
// ili9341 в зависимости от пинов IM , в 8бит режиме , может использовать D0-D7 или D8-15 . Попробуйте использовать старшие биты D8-D15 у дисплея.
/// и так то надо фото выкладывать . как так могут быть " линии, кружочки, чуть крироватенькое ((" непонятно
Ура, заработало! Поменял резистор и навесил на DB8-DB15 (обратить внимание что нумерация контактов на плате не в такой последовательности как на DB0-DB8 - тоесть просто внимательно подключать). Библиотека 8 бит (проводов подключения конечно намного меньше чем на 16) + скорость намного выше чем на 16 бит на ардуино мега.
Всем привет! есть дисплей на ILI9488 залил прошивку в арудино мега, как сказанно на 1 странице. после прошивки дсиплей на очень короткое вермя запускает программу и отключается(белый экран) при нажатии кнопки ресет на меге все повторяется. не могу понять в чем косяк. Помогите разобраться
кто использовал дисплей указанный на форуме. Подскажите как его подключить к nucleo(stm32) и посоветуйте годную библиотеку для работы с данным дисплеем.
Добрый день. (Понимаю что два года назад было это сообщение ). Fusard удалось подключить и запустить LCD?
А может у кого другого получилось? Если да, то с какой библиотекой он заработал на Ардуино Мега
Подскажите пожалуйста.
Я не доделал, ушел на ESP32, там проблема общения с контроллером решилась другим способом, для меня более эффективным.
Столкнулся с проблемой по подключению и инициализации LCD open-smart ILI9329. После подключения к arduino MEGA выдает белый экран, что бы не делал. Экраны заказывал с aliexpress в количестве 5шт. и у всех одна и та же проблема.
Может кто даст дельный совет как заставить его работать?
Может есть готовая библиотека (набор библиотек с уже рабочего макета)?
После подключения к arduino MEGA выдает белый экран, что бы не делал.
белый экран - это неверная инициализация. На али под обозначением ILI9329. могут продавться экраны с самыми разными контроллерами.
Какую библиотеку вы используете? Попробуйте пример тестирования дисплея из библиотеки MCU-friend. Кстати, ее автор доступен в сети, будут проблемы, можно будет у него напрямую спросить
Появление белого экрана это странный момент. дисплей может стабильно работать, а потом вдруг только бледнеть пару дней. Библиотеки при этом не меняю.
Хотя, стабильность тоже относительная... иногда после заливки скетча - меняет ориентацию и цветопередачу... желтый становится прикольно фиолетовым. лечится отключением питания. я думаю, дело тут в том, что перед заливкой, ардуина перезагружается, а контроллер дисплея подвисает на это время в растерянности.
Как и говорил, за быстродействием не гнался. Почти полностью перетащил UTFT - могу продемонстрировать быстродействие. Стандартное демо от UTFT по ссылке:
https://youtu.be/rv5ML4GPjp8
Поднимал еще частосту ISP начинают появлятся артифакты. Минимальное время теста доводил до 32000.
Если убрать сопли из проводов и качественные регистры взять - можно еще ускорить, но зачем?
......
Минимальное время теста доводил до 32000.
Если убрать сопли из проводов и качественные регистры взять - можно еще ускорить, но зачем?
Крутяк. вот это да, вроде никто еще так не делал !
Так можно и не на esp8266 сделать , но и на arduino.
попробую попробую сделать на smd hc595 и выжать максималку :) по горячим следам, черкните для этого схему подключения (просто от руки на бумаге) , и все необходимые библы , скетч на яндекс диск . (и как частоту поднимать, что где менять ? (опыта с esp8266 у меня нет , но модули приобрел для будущих экспериментов)
И что надо сделать чтоб 8ми битные диспы подрубать по одной HC595 ?
Можете если время будет протестить , мож скорость такая же будет?
// чтот по видео , справа на диспе темное место, мож по горизонтали он не 320пикс а 400пикс?
///// нашел на ютубе еще видосы по esp8266 и дисп с параллельной шиной https://youtu.be/gvpuhrO4_bw
Схему обязательно выложу в выходные. После недели бессоных ночей в пятницу я отдыхать :)
8-бит - быстрее не будет, в теории даже чуток медленнее. Но изменения в скорости врятли заметим. А вот проводов заметно меньше.
Сильно не ругать, по ссылке черновой вариант. Все функции одном файле, не все перенесено еще и порядок не наведен. Чуть позже наведу красоту.
в ESP частота 80МГц, а не как в меге 16МГц. Если привязываться к тактованию процессора - скорость SPI можно сделать довольно приличной. Я в сам протокол не вникал, но похоже используется аппаратный, с жесткой привязкой к некоторым пинам. Скорость передачи меняется "Делителем" относительно частоты тактования. В этом мой главный косяк, я с делителем не разобрался до конца - единственное место где методом тыка подбирал :(.
Для меги в моем файле в setup удалить задание частоты SPI.setFrequency(80000000) и указать делитель правильный SPI.setClockDivider(SPI_CLOCK_DIV2).
Или как вариант не использовать библиотеку SPI.h вообще. Для этого надо ряд функций заменить на вот это:
Черная полоса - это уже не экран. Если вплотную посмотреть - там стекло с клеенкой, экран под ней.
Есть у меня стекло ili9341, на нем выведен Fmark. Судя по даташиту это сигнал начала чтения памяти экрана(отображение ОЗУ в область матрицы). Пробовал его активировать, но не как не пойму, то ли он работает только в режиме 18 bit RGB, то ли я не все настраиваю в контроллере TFT. Если получится то можно будет используя внешнее ОЗУ размещать там обновленный фрэйм, а затем переписывать его в память TFT. При этом можно добится неплохих результатов и практически избавится от водимой отрисовки экрана. Максимальная скорость SPI которую использовал - это 50 МГц(stm32f746), использовался SPI на индикаторе. Очень хороший результат при использовании DMA. Но все равно видна отрисовка на экранах размером 480х320.
Впечатлился:
супер скорость, но конец RAM
в том числе подборка роликов
45мс а нам слабо :)
Почитал посмотрел - пока оно того не стоит.
Сечас сформулирую требования к отображаемой информации и с библиотекой для работы с элементами управления на экране (коллекция элементов управления). Определюсь с количеством свободных ресурсов или их осутствии. Далее видно будет заниматься этим или нет.
Плюс у меня явно проблема с линией передачи - при увиличении скорости SPI появляются артифакты на цветах - где чередование 0101 часто встречается.
Но вариант с буфером отображаемой информации внутри контроллера мне все более симпотизирует, лучше два буфера актуальные данные и данные для передачи. Намного проще распределить процессорное время и легче делать наложение - оконный интерфейс :)
Без DMA тоже можно ускорить обновление, но буфер всеравсно нужен. Можно оформить "сжатие" данных. Делем массив не из 2х байт, а из 3х. 3й байт информация о "свежести данных". Если свежие данные передаем текущией пиксел и ближайшие пять. Или свежесть хранить построчно.
Пока задача номер два, 4 свободных пина и много датчиков. Похоже мультиплексоры......
Я три раза пересмотрел даташит на ili9341, что за Fmark?
вот тут нашел, по ILI это "TE"
только не понимаю зачем он? на прерывание повесить?
Теории не знаете, считать не любите, с референсом не дружите, вот и ковыряетесь пожизненно.
На голимом стм8 на восьмибитной шине при 320х240 и времени вывода инфы 60мС отрисовки не видно!
Я три раза пересмотрел даташит на ili9341, что за Fmark?
вот тут нашел, по ILI это "TE"
только не понимаю зачем он? на прерывание повесить?
В даташите от производителя tft помечен как Fmark, проедпологаю что да, повесить на прерывание и использовать ка сигнал синхронизации.
ssss, ой ли. Что по вашему незаметна отрисовка? Это когда вы цыферки выводите в област 16x24 пикселя. А нука отрисовать фон, да не статический, а динамический и при этом наложить на него спирайты динамические. Что то мне подсказывает что будут проблеммы. Большая часть библиотек растровая а не векторная. Да и для векторной графики вычислительных мощьностей stm8 вряд ли хватит.
ой ли.
Да-да-да!
Что по вашему незаметна отрисовка?
Да то и значит!
Это когда вы цыферки выводите в област 16x24 пикселя.
Ващета... 32х50 было. Да ещё и с увеличением х2, и в 16 бит цвете. Для типовых восьмибиток это уже задача непомерно тяжёлая, изначально. И тем не менее, отрисовка была незаметна, не смотря на время в 60мС.
Просто юзались некоторые аппаратные фишки СТМ8.
А нука отрисовать фон, да не статический, а динамический и при этом наложить на него спирайты динамические. Что то мне подсказывает что будут проблеммы.
Для такой шняги проще взять планшет или навигатор и не прослыть, заодно, изобретателем-долгожителем каменного топора.
Пользуйтесь калькулятором, не стесняйтесь. Термин "максимально возможная теоретическая скорость передачи данных" ещё никто не отменял, как и "типовая скорость обновления экрана ТФТ".
Большая часть библиотек растровая а не векторная. Да и для векторной графики вычислительных мощьностей stm8 вряд ли хватит.
Красиво выдавать прописные истины за свои, да? Только если всё знаете, почему у вас не работает так как надо? Никто на стм8 HD контент крутить и не собирался. Какбэ и так было понятно. Ну, может быть не всем.
ssss, планшет или навигатор - это не интересно. Там аппаратная часть уже решена, да и приложения в достатке для разработки. И да, ты подтвердили что восьмибитки могут, но сильно ограничены. Не смотря на аппаратные фишки. Что касается частоты вывода фрэйма, то для ili9341 она может быть от 61 до 119 Гц, что соответственно равно от 16 до 9 мс. Если применить делитель то и того меньше, И в итоге все упирается в скорость обаботки и передачи информации в TFT. Многие да и я в то числе пока не нашел лучше способа чем использовать DMA, ну и на свой стах и риск разгонять кмикроконтроллкр до предела.
В выходные только часов 5 уделил, к сожалению ничего не успел - проблема с Тачем нарисовалась, точнее 2:
1) запускается через раз. В буквальном смысле слова. Ловлю на "PEN" - сброс в уровень 0 при касании. Проверял контроллером, мультитестором и светодиодом, результат один. Можно не меняя программы сидеть и перезагружать контроллер - пока не заработает. При этом заметил, что когда Тач оживает - просадка по питанию идет. В нормальном состоянии напряжение 3,3В, когда оживает тач просаживается до 3,1В. Сегодня попробую источник питания поменять, в том числе на экран отдельный блок выделить. Возможно не вытягивает преобразователь в ESP.
2) чтение координат странное. После замены источника питания буду повторять. По примеру sva_khv - чтение "работает" даже координата "Y" совпадает, Х - инверсия. Но главная проблема - после первого нажатия на экран постоянно пытается читать, при этом координаты уже далеки от реальности.
Попробовал библиотеку URTouch. Для ESP примеры надо переписывать - она в бесконечные циклы загоняет программу в ожидании ответа от татча. Как результат ESP - уходит в ребут по сторожевому таймеру. В калибровке вставил везде delay(0); - калибровка прошла, даже разные данные если "тыкать" не туда. И повторяются, если целится правильно.
Остальные примеры переписываю. Пока на первом остановился - кнопки. Координаты не читает (-1; -1). Сегодня посмотрю, где не доглядел.
Еще вопрос по библиотеке URTouch, зачем она вход для прерывания PEN от экрана, в перерывах между чтением переводит в выход и поднимает высокий уровень?
Посмотри, может поможет https://youtu.be/oAnAdO2NUCQ . Единственный способ как поборол проблемму с зависанием xpt2046, это в функции чтения координат ввел функцию инита чипа, возможно в xpt2046 не сбрасывается флаг прерывания по касанию. Как правильно это сделать не понял и не нашел ни в одной статье. Так же он стабильно работает при чтении параметра Z. Но возникают другие вопросы, какие сейчас не помню.
ArtemRu, питание д.б. хорошим и стабильным. на шилде два VDD , xpt2046 питается от sot-23 662K (это стаб 3.3вольта) , иногда могут ставить другой на 3.0в (на SPI TFT LCD шилдах особенно) . если нет у вас 5в , а только 3.3 внешних , то надо закоротить перемычку J1 , чтоб миновать провисание 662К , но д.б. очень надежное 3.3в.
Самый лучший вариант это дать всеже стабу 5в , и он сам даст надежные и ровные 3.3в (а не те что провисают у esp8266 под ее работой)
раз все-же просаживается , возможно шлейф тача в месте пайки коротит. Выключите питалово и прозвоните мультиметром сопротивление линий тача на входе xpt2046 . и при нажатии на тач они должны пересекаться. проверьте 4 крайние точки на таче.
УПС, сжег 662К :)
Когда питание экрана было подключено к 3.3V ESP - тач работал при более "низком" напряжении, как писал выше
Когда подключил к 5V USB Тач стал намного чаще запускатья 50/50. Но картина обратная. При работающем татче напряжение 3.2 -3.3. При напряжении 3.0-3.1 татч не запускался.
Общее питание у меня от USB компьютера. Попробовал зарядки от телефонов, картина примерна такая же.
Взял внешнее питание 5В от макетки "-" посадил на общую землю, все плюсы от экрана VDD и BL посадил на + внешнего источника. включил и получил дымочек от экрана :)
насколько я понимаю теперь перемычка J1 и назад на 3.3 вольта. Вопрос только 662K лучше вообще удалить?
ArtemRu , попробуйте всеже найти XC6206P332MR (662K) 3.3V/0.5A в местных магазах должны быть.
Да и в домашней/офисной электронике полно 3.3в стабов (в других корпусах и распиновкой) , можно дернуть с нее. иногда на переходнике usb-ttl ch340 его допом ставят, на ардуино , да и других ардуино плат.
стаб этот сгорает от переполюсовки. и как-бы он не пустил сильное напр. в дисп.
пока только под заказ нашел...
я проверил раза 4 перед включением. и раз 10 после дымка. переполюсовки и не корректного подключения не нашел :(
Хоят - это с моей точки зрения корректное.
Пациент скорее жив чем мертв.
Поставил перемычку J1 убрал 662K. Экран ожил, татч ожил - в том же виде через раз. Пациент уше в запас до выяснения и ремонта.
Новый клон - симптомы теже. Раз 10 к разу перезагрузил - татч работает, на десятый раз отказал :).
Питание 5В, но в этот раз с контроллера внешнее питание боюсь заводить
Ссылка не работает. У меня сейчас - до первого чтения не доходит. Все библиотеки смотрят пин состояния от татча - а он не реагирует на нажатие.
Поищу про инициализацию - может поможет.
Пока что наиболее стабильно запускается сенс - если пин состояния татча - предварительно выходом сделать и подать высокое на него :).
В связи с выгоранием первого - это уже второй. Глюк аналогичен. У второго в левом нижнем углу трудно нажать. При калибровке приходится рукой придерживать и нажимать сильнее на крестик в нижнем левом углу.
Еще вопрос... ILI9341 и XPT2046 - Это же независимые контроллеры? у меня без инициализации дисплея ни разу татч не получилось запустить. Может в инициализации ILI надо вносить изменения?
xpt2046 отделный чип и ни как не связан с ili9341 галванически. Еще раз повторюсь в функцию считывания координат после считывания добавте фунцию inittouc(). С гарантией 100% проблема уйдет. У меня функция чтения выглядит примерно вот так.
Прошу прощения код писался для stm... https://youtu.be/oAnAdO2NUCQ
Теперь работает, непонятно почему в пердыдущем посте не работала...
Да, огромное спасибо.
Уже сделал. Только пока в функцию инициализации тача. Не знаю, почему в библиотеке примеров этого не было. Если глюки появятся в процессе работу - добавлю и в функции чтения данных. Примерно так и контроллеру уходит в режим ожидания и работает пин на прерывание:
Да, огромное спасибо.
Уже сделал. Только пока в функцию инициализации тача. Не знаю, почему в библиотеке примеров этого не было. ....
была мысля что вы одновременно пытаетесь пользовать аппаратный SPI для тача и для диспа. А не тест только тача - вывод в терминал координат нажатия тача.
В UTFT дисп сидит на других пинах - параллельная шина или на програмном SPI . поэтому пины тача (аппаратный SPI вход выход и скорость spi) настраиваются единожды его инитом вначале программы.
А если потом вы юзаете SPI для своих нужд , то надо заново его инитом перенастроить (видимо от большой перенастроенной скорости диспа SPI, xpt2046 офигевает и глючит) . мож и настройка доп пинов SS ,... затрагивается.
если глюки какие еще будут, то сделайте хорошие короткие провода - и + до шилда диспа , желательно еще танталовый кондер повешать на питание xpt2046.
Я скорость пока не дергаю, просто понизил до 2МГц. Когда все отлажу - для дисплея буду поднимать. Ножек у меня мало - что б каждое на свое вешать. Так что все на аппаратном SPI :)
Что б датчики подключить еще мультимплексор придется добавлять.
..... Ножек у меня мало - что б каждое на свое вешать. Так что все на аппаратном SPI :)
Что б датчики подключить еще мультимплексор придется добавлять.
а модуль ESP32 за 400р ? всего то 200р-250р разница с node mcu .
36 GPIO , 160 МГц , 4 SPI ,...
https://ru.aliexpress.com/item/ESP32-Development-Board-WiFi-Bluetooth-Ultra-Low-Power-Consumption-Dual-Cores-ESP-32-ESP-32S/32799710563.html
https://geektimes.ru/post/290205/
Которая в первой колонке, она 150 рублей:
https://ru.aliexpress.com/item/1PCS-Wireless-module-CH340-NodeMcu-V3-Lua-WIFI-Internet-of-Things-development-board-based-ESP8266/32665100123.html?spm=a2g0s.9042311.0.0.QvPAIg
за 400 более продвинутая.
Для меня главный плюс - это WIFI. Если объединять потом все устройства - проводов дополнительных тянуть не надо. А питание по умолчанию у всех электрических приборов есть.
К примеру если сделать 5 розеток, пару термодатчикво. То разница в цене чувствительная. А для этих целей и первой версии за глаза.
160 рублей ESP + 50 Рублей термодатчик + 50 рублей Реле +50 рублей Блок питания, итог за 400 рублей уже термостат с удаленным контролем и управлением. Можно добавить 300-500 рублей на экран и за 800 получаем еще и локальный пульт управления. Для управления светом, можно добавить сенсорный датчик и датчик освещенности, вместо дисплея. Если Самому это паять, то можно еще снизить.
Я за децентрализацию - каждый отвечает за себя и за свою маленькую функциональную задачу. А не центральный процессор за все разом.
То что я сечас за уши к ней притягиваю много много - внешних устройств - это разово. Самому потренироваться и посмотреть, что из нее выжать можно.
150+доставка
ну можно готовые модули ESP32 все в одном не за 400 , а за 300 найти (если 10шт для проектов брать, а там уже можно и с OLED на борту - подавляющее большинство покупок модулей esp32 именно с дисплеями на борту)
https://ru.aliexpress.com/item/10-ESP32-WiFi-Bluetooth/32832702116.html
Чуть выше - пост откорректировал, зачем и почему.
доставка всего 50 рублей, с увеличением количества - почти не меняется. Я 10 и брал - что бы стоимость доставки размазать.
Я не против новых модулей. ESP32 - думаю еще упадут в цене через полгода - год и до них доберусь. :)
Здравствуйте, есть такой экранчик https://www.itead.cc/wiki/Arduino_3.2_TFT_LCD_Touch_Shield_V2
Как его подключить к stm32f103? Взял библиотеку https://github.com/iwalpola/Adafruit_ILI9341_8bit_STM
Показывает, но все линии ломанные какие-то, текст темный, цвета не те. Вижу что схематика у него через шинные преобразователи 74ХХ541, может они влияют? Все таки на stm32 логика 3.3 вольта. Переключатель на екране 5 - 3.3 вольта не дает ничего. Контакт RD по схеме библиотеки нету как подключить (выведен с самого екрана), он на самом дисплее на на +, думаю тут не влияет чтение данных с дисплея. Перемычка R2 - R1 результата не дает никакого.
Здравствуйте, есть такой экранчик https://www.itead.cc/wiki/Arduino_3.2_TFT_LCD_Touch_Shield_V2
Как его подключить к stm32f103? Взял библиотеку https://github.com/iwalpola/Adafruit_ILI9341_8bit_STM
....
смотрите внимательней , шилд 16бит , библа для 8бит.
два варианта:
1. нагреть плату , отклеить дисплей от платы , посмотреть на шлейф , составить или найти распиновку ,перевести его на 8 бит.
2. найти либу которая может работать с 16бит , к примеру MCUFRIEND_kbv, поискать там нужный пример , подключить еще 8 проводов куда в ней описано . погуглить типа 16bit tft lcd stm32f103 , blue pill 16bit tft lcd, STM32F103C8T6 16bit tft lcd /
либа UTFT , и равно MCUFRIEND_kbv , точно работают с 16 бит . в есть MCUFRIEND_kbv поддержка stm32f4 для 16бит , и ардуин для 16бит. с blue pill надо искать как там и что для 16бит.
смотрите внимательней , шилд 16бит , библа для 8бит.
два варианта:
1. нагреть плату , отклеить дисплей от платы , посмотреть на шлейф , составить или найти распиновку ,перевести его на 8 бит.
2. найти либу которая может работать с 16бит , к примеру MCUFRIEND_kbv, поискать там нужный пример , подключить еще 8 проводов куда в ней описано . погуглить типа 16bit tft lcd stm32f103 , blue pill 16bit tft lcd, STM32F103C8T6 16bit tft lcd /
либа UTFT , и равно MCUFRIEND_kbv , точно работают с 16 бит . в есть MCUFRIEND_kbv поддержка stm32f4 для 16бит , и ардуин для 16бит. с blue pill надо искать как там и что для 16бит.
Дисплей имеет перемычки R2 - R1 - ничего не дало (( Не заводиться вообще в другой позиции.
utft пишет конкретно unsupported arm cpu ((((
Но ведь завелося же рисует шрифт, линии, кружочки, правда чуть крироватенькое ((
если не заводится в другой позиции , значит надо пробовать на других 8бит.
// ili9341 в зависимости от пинов IM , в 8бит режиме , может использовать D0-D7 или D8-15 . Попробуйте использовать старшие биты D8-D15 у дисплея.
/// и так то надо фото выкладывать . как так могут быть " линии, кружочки, чуть крироватенькое ((" непонятно
если не заводится в другой позиции , значит надо пробовать на других 8бит.
// ili9341 в зависимости от пинов IM , в 8бит режиме , может использовать D0-D7 или D8-15 . Попробуйте использовать старшие биты D8-D15 у дисплея.
/// и так то надо фото выкладывать . как так могут быть " линии, кружочки, чуть крироватенькое ((" непонятно
Ура, заработало! Поменял резистор и навесил на DB8-DB15 (обратить внимание что нумерация контактов на плате не в такой последовательности как на DB0-DB8 - тоесть просто внимательно подключать). Библиотека 8 бит (проводов подключения конечно намного меньше чем на 16) + скорость намного выше чем на 16 бит на ардуино мега.
Здравствуйте!
Имею 3.2" TFT сенсорный дисплей ILI9341 34-pin
в сети накопал такое http://www.lcdwiki.com/3.2inch_16BIT_Module_ILI9341_SKU:MRB3205 +
Картинка там прямо копия моей и совпадает MRB3205.
В прилагавшемся софте есть ссылка сюда https://github.com/Bodmer/TFT_HX8357
Прошу подсказать куда копать на тему подключения к Arduino Due.
C самой Arduino небольшой опыт есть.
Приветствую! Удалось запустить дисплей от ардуины ?
Всем привет! есть дисплей на ILI9488 залил прошивку в арудино мега, как сказанно на 1 странице. после прошивки дсиплей на очень короткое вермя запускает программу и отключается(белый экран) при нажатии кнопки ресет на меге все повторяется. не могу понять в чем косяк. Помогите разобраться
пару лет назад этот дисплей отлично работал в той же связки с мегой. информационные пины нагружены резисторами 10к
кто использовал дисплей указанный на форуме. Подскажите как его подключить к nucleo(stm32) и посоветуйте годную библиотеку для работы с данным дисплеем.
Здравствуйте!
Имею 3.2" TFT сенсорный дисплей ILI9341 34-pin
в сети накопал такое http://www.lcdwiki.com/3.2inch_16BIT_Module_ILI9341_SKU:MRB3205 +
Картинка там прямо копия моей и совпадает MRB3205.
В прилагавшемся софте есть ссылка сюда https://github.com/Bodmer/TFT_HX8357
Прошу подсказать куда копать на тему подключения к Arduino Due.
C самой Arduino небольшой опыт есть.
Добрый день. (Понимаю что два года назад было это сообщение ). Fusard удалось подключить и запустить LCD?
А может у кого другого получилось? Если да, то с какой библиотекой он заработал на Ардуино Мега
Подскажите пожалуйста.
А может у кого другого получилось? Если да, то с какой библиотекой он заработал на Ардуино Мега
Подскажите пожалуйста.
Я не доделал, ушел на ESP32, там проблема общения с контроллером решилась другим способом, для меня более эффективным.
Хорошо, тогда прошу помощи у тех, кто может помочь запустить этот модуль на Ардуино Мега (см. фото)
Писал продавцу. Он отписался технической документацией на этот дисплей.
Я в этой ветке выше видел сообщения, но когда начал разбираться, не понял - несоответствие пинов в разъёмах.
Т.е. RS предлагается подключить на Т0, CS на RD, WR - на ALE (кстати что это за пин. не нашел пока ничего) и RST на WR. Это верно?
Может для работы нужны шилды типа таких:
.
Далее, закачал библиотеку на ILI9341
Вот пример скетча
А где создание объекта TFT с указанием сответствующих пинов? А как быть с ТачСкрином?
Помогите пожалуйста разобраться с этим Twix-ом?
Может для работы нужны шилды типа таких:
Или подобные - изготовленные самостоятельно.
Очевидно лишь, что напрямую этот дисплей к разъему Меги подключить нельзя.
Добрый день.
имеется стекляшка с сенсором OPEN-Smart 3.2 LCD ILI9329
https://aliexpress.ru/item/32755473754.html?_randl_shipto=RU&gatewayAdap...
Подключал к UNO и к MEGE2560
Проблема в том, что при установленной стекляшке на плате контроллера - не работает сериал порт.
попытка зашить скетч - заканчивается таймаутом.
если скетч уже залит - то нет от него ни чеко в мониторе порта.
Если дисплей снимать - все заливается норм, а при подключении стекляшка демонстрирует цветное демо.
Вопрос - как подружить SerialPort и этот LCD?
слот SD карты у вас в какую сторону направлен?
Вопрос - как подружить SerialPort и этот LCD?
Если установить стекляшку на мегу то слот карты между разъемом УСБ и разъемом питания меги
Вопрос - как подружить SerialPort и этот LCD?
прозвонка - не показала контакта с другими элементами (но и добраться смог не до всех)
выпаял пины D0 и D1 у стекляшки - ничего не изменилось. При подключенном модуле - загрузка не происходит.
нажатие кнопки резет в начале загрузки не пробовали?
нажатие кнопки резет в начале загрузки не пробовали?
удивительное дело - но помогло. Спасибо.
Ну тогда еще проверить пин Reset (и при необходимости выпаять).
Ну тогда еще проверить пин Reset (и при необходимости выпаять).
влияние оказывал пин AREF
но без него дисплей не запускается.
Добрый день.
Столкнулся с проблемой по подключению и инициализации LCD open-smart ILI9329. После подключения к arduino MEGA выдает белый экран, что бы не делал. Экраны заказывал с aliexpress в количестве 5шт. и у всех одна и та же проблема.
Может кто даст дельный совет как заставить его работать?
Может есть готовая библиотека (набор библиотек с уже рабочего макета)?
После подключения к arduino MEGA выдает белый экран, что бы не делал.
белый экран - это неверная инициализация. На али под обозначением ILI9329. могут продавться экраны с самыми разными контроллерами.
Какую библиотеку вы используете? Попробуйте пример тестирования дисплея из библиотеки MCU-friend. Кстати, ее автор доступен в сети, будут проблемы, можно будет у него напрямую спросить
Появление белого экрана это странный момент. дисплей может стабильно работать, а потом вдруг только бледнеть пару дней. Библиотеки при этом не меняю.
Хотя, стабильность тоже относительная... иногда после заливки скетча - меняет ориентацию и цветопередачу... желтый становится прикольно фиолетовым. лечится отключением питания. я думаю, дело тут в том, что перед заливкой, ардуина перезагружается, а контроллер дисплея подвисает на это время в растерянности.