Отличие только в другом индикаторе - 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, но разницы в командах абсолютно никакой нет.
Сейчас этот форум просматривают: korob и гости: 54
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения