Zuse 0 2 февраля, 2022 Опубликовано 2 февраля, 2022 · Жалоба 1 hour ago, aaarrr said: Похоже, отваливается после первой строки. То есть в таймингах экрану все же что-то не нравится. Если отваливается на какой-то строке, то данные после этой строки не должны влиять на изображение. Верно? Тогда мы можем заполнить последние 100, 200, 300 итд строк например белым и картинка не должна измениться. Я пробовал так делать и чем больше строк белого добавляешь в конец буфера, тем сильнее изменяется картина при динамической смене чередования полос. Т.е. имхо это не бьется с версией о том, что передача отваливается на какой-то строке. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 2 февраля, 2022 Опубликовано 2 февраля, 2022 · Жалоба 18 minutes ago, Zuse said: имхо это не бьется с версией о том, что передача отваливается на какой-то строке Ну, успешно-то она явно не проходит. А что за экран? Производитель не дает процедуры инициализации? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 48 3 февраля, 2022 Опубликовано 3 февраля, 2022 · Жалоба 16 часов назад, Zuse сказал: Тогда мы можем заполнить последние 100, 200, 300 итд строк например белым и картинка не должна измениться. Ну а рандомными точками пробовали заполнять? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Zuse 0 3 февраля, 2022 Опубликовано 3 февраля, 2022 · Жалоба 16 hours ago, aaarrr said: Ну, успешно-то она явно не проходит. А что за экран? Производитель не дает процедуры инициализации? 31 minutes ago, mantech said: Ну а рандомными точками пробовали заполнять? Дисплей вот такой https://www.digikey.com/en/products/detail/az-displays/ATM0400D1K/12168272 Процедура инициализации в документации не приведена. Указан тип контроллера. По итогу экспериментов у меня сложилось впечатление, что по вертикали происходит "усреднение" пикселей Заливать рандомными точками не пробовал Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 48 3 февраля, 2022 Опубликовано 3 февраля, 2022 (изменено) · Жалоба 53 минуты назад, Zuse сказал: Дисплей вот такой Странный какой-то контроллер у этого дисплея, не видал еще "тупых" контроллеров, т.е. у которых нет встроенной памяти, но требующих какой-то инициализации по spi или i2c. Всегда достаточно подключить линии данных, clk, vs, hs, настроить клок и в путь... Конфиг (IM0-3) правильно выставлен? 53 минуты назад, Zuse сказал: Заливать рандомными точками не пробовал А попробуйте. Всегда с подобного начинал проверку... Изменено 3 февраля, 2022 пользователем mantech Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 3 февраля, 2022 Опубликовано 3 февраля, 2022 · Жалоба 59 minutes ago, mantech said: Странный какой-то контроллер у этого дисплея, не видал еще "тупых" контроллеров, т.е. у которых нет встроенной памяти, но требующих какой-то инициализации по spi или i2c. Всегда достаточно подключить линии данных, clk, vs, hs, настроить клок и в путь... Практически все LCD с интерфейсом MIPI содержат такого рода контроллеры - без памяти, но требующие инициализации. 1 hour ago, Zuse said: Процедура инициализации в документации не приведена. Надо запрашивать у производителя. Должна быть портянка типа такой (найдена в интернетах для аналогичного экрана на ST7701S): HW_Reset(); //VBP>=11, VFP>=7 Delay(120); SPI_WriteComm(0xFF); SPI_WriteData(0x77); SPI_WriteData(0x01); SPI_WriteData(0x00); SPI_WriteData(0x00); SPI_WriteData(0x10); SPI_WriteComm(0xC0); SPI_WriteData(0x3B);//Scan line SPI_WriteData(0x00); SPI_WriteComm(0xC1); SPI_WriteData(0x0B); //VBP SPI_WriteData(0x02); SPI_WriteComm(0xC2); SPI_WriteData(0x07); SPI_WriteData(0x02); SPI_WriteComm(0xCC); SPI_WriteData(0x10); //SPI_WriteComm(0xCD);//RGB format //SPI_WriteData(0x08); SPI_WriteComm(0xB0); // IPS SPI_WriteData(0x00); // 255 SPI_WriteData(0x11); // 251 SPI_WriteData(0x16); // 247 down SPI_WriteData(0x0e); // 239 SPI_WriteData(0x11); // 231 SPI_WriteData(0x06); // 203 SPI_WriteData(0x05); // 175 SPI_WriteData(0x09); // 147 SPI_WriteData(0x08); // 108 SPI_WriteData(0x21); // 80 SPI_WriteData(0x06); // 52 SPI_WriteData(0x13); // 24 SPI_WriteData(0x10); // 16 SPI_WriteData(0x29); // 8 down SPI_WriteData(0x31); // 4 SPI_WriteData(0x18); // 0 SPI_WriteComm(0xB1);// IPS SPI_WriteData(0x00);// 255 SPI_WriteData(0x11);// 251 SPI_WriteData(0x16);// 247 down SPI_WriteData(0x0e);// 239 SPI_WriteData(0x11);// 231 SPI_WriteData(0x07);// 203 SPI_WriteData(0x05);// 175 SPI_WriteData(0x09);// 147 SPI_WriteData(0x09);// 108 SPI_WriteData(0x21);// 80 SPI_WriteData(0x05);// 52 SPI_WriteData(0x13);// 24 SPI_WriteData(0x11);// 16 SPI_WriteData(0x2a);// 8 down SPI_WriteData(0x31);// 4 SPI_WriteData(0x18);// 0 SPI_WriteComm(0xFF); SPI_WriteData(0x77); SPI_WriteData(0x01); SPI_WriteData(0x00); SPI_WriteData(0x00); SPI_WriteData(0x11); SPI_WriteComm(0xB0); //VOP 3.5375+ *x 0.0125 SPI_WriteData(0x6d); //5D SPI_WriteComm(0xB1); //VCOM amplitude setting SPI_WriteData(0x37); // SPI_WriteComm(0xB2); //VGH Voltage setting SPI_WriteData(0x81); //12V SPI_WriteComm(0xB3); SPI_WriteData(0x80); SPI_WriteComm(0xB5); //VGL Voltage setting SPI_WriteData(0x43); //-8.3V SPI_WriteComm(0xB7); SPI_WriteData(0x85); SPI_WriteComm(0xB8); SPI_WriteData(0x20); SPI_WriteComm(0xC1); SPI_WriteData(0x78); SPI_WriteComm(0xC2); SPI_WriteData(0x78); SPI_WriteComm(0xD0); SPI_WriteData(0x88); SPI_WriteComm(0xE0); SPI_WriteData(0x00); SPI_WriteData(0x00); SPI_WriteData(0x02); SPI_WriteComm(0xE1); SPI_WriteData(0x03); SPI_WriteData(0xA0); SPI_WriteData(0x00); SPI_WriteData(0x00); SPI_WriteData(0x04); SPI_WriteData(0xA0); SPI_WriteData(0x00); SPI_WriteData(0x00); SPI_WriteData(0x00); SPI_WriteData(0x20); SPI_WriteData(0x20); SPI_WriteComm(0xE2); SPI_WriteData(0x00); SPI_WriteData(0x00); SPI_WriteData(0x00); SPI_WriteData(0x00); SPI_WriteData(0x00); SPI_WriteData(0x00); SPI_WriteData(0x00); SPI_WriteData(0x00); SPI_WriteData(0x00); SPI_WriteData(0x00); SPI_WriteData(0x00); SPI_WriteData(0x00); SPI_WriteData(0x00); SPI_WriteComm(0xE3); SPI_WriteData(0x00); SPI_WriteData(0x00); SPI_WriteData(0x11); SPI_WriteData(0x00); SPI_WriteComm(0xE4); SPI_WriteData(0x22); SPI_WriteData(0x00); SPI_WriteComm(0xE5); SPI_WriteData(0x05); SPI_WriteData(0xEC); SPI_WriteData(0xA0); SPI_WriteData(0xA0); SPI_WriteData(0x07); SPI_WriteData(0xEE); SPI_WriteData(0xA0); SPI_WriteData(0xA0); SPI_WriteData(0x00); SPI_WriteData(0x00); SPI_WriteData(0x00); SPI_WriteData(0x00); SPI_WriteData(0x00); SPI_WriteData(0x00); SPI_WriteData(0x00); SPI_WriteData(0x00); SPI_WriteComm(0xE6); SPI_WriteData(0x00); SPI_WriteData(0x00); SPI_WriteData(0x11); SPI_WriteData(0x00); SPI_WriteComm(0xE7); SPI_WriteData(0x22); SPI_WriteData(0x00); SPI_WriteComm(0xE8); SPI_WriteData(0x06); SPI_WriteData(0xED); SPI_WriteData(0xA0); SPI_WriteData(0xA0); SPI_WriteData(0x08); SPI_WriteData(0xEF); SPI_WriteData(0xA0); SPI_WriteData(0xA0); SPI_WriteData(0x00); SPI_WriteData(0x00); SPI_WriteData(0x00); SPI_WriteData(0x00); SPI_WriteData(0x00); SPI_WriteData(0x00); SPI_WriteData(0x00); SPI_WriteData(0x00); SPI_WriteComm(0xEB); SPI_WriteData(0x00); SPI_WriteData(0x00); SPI_WriteData(0x40); SPI_WriteData(0x40); SPI_WriteData(0x00); SPI_WriteData(0x00); SPI_WriteData(0x00); SPI_WriteComm(0xED); SPI_WriteData(0xFF); SPI_WriteData(0xFF); SPI_WriteData(0xFF); SPI_WriteData(0xBA); SPI_WriteData(0x0A); SPI_WriteData(0xBF); SPI_WriteData(0x45); SPI_WriteData(0xFF); SPI_WriteData(0xFF); SPI_WriteData(0x54); SPI_WriteData(0xFB); SPI_WriteData(0xA0); SPI_WriteData(0xAB); SPI_WriteData(0xFF); SPI_WriteData(0xFF); SPI_WriteData(0xFF); SPI_WriteComm(0xEF); SPI_WriteData(0x10); SPI_WriteData(0x0D); SPI_WriteData(0x04); SPI_WriteData(0x08); SPI_WriteData(0x3F); SPI_WriteData(0x1F); SPI_WriteComm(0xFF); SPI_WriteData(0x77); SPI_WriteData(0x01); SPI_WriteData(0x00); SPI_WriteData(0x00); SPI_WriteData(0x13); SPI_WriteComm(0xEF); SPI_WriteData(0x08); SPI_WriteComm(0xFF); SPI_WriteData(0x77); SPI_WriteData(0x01); SPI_WriteData(0x00); SPI_WriteData(0x00); SPI_WriteData(0x00); SPI_WriteComm(0x11); Delay(120); SPI_WriteComm(0x29); SPI_WriteComm(0x36); SPI_WriteData(0x08); SPI_WriteComm(0x3A); SPI_WriteData(0x70); Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 48 3 февраля, 2022 Опубликовано 3 февраля, 2022 · Жалоба 2 часа назад, aaarrr сказал: Должна быть портянка типа такой УжОс какой!! 2 часа назад, aaarrr сказал: Практически все LCD с интерфейсом MIPI содержат такого рода контроллеры Ну вот я недавно приводил пример, про дисплеи, что мне в нагрузку отдали, там правда, есть память, но подобного инита нет... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Zuse 0 3 февраля, 2022 Опубликовано 3 февраля, 2022 (изменено) · Жалоба 5 hours ago, aaarrr said: Надо запрашивать у производителя. Должна быть портянка типа такой (найдена в интернетах для аналогичного экрана на ST7701S) С производителем я пробовал связаться, но пока он молчит, что в общем понятно - дисплей он продал, остальное не его проблемы А за наводку большое спасибо. Погуглив я нашел портянку от дисплея, очень похожего на мой. Самое забавное, что половины команд из этой простыни нет в даташите. Короче, заправил я эту портянку в свою программу и... Почти помогло) Строки с разным содержимым стали выводиться. Шахматная клетка выводится. Никакого виньетирования и прочих подобных багов. Но осталось одно "но" - часть цветов отображается неверно. Если поставить все линии RGB в 1, то экран светится сине-зеленым, а если подать SPI-команду на засвет всех пикселей, то тут все ок, экран белый. Насколько я понял, интерфейс почему-то не видит сигналы красной составляющей. Изменено 3 февраля, 2022 пользователем Zuse Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 3 февраля, 2022 Опубликовано 3 февраля, 2022 · Жалоба 8 minutes ago, Zuse said: Насколько я понял, интерфейс почему-то не видит сигналы красной составляющей. Возможно, банальное отсутствие контакта. У контроллера вроде как есть возможность считать значение первого пиксела через SPI, можно попробовать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Zuse 0 3 февраля, 2022 Опубликовано 3 февраля, 2022 · Жалоба 5 minutes ago, aaarrr said: Возможно, банальное отсутствие контакта. У контроллера вроде как есть возможность считать значение первого пиксела через SPI, можно попробовать. Я смотрел под лупой - красный вообще никак не светится. Т.е. должен быть отказ сразу в нескольких линиях. Маловероятно, по-моему. Я не прав? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 3 февраля, 2022 Опубликовано 3 февраля, 2022 · Жалоба 11 minutes ago, Zuse said: Маловероятно, по-моему. Маловероятно. Попробуйте RDRED. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Zuse 0 4 февраля, 2022 Опубликовано 4 февраля, 2022 · Жалоба 21 hours ago, aaarrr said: Попробуйте RDRED. aaarrr, большое спасибо за вторую ценную наводку! Честно говоря, сначала поленился посмотреть, что покажет RDRED. Подумал, наверняка покажет 0, и ничего мне это не даст. Но потом вспомнил про совет и раз уж других идей не осталось, решил глянуть. Синий и зеленый ожидаемо оказались равны 255. А вот красный оказался неожиданно равен 3... Сначала я не понял, откуда взялась эта тройка и стал нащупывать две линии, которые ее дают. Короче, через некоторое время я понял, что контроллер считает шину 24-битной, а поскольку линий по факту 18, красному остается всего два бита. Оказалось, что помимо формата пикселя (18 бит) нужно было установить c помощью команды COLCTRL флаг MDT, отвечающий за формат шины. Такие дела. Теперь можно с хорошим настроением проводить выходные Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 4 февраля, 2022 Опубликовано 4 февраля, 2022 · Жалоба 4 minutes ago, Zuse said: Теперь можно с хорошим настроением проводить выходные Эт правильно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться