ST7796S 4" к АРМ

Есть дисплей 4" st7796s .
никак не могу его подключить к арм…
Для ардуино DUE все библиотеки которые нахожу параллельный интерфейс , а у меня SPI c DC
может кто нибудь подключал уже…
ну или инициализацию ST7796S на HAl или SPL (stm32f4)
Cпасибо большое

Так инициация то от типа подключения не зависит, можете взять из тех библиотек, что нашли для параллельного интерфейса

Я и пытался так сделать… не вышло… я сравнил eSpi,utft, и еще пару сторонних что нашел по форумам… почему-то у все инит дисплея разный для данного чипа… отличаются значения корректировок гамма и значения поверконтрола.и тайминги … В даташите на чип я не нашел какие значения должны быть , я так понял они зависят от типа самого стекла. перепробовал все что нашел результат частичный … дисплей не очищается от старых изображений. (HW и SW ресет не помогают) ,цвета не совпадают. кординаты похоже тоже. тормоза конкретные… и ни в одном случае не смог прочитать ID .
хотел проверить сам дисплей на ардуине с рабочими библиотеками , но вот встрял с тем что они все работают по праллельному , и соответственно я свой SPI дисплей не могу проверить…Может там просто не тот контроллер который я пытаюсь инитнуть…

А Вы не задумывались, почему так?
Вот лично я на этот вопрос ответил бы так: никому в здравом уме не придет в голову подключать дисплей на 0.3 Мб к последовательному интерфейсу.

Да понятно ,что скорость на парраллельном быстрее понятноичто лучше вообще по fmc
Вопрос то не в этом. Вопервых данный дисплей в руках что его теперь выкидывать. Во вторых скорости спи на стм32 (а если еще и DMA использовать ) достаточно чтобы раз в 10 сек вывести 5-6 значений температуры время.и пару иекстовой инфо. Меньше размером можно поставить но вот глаза уже не те,а в очкахи все время пялится на экран прибора нехочется. Да вобщем-то даже не в этом дело , просто если не выходит что-то из за недостатка знаний , что теперь все бросать имхо всеже надо разобраться где я косячу т.к в другой раз будет тоже самое с чем нибуть другим…u

Это во много раз дешевле, чем создавать под него софт.
То есть, разумный алгоритм примерно такой:

  1. Выясняем, под какие модели есть софт.
  2. Выбираем из этих (только из этих!) ту, которая нам больше всего подходит.
  3. Покупаем.
  4. Если оказалось, что купили не то, что нужно (на Али такое бывает запросто), то дешевле купить еще раз - теперь уже конкретно то, что нужно.

И еще: вряд ли дисплей с 0.3 Мб видеопамяти нельзя переключить на параллельный интерфейс. Мне кажется, это наиболее разумный выход из ситуации.

Странный
Конечно подход… Если не получается то выкинь и купи то с чем все делают…А Вы не задумывались что может быть много причин когда нужно попытаться решить вопрос … Ну хотябы у меня есть датчик, который считает давление газа в микробарах тоже кстати спи… Так его вообще в нете никто не подключает т.к он в промышлености используется. И что теперь если мне нужно его использовать , то мне нужно от этого отказаться потому как до меня никто не пользовался ? А если нет аналогов а нужно ?..
Или например у меня в приборе 3 дисплея , один по 16 по fms один 16 просто и 3 уже некуда по сути подключать… Ну да можно конечно взять более мощный контроллер можно вообще на плис перейти а еще проще сразу заказать на заводе сделать проект конкретно под 3 дисплея… Нахрена тогда вообще изучать мк? Чтобы штамповать типичные проекты помигай
Светиком выведи на дисплей квадратики и успокойся…? Я понимаю если речь идет о прототипе для использовании потом широком спектре, тогда да нужно выбирать именно то что дешево стоит широко используется и расписанно на каждом углу…
Но я вроде такую задачу неиставил. Мне для производства неинужно просто один проектив одном экземпляре для себя .собствено даже это неважно . вопрос был простой поключал ли ктонить и ли есть какие нить бибблиотеки с st7796s по спи для ардуино и какие все, больше ничего я не спрашивал если учесть что 3.95 spi часто берут решил что ктонить чтонить на чемнибудь делал…

Да и кстати насчет переключить в парралель… Переключить не проблема проблема подключить ибо разводкой не предусмотренно , а вот разводить этот еще тот гемор

И эту пробовал?

пробовал .не работает … инициализация взята с TFT-eSPI . некоторых команд в 7796 нету ( по крайне мере они в даташите не указаны ) и коррекции совсем другие даже с тойже TFT_eSPI
спасибо

tft_eSPi вроде работает с таким дисплеем на одном форуме видел ,но у человека есп было , пробовал на дуе не пашет
может конечно сам дисплей либо я где-то тормоз, есп нету у меня проверить :slightly_smiling_face:

Чудеса.

Тогда остаётся только одно - бери даташит и пиши свою, под конкретный свой экземпляр.

Да я так собственно и сделал … я же писал на стм …(я так понял там использование библиотек как в ардуино не поощрается ) да заработало , но … тормозит, инверсия и координаты хз какие… либо я что-то в с спи напутал либо в ините …а может и сам котроллер другой . хотя последовательность инита брал как раз с TFT_eSPI есп , решив как здесь верно подметили что способ подключения и тип мк для посылки последовательности инита пофиг…
собственно поэтому ихотел попробовать на ардуине на том на чем у когото работало уже чтобы убедиться что не дисплей и не контроллер …
Да и еще … чип один а вот последовательности у разных библиотек почемуто отличаются … вот это и напрягает… хотя я ради интереса все 4 попробовал ( ну 4 разновидности нашел)
чисто по даташиту сложнее , гамма коррекции тайминги и напяжения я так понял зависят от подключенного стекла и в даташите на чип их нет соответственно проверить какие правильные не могу

Видны изменения на экране (типа мерцания)?

нет мерцаний нет , но закраска прямоугольника 400на 300 идет секунд 5 … да и сам инит секуд 10 идет до дисп-он… и если с инверсbей еще как то решить можно, то почему не стирает предыдущие изо и координаты не те … пока гадаю…(даже после SW HW reset)
кстати может и не инверсия а искажение цветов … указал зеленый нарисолвал малиновый указал черный нарисовал белый , красный вообще не нарисовал
(фонты круги линии и попиксельно пока функции не делал )

Решить вопрос, как правило, можно более чем одним способом.
И тогда возникает вопрос, который из способов самый оптимальный.
А иногда и не возникает. Например, в DIY, где, зачастую важен не столько результат, сколько сам процесс.

Согласитесь, что на этот вопрос и на вопрос “А если есть аналоги” ответы могут быть совершенно различными.
Мы выше обсуждали именно второй вопрос.

Это почти наверняка говорит об ошибке стадии проектирования.

Но правильнее перепроектировать устройство, чтобы ему не нужно было 3 дисплея.

Здесь немного другие критерии.
Например из двух вариантов:

  1. Устройство собирается из стандартных компонентов общей стоимостью $100. Цена прошивки, сделанной из стандартных блоков, составляет $300.
  2. Устройство собирается из оптимизированных под конкретный прибор нестандартных блоков общей стоимостью $90. Написание прошивки под эти нестандартные блоки оценивается в $3000.

Так вот, для единичного экземпляра целесообразнее первый вариант. Цена = $100 + $300 = $400.
А при партии в 1000 штук оптимальнее второй: цена единицы устройства составит $90 + ($3000/1000) = $90 + $3 = $93 против $100.3 в ином случае.

Ну так в большинстве случаев нужно в некоторый набор регистров загрузить соответствующий набор значений. А это во многих случаях без разницы в какой последовательности.

Отчего же?
Прошивать поочередно разные значения и смотреть на экран.

40 мкс на пиксель - это очень много.
Осциллограф/логический анализатор что показывают?

Это в чистом виде инверсия.
Обычно можно переключить, записав в нужный регистр нужное значение (если знать - куда и какое - обычно в дэйташите это есть).
А можно по простому - переопределить константы цветов.

не соглашусь. я хочу смотреть 2 графика в одном масштабе и в одной форме , 4 граф. представления процесса в другой форме и некоторые данные
некоторых датчиков в реальном времени ,причем желательно не под микроскопом ,не в очках (потому как это жутко не удобно и сильно бесит) желательно не накладывая это друг на друга и желательно не перепрыгивая по кнопке из одного изображения в другое , т.к этого делать я как раз таки не хочу - сильно сбивает… а так как в данном случае я разработчик , заказчик и потребитель в одном лице , то могу себе позволить использовать для этого 3 разных экрана 2 больших боле менее быстрых типа 7 и один помедленне типа 4 … для обеспечения себе комфорта … конечно можно и один экран например 17 или 19 можно и что-то типа малинки чтобы это все пахало ,но … мне это все не нужно
Да и вобщем-то мои хотелки выходят за рамки данного обсуждения…
я в отличии не ищу легких путей и если ставлю себе задачу то пытаюсь ее либо решить либо , понять , что она не достижима … для меня . А купить более простое если не выходит со сложным это не мой путь…

Ну так в большинстве случаев нужно в некоторый набор регистров загрузить соответствующий набор значений. А это во многих случаях без разницы в какой последовательности.

Вы не поняли… не последовательность загрузки разнаяя , а сами данные в этих командах для самого контролера дисплея для инита , неважно на чем она …
ну грбо говоря например чтобы инитнуть дисплей надо в контроллер послать
набор данных в формате
команда.размер .набор данных
0xE4, 1, 0x31,
** 0xE8, 8, 0x40, 0x8A, 0x00, 0x00, 0x29, 0x19, 0xA5, 0x33,**
** 0xC2, 1, 0xA7,**
** 0xE0, 14, 0xF0, 0x09, 0x13, 0x12, 0x12, 0x2B, 0x3C, 0x44, 0x4B, 0x1B, 0x18, 0x17, 0x1D, 0x21,**
** 0xE1, 14, 0xF0, 0x09, 0x13, 0x0C, 0x0D, 0x27, 0x3B, 0x44, 0x4D, 0x0B, 0x17 ,0x17, 0x1D, 0x21, **
** 0x36, 1, 0x48,**
так вот для одного и того-же дисплея они должны быть одинаковы и не важно с какого контроллера и каким способом посылаются
… А они в разных библиотеках именно для этого чипа разные.Например команда PGC (0xe0) имеет разный набор значений
( ну почти одинаковые - для спи и параллельного могут чуть отличаться там где косаются самого подключения) - но вот гамма коррекции питания и тайминги меняться не должны - а они меняются от библиотеки к библиотеке)

//ST7796s Gamma Sequence
writecommand(0xE0); //Gamma"+"                                             
	writedata(0xF0);
	writedata(0x09); 
	writedata(0x0b);
	writedata(0x06); 
	writedata(0x04);
	writedata(0x15); 
	writedata(0x2F);
	writedata(0x54); 
	writedata(0x42);
	writedata(0x3C); 
	writedata(0x17);
	writedata(0x14);
	writedata(0x18); 
	writedata(0x1B); 

это eSPI

#define ST7796S_GMCTRP1        0xE0

...

 LCD_IO_WriteCmd8MultipleData8(ST7796S_GMCTRP1,
		  (uint8_t *)"\xF0\x09\x13\x12\x12\x2B\x3C\x44\x4B\x1B\x18\x17\x1D\x21", 14);

Это адафрут

я так и решил сперва , вот только красный не вписался сюда, он вообще ничего не нарисовал , а должен был CYAN закрасить…экран остался белым ( инверсия выключена судя по даташиту)

Ну так выясните, какие биты, записываемые в видеопамять, за что отвечают.
Тут, кстати, еще один момент: на практике чаще всего используют 16-разрядное представление цвета (5:6:5), а большинство дисплеев поддерживают 18-разрядное (6:6:6). Вполне возможно, именно в этом режиме Вы и сконфигурировали дисплей.

если бы проблема была только в цвете… но это только вершина айсберга … отсуствует стирание неправильные координаты и тормоза вот главное