Отличие только в другом индикаторе - 1,8" TFT 128х160, и контроллер у меня чуть отличается - пришлось оставить в команде MADCTL (0x36) цветовую палитру GBR, поскольку был неправильный вывод цветов. Также растянул вывод цветов и кекстовой надписи на весь дисплей - поменял в команде задания координат вывода с 128 на 160.
Картинку кота (126х126) не менял, поскольку прошивка и так почти 32 КБайта.
Потом слегка усовершенствовал программу - перешёл с программного SPI (хотя в некоторых случаях это удобно - можно брать любых 3 пина) на аппаратный SPI (дисплей я включил через резисторные делители - 1КОм от портов и 2,2КОм на землю), дисплей тоже запитан от 5В, поскольку на платке распаян стабилизатор 5В/3,3В, подсветка дисплея через резистор 510 Ом запитана от 5В.
При переходе от soft SPI к hard SPI зрительно скорость прорисовки выросла раз в 5-10 (точно не измерял), также запустил Таймер 0 для отладки - помигать светодиодом, подёргать WatchDog, потому что иногда дисплей после прошивки не запускался - пришлось передёргивать программатор.
Потом задеqствовал Chip Select на PB4 - вообще пропали зависания, скорее всего при прошивке дисплей входил в ступор от команд прошивки, поскольку задействованы одни и те же пины.
Если кому-то интересно, выложу исправленный проект под GCC и скриншоты.
Добавлено after 8 hours 15 minutes 14 seconds: Хоть никто и не просил, выкладываю свой вариант проекта ATmega32 + TFT 1,8" 160x128 на ST7735.
Фотку я оставил, только сделал фон индикатора чёрным, а дальше в цикле вывод текста - 8 строк каждая разным цветом и переключение цвета фона тоже 8 разных цветов (1 строка из 8 будет не видна - совпадает цвет текста и цвет фона).
Заголовок сообщения: Re: Вывод данных на цветной дисплей 128*128 на базе ST7735
Добавлено: Пт апр 27, 2018 17:39:42
Мучитель микросхем
Карма: 2
Рейтинг сообщений: 10
Зарегистрирован: Ср окт 19, 2011 08:48:27 Сообщений: 443 Откуда: Мать городов русских
Рейтинг сообщения:0
Перевёл проект для TFT 1,8" 160x128 на ST7735 с ATmega32 на STM32F051R8 с платы DISCOVERY F0. STM32F051 пошустрее - 48 МГц, флеша 64 кБ и оперативы 8 кБ, периферии в 2 раза больше + DMA. Аппаратный SPI запустил, вроде передаёт данные - во всяком случае данные с MOSI заводил на MISO - совпадают, но с ним пока дисплей чего-то не работает, и пока не разобрался, как аппаратно управлять сигналом SC. Пока для отладки сделал SOFT SPI, запустил через него 8-разрядный 7-сегментник на MAX7219 и вот сейчас TFT-шку 1,8". TFT c STM32F051 с SOFT SPI визуально работает пошустрее чем на ATmega32 на 8 МГц c HARD SPI, всё-таки 48 МГц, и прошивка для Меги была впритык, на STM32F051 занимает чуть больше 36 кБ из 64-х (у меня там много лишнего - всякая периферия - таймеры, USARTы и другое).
Если кому надо - выложу проект с SOFT SPI, пока буду разбираться с Hardовым SPI.
_________________ Хорошему коту и в декабре - март
Заголовок сообщения: Re: Вывод данных на цветной дисплей 128*128 на базе ST7735
Добавлено: Вс мар 03, 2019 20:03:21
Родился
Зарегистрирован: Вс мар 03, 2019 19:35:35 Сообщений: 1
Рейтинг сообщения:0
Добрый день!
Нужно было разобраться с SPI на STM32, а тут кот... Короче спасибо за кота, удалось за 10 мин сделать из него STM32 кота, чему несказанно рад и делюсь результатом. Собственно вот он какой на "голубой таблетке": Есть какой то мусор на бордюре справа, может потом посмотрю, не суть, главное что работает. А так после AVR впечатление что все просто летает, на 36MHz аппаратном SPI отрисовывается практически мгновенно.
А вот кто нить может разжевать как технически воспроизвести сиё действо:
Цитата:
В отличие от вывода полноцветного изображения, кодировка которого требует уйму места в памяти, для вывода одноцветных изображений любого цвета объём кода не намного превысит требующегося для работы с монохромным дисплеем, т.к. в этом случае есть возможность управлять каждым пикселем побитно, т.е. одним байтом сразу 8-ю точками экрана.
Для реализации такого незадокументированного способа мы воспользуемся редактором, который позволяет кодировать байт информации не сверху вниз, а горизонтально. Отличный вариант такого редактора – TheDotFactory (можно скачать в приложении). После поместим полученный код в память, а при выводе информации на экран будем применять следующую уловку: закрашивать пиксель, который должен быть видимым (бит=1), цветом, отличным от цвета фона, а пиксель, который видимым быть не должен (бит=0), цветом, совпадающим с цветом фона.
Смотрел код, ну чёт всё равно не въехал - мне бы шаг за шагом этот незадокументированный способ. Ну по стандарту понятно: CMD 0x2A, DATA 4байта CMD 0x2B, DATA 4байта CMD 0x2C, DATA -2ух байтовыми цветными точками заполняем выделенную область - тут всё понятно. Ну а как например за байт 8 точек сразу зарисовать, всё вьехать не могу. Ну получил из проги к примеру цифорку 5:
и какими и в какой последовательности CMD, DATA закидывать эти байты в ST 7735.
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Только прога для фонта 5х7, для фонта 7х5 надо поменять счётчики i и j.
Спасибо, да я уже разобрался... Просто думал, что действительно есть какая то "не задокументированная" лазейка, а на деле, просто программная реализация выдачи стандартных для данного дисплея команд - за счёт этого и получается как бы один байт - восемь точек.
Здравствуйте!Люди добрые,растолкуйте,как правильно подготовить изображение? Из картинок к программе ConvertBMP ,нормально выводится только одна из двух 128х160. Вторая какими то полосами.Дисплей st7735 128x160
Добавлено after 4 hours 51 minute 29 seconds: Разобрался.Все картинки в программе,кроме одной, с глубиной 24 бита, а та что выводится нормально-16 бит. Возникает следующий вопрос: каким конвертером понизить глубину до 16 бит(5-6-5)?
Заголовок сообщения: Re: Вывод данных на цветной дисплей 128*128 на базе ST7735
Добавлено: Вт янв 09, 2024 23:40:54
Открыл глаза
Зарегистрирован: Пн май 04, 2015 12:30:18 Сообщений: 50
Рейтинг сообщения:0
Доброго времени суток. Кто ни будь разбирался со всеми командами? До конца не понятна разница между командами: 0x12 - выбор рабочей области дисплея включен (Partial mode on) 0x2A - установка начального (параметр XS) и конечного (параметр XE) адресов столбцов в ОЗУ контроллера. (Column address set) 0x2B - установка начального (параметр YS) и конечного (параметр YE) адресов строк. (Row address set) 0x30 - Частичный набор адресов начала/конца (Partial start/end address set)
С 0x2A и 0x2B - все понятно. На просторах интернета все очень хорошо разжевано. А вот про другие (на мой взгляд очень похожие команды) - ни слова. Даташит - курил. Но по англицки плохо понимаю. Хотелось бы на пальцах.
Полгода назад разбирался с Partial mode и скроллингом на дисплее ILI9341, в принципе тоже самое, что и ST7735. В режиме Partial mode просто на часть экрана не выводится изображение. Зачем это нужно я так и не понял.. Скроллинг меня также не удовлетворил.. (но в ST7735 вроде нет скроллинга)
Просто делал обновляемый график, вот и решил посмотреть, чем полезным можно воспользоваться. Вобщем оставил эту затею.. Для меня бесполезные опции.
Наибольший интерес представляет регистр MADCTL, иной раз настройки полностью не совпадают с даташитом. Но это от дисплея зависит. Так же на некоторых ST7735 наблюдается смещение изображения. Сейчас как раз работаю с ST7735 1,8" 128x160 MSP1803, у него смещение 1px по вертикали и 2px по горизонтали. Приходится корректировать програмно.
BDDW писал(а):
Даташит - курил. Но по англицки плохо понимаю. Хотелось бы на пальцах.
По этому поводу я придерживаюсь мнения, что даташиты пишут люди, которые так же не совсем в совершенстве владеют английским. Где нибудь в Тайване.
Полгода назад разбирался с Partial mode и скроллингом на дисплее ILI9341, в принципе тоже самое, что и ST7735.
Я то же сейчас разбираюсь с ними. Программа инициализации для ST7735 подошла к ILI9341. Сейчас заказал еще ST7789. Для начала взял список команд из даташита и свел в единую таблицу (если кому надо (поможет) - прилагаю).
Просто делал обновляемый график, вот и решил посмотреть, чем полезным можно воспользоваться. Вобщем оставил эту затею.. Для меня бесполезные опции.
Я занимаюсь сейчас ровно тем же. Столкнулся с тем, что получаю координаты точки. Xочу вывести ее на экран. Логично было бы дать одну команду - какую ни будь "SET Y" и далее строка Y и цвет точки (X автоматически должен увеличиться на 1) - 5 байт. А фактически получается: 0x2A + 4 байта, 0x2B + 4 байта, 0x2C + 2 байта. И того 13 байт.
По Partial mode я толком так и не понял саму суть этой опции. Ведь можно просто задать на дисплее любую произвольную область и заливать её пикселями.
BDDW писал(а):
Я занимаюсь сейчас ровно тем же. Столкнулся с тем, что получаю координаты точки. Xочу вывести ее на экран. Логично было бы дать одну команду - какую ни будь "SET Y" и далее строка Y и цвет точки (X автоматически должен увеличиться на 1) - 5 байт. А фактически получается: 0x2A + 4 байта, 0x2B + 4 байта, 0x2C + 2 байта. И того 13 байт.
У меня вывод графика организован так: - Массив хранится в eeprom - "Флаг индекса", определяет в какую ячейку eeprom записывать данные и с какой ячейки выводить первый бар Собственно сам вывод графика: - задаётся поле вывода 160х320, точнее 320 горизонталь и 160+(толщина линии графика) вертикаль. - из массива берётся значение согласно индексу (преобразовывается в координату, сравнивается с пределами...). - выводится бар: цвет фона + точка (3px) графика соответствующим цветом + цвет фона до конца высоты бара. - увеличиваем адрес eeprom, берём следующее значение. - новый бар заливается уже рядом с предыдущим.
Не знаю на сколько понятно смог объяснить.. Но поле задаётся только один раз. График заливается в дисплей побарно, одновременно закрашивая бары предыдущего графика. Визуально почти не заметно..
digitalWrite(SPI1_NSS_PIN, LOW); // manually take CSN low for SPI_1 transmission data = SPI.transfer(DATA); //Send the HEX data 0x55 over SPI-1 port and store the received byte to the <data> variable. digitalWrite(SPI1_NSS_PIN, HIGH); // manually take CSN high between spi transmissions }
Программа инициализации для ST7735 подошла к ILI9341. Сейчас заказал еще ST7789.
В качестве дополнительных источников информации можно посмотреть даташиты на HX8353 HX8357 GC9A01 S6D02A1 .... и подобные... Но по Partial Mode как то скупо везде написано, даже в даташитах 2019 года. Нумерация глав разная, а основная инфа везде как под копирку.
Кстати, дисплей 1.8 Inch 160x128 на синей подложке, под который я писал как под ST7735, у буржуев позиционируется как S6D02A1, но разницы в командах абсолютно никакой нет.
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения