Перейти к содержанию
    

1 hour ago, aaarrr said:

Похоже, отваливается после первой строки. То есть в таймингах экрану все же что-то не нравится.

Если отваливается на какой-то строке, то данные после этой строки не должны влиять на изображение. Верно?

Тогда мы можем заполнить последние 100, 200, 300 итд строк например белым и картинка не должна измениться.

Я пробовал так делать и чем больше строк белого добавляешь в конец буфера, тем сильнее изменяется картина при динамической смене чередования полос. Т.е. имхо это не бьется с версией о том, что передача отваливается на какой-то строке.    

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

18 minutes ago, Zuse said:

имхо это не бьется с версией о том, что передача отваливается на какой-то строке

Ну, успешно-то она явно не проходит.

 

А что за экран? Производитель не дает процедуры инициализации?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

16 часов назад, Zuse сказал:

Тогда мы можем заполнить последние 100, 200, 300 итд строк например белым и картинка не должна измениться.

Ну а рандомными точками пробовали заполнять?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

16 hours ago, aaarrr said:

Ну, успешно-то она явно не проходит.

 

А что за экран? Производитель не дает процедуры инициализации?

 

31 minutes ago, mantech said:

Ну а рандомными точками пробовали заполнять?

Дисплей вот такой

https://www.digikey.com/en/products/detail/az-displays/ATM0400D1K/12168272

Процедура инициализации в документации не приведена. Указан тип контроллера. 

По итогу экспериментов у меня сложилось впечатление, что по вертикали происходит "усреднение" пикселей

Заливать рандомными точками не пробовал 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

53 минуты назад, Zuse сказал:

Дисплей вот такой

Странный какой-то контроллер у этого дисплея, не видал еще "тупых" контроллеров, т.е. у которых нет встроенной памяти, но требующих какой-то инициализации по spi или i2c. Всегда достаточно подключить линии данных, clk, vs, hs, настроить клок и в путь...

Конфиг (IM0-3) правильно выставлен?

53 минуты назад, Zuse сказал:

Заливать рандомными точками не пробовал 

А попробуйте. Всегда с подобного начинал проверку...

Изменено пользователем mantech

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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);

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 часа назад, aaarrr сказал:

Должна быть портянка типа такой

УжОс какой!!

2 часа назад, aaarrr сказал:

Практически все LCD с интерфейсом MIPI содержат такого рода контроллеры

Ну вот я недавно приводил пример, про дисплеи, что мне в нагрузку отдали, там правда, есть память, но подобного инита нет...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 hours ago, aaarrr said:

Надо запрашивать у производителя. Должна быть портянка типа такой (найдена в интернетах для аналогичного экрана на ST7701S)

С производителем я пробовал связаться, но пока он молчит, что в общем понятно - дисплей он продал, остальное не его проблемы

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

Короче, заправил я эту портянку в свою программу и... Почти помогло)

Строки с разным содержимым стали выводиться. Шахматная клетка выводится. Никакого виньетирования и прочих подобных багов. Но осталось одно "но" - часть цветов отображается неверно.

Если поставить все линии RGB в 1, то  экран светится сине-зеленым, а если подать SPI-команду на засвет всех пикселей, то тут все ок, экран белый. Насколько я понял, интерфейс почему-то не видит сигналы красной составляющей. 

 

Изменено пользователем Zuse

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

8 minutes ago, Zuse said:

Насколько я понял, интерфейс почему-то не видит сигналы красной составляющей.

Возможно, банальное отсутствие контакта. У контроллера вроде как есть возможность считать значение первого пиксела через SPI, можно попробовать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 minutes ago, aaarrr said:

Возможно, банальное отсутствие контакта. У контроллера вроде как есть возможность считать значение первого пиксела через SPI, можно попробовать.

Я смотрел под лупой - красный вообще никак не светится. Т.е. должен быть отказ сразу в нескольких линиях. Маловероятно, по-моему. Я не прав? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

21 hours ago, aaarrr said:

Попробуйте RDRED.

aaarrr, большое спасибо за вторую ценную наводку!

Честно говоря, сначала поленился посмотреть, что покажет RDRED. Подумал, наверняка покажет 0, и ничего мне это не даст.  

Но потом вспомнил про совет и раз уж других идей не осталось, решил глянуть. Синий и зеленый ожидаемо оказались равны 255. А вот красный оказался неожиданно равен 3... Сначала я не понял, откуда взялась эта тройка и стал нащупывать две линии, которые ее дают. Короче, через некоторое время я понял, что контроллер считает шину 24-битной, а поскольку линий по факту 18, красному остается всего два бита.

Оказалось, что помимо формата пикселя (18 бит) нужно было установить c помощью команды COLCTRL флаг MDT, отвечающий за формат шины.

Такие дела. Теперь можно с хорошим настроением проводить выходные

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 minutes ago, Zuse said:

Теперь можно с хорошим настроением проводить выходные

Эт правильно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...