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

Всем привет,

Суть проблемы, имею LCD INANBO-T35CST-ILI9488-V1 c контроллером ili9488 (даташит весит 10мб, нет возможности прикрепить, можно найти на pudn.com)

 

>Подсветка работает , все отлично.

>Регистры читаю корректно, например ID=9488, статус также читаю. (то есть интерфейс работоспособен)

 

После инициализации и выхода из режима слип и включения дисплея пытаюсь писать данные в память LCD, но на дисплее ничего нет.

Игрался с регистрами PowerControl, безрезультатно.

Статус(Reg 09h) после включения питания 0x00610000, после инициализации 0xA4530400.

 

 

Нужно любые идеи по поводу того что я могу упустить.

 

Пример инициализации ниже.

 

	LCD_WriteCmd_ili9488(0xE0); //P-Gamma
	LCD_WriteData_ili9488(0x00);
	LCD_WriteData_ili9488(0x03);
	LCD_WriteData_ili9488(0x0C);
	LCD_WriteData_ili9488(0x09);
	LCD_WriteData_ili9488(0x17);
	LCD_WriteData_ili9488(0x09);
	LCD_WriteData_ili9488(0x3E);
	LCD_WriteData_ili9488(0x89);
	LCD_WriteData_ili9488(0x49);
	LCD_WriteData_ili9488(0x08);
	LCD_WriteData_ili9488(0x0D);
	LCD_WriteData_ili9488(0x0A);
	LCD_WriteData_ili9488(0x13);
	LCD_WriteData_ili9488(0x15);
	LCD_WriteData_ili9488(0x0F);

	LCD_WriteCmd_ili9488(0XE1); //N-Gamma
	LCD_WriteData_ili9488(0x00);
	LCD_WriteData_ili9488(0x11);
	LCD_WriteData_ili9488(0x15);
	LCD_WriteData_ili9488(0x03);
	LCD_WriteData_ili9488(0x0F);
	LCD_WriteData_ili9488(0x05);
	LCD_WriteData_ili9488(0x2D);
	LCD_WriteData_ili9488(0x34);
	LCD_WriteData_ili9488(0x41);
	LCD_WriteData_ili9488(0x02);		
	LCD_WriteData_ili9488(0x0B);
	LCD_WriteData_ili9488(0x0A);
	LCD_WriteData_ili9488(0x33);
	LCD_WriteData_ili9488(0x37);
	LCD_WriteData_ili9488(0x0F);

	LCD_WriteCmd_ili9488(0XC0); //Power Control 1
	LCD_WriteData_ili9488(0x17); //Vreg1out
	LCD_WriteData_ili9488(0x15); //Verg2out

	LCD_WriteCmd_ili9488(0xC1); //Power Control 2
	LCD_WriteData_ili9488(0x41); //VGH,VGL

	LCD_WriteCmd_ili9488(0xC5); //Power Control 3
	LCD_WriteData_ili9488(0x00);
	LCD_WriteData_ili9488(0x12); //Vcom
	LCD_WriteData_ili9488(0x80);

	LCD_WriteCmd_ili9488(0x36); //Memory Access
	LCD_WriteData_ili9488(0x48);

	LCD_WriteCmd_ili9488(0x3A); // Interface Pixel Format
	LCD_WriteData_ili9488(0x66);

	LCD_WriteCmd_ili9488(0XB0); // Interface Mode Control
	LCD_WriteData_ili9488(0x00);

	LCD_WriteCmd_ili9488(0xB1); //Frame rate
	LCD_WriteData_ili9488(0xA0); //60Hz

	LCD_WriteCmd_ili9488(0xB4); //Display Inversion Control
	LCD_WriteData_ili9488(0x02); //2-dot

	LCD_WriteCmd_ili9488(0XB6); //RGB/MCU Interface Control
	LCD_WriteData_ili9488(0x02); //MCU
	LCD_WriteData_ili9488(0x02); //Source,Gate scan dieection

	LCD_WriteCmd_ili9488(0XE9); // Set Image Function
	LCD_WriteData_ili9488(0x00); // Disable 24 bit data input

	LCD_WriteCmd_ili9488(0xF7); // Adjust Control
	LCD_WriteData_ili9488(0xA9);
	LCD_WriteData_ili9488(0x51);
	LCD_WriteData_ili9488(0x2C);
	LCD_WriteData_ili9488(0x82); // D7 stream, loose

	LCD_WriteCmd_ili9488(0x11); //Sleep out
	hal_delay_ms(120);
	LCD_WriteCmd_ili9488(0x29); //Display on

 

Использую STM32 (FSMC).

Включение дисплея:

post-54460-1419863795_thumb.png

INANBO_T35CST_ILI9488_V1.pdf

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


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

>Регистры читаю корректно, например ID=9488, статус также читаю. (то есть интерфейс работоспособен)

После инициализации и выхода из режима слип и включения дисплея пытаюсь писать данные в память LCD, но на дисплее ничего нет.

лень даташит искать:

- если контроллер умеет, то попробуйте дать команду инверсии экрана или что-то похожее в системе команд ILI поищите.. смысл операции - убедиться, что контроллер проинтил экран и ждет данные..

- что выводите в качестве данных - бывает, что недачно выбранный паттерн не видно на экране - попробуйте заливку 0xffff, 0x5555, 0xaaaa..

- как формируется вывод данных? т.е. вы проинтили экран и что дальше?

- читать из экранной области пробовали?

- при наличии осцилла смотрите диаграммы доступа к экрану..

 

зы. NC - non connected. имхо, лучше никуда не присоединять (у вас на gnd), если производитель не разрешил..

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


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

- если контроллер умеет, то попробуйте дать команду инверсии экрана или что-то похожее в системе команд ILI поищите.. смысл операции - убедиться, что контроллер проинтил экран и ждет данные..

Jury093 спасибо, совет был к месту,

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

Еще раз спасибо Jury093.

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


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

Jury093 спасибо, совет был к месту,

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

Еще раз спасибо Jury093.

ок. успехов в борьбе с контроллером..

самое интересное - начальные шаги, первая точка, линия, цветной квадратик, буковка..

потом уже рутина..

 

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


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

Приветствую, коллеги. Столкнулся с проблемой запуска дисплея на контроллере ili9488 под управлением Stm32f429. Интерфейс для связи используется MIPI-DBI Type B 16-bit bus. Все пины кроме RESET сконфигурированы под альтернативную функцию FMC (AF = 0x0C). Думаю что проблема на уровне FMC так как cчитать например ID (команда 0x04) не получается. При любом считывании возвращается команда считывания. Например если я считываю ID то получаю 3 байта равных 0x04. Не могу найти в чем проблема. Железо точно рабочее, т.к. другая прошивка на нем работает как надо. Добавлю немного кода.

1) Используемые пины

            gpioFmcD0           = {D, 14, VERY_HIGH, MODE_FMC},   
            gpioFmcD1           = {D, 15, VERY_HIGH, MODE_FMC},
            gpioFmcD2           = {D, 0, VERY_HIGH, MODE_FMC},
            gpioFmcD3           = {D, 1, VERY_HIGH, MODE_FMC},
            gpioFmcD4           = {E, 7, VERY_HIGH, MODE_FMC},
            gpioFmcD5           = {E, 8, VERY_HIGH, MODE_FMC},
            gpioFmcD6           = {E, 9, VERY_HIGH, MODE_FMC},
            gpioFmcD7           = {E, 10, VERY_HIGH, MODE_FMC},
            gpioFmcD8           = {E, 11, VERY_HIGH, MODE_FMC},
            gpioFmcD9           = {E, 12, VERY_HIGH, MODE_FMC},
            gpioFmcD10          = {E, 13, VERY_HIGH, MODE_FMC},
            gpioFmcD11          = {E, 14, VERY_HIGH, MODE_FMC},
            gpioFmcD12          = {E, 15, VERY_HIGH, MODE_FMC},
            gpioFmcD13          = {D, 8, VERY_HIGH, MODE_FMC},
            gpioFmcD14          = {D, 9, VERY_HIGH, MODE_FMC},
            gpioFmcD15          = {D, 10, VERY_HIGH, MODE_FMC},
            
            gpioFmcNOE          = {D, 4, VERY_HIGH, MODE_FMC}, // RD
            gpioFmcNWE          = {D, 5, VERY_HIGH, MODE_FMC}, // WR
            gpioFmcNE1          = {D, 7, VERY_HIGH, MODE_FMC}, // CS
            gpioFmcA12          = {G, 2, VERY_HIGH, MODE_FMC}; // D/C

2) Инициализация FMC

void FmcInit (void)
{
    FmcInitGpio();
    
    RCC_AHB3PeriphClockCmd(RCC_AHB3Periph_FMC, ENABLE);
    
    FMC_NORSRAMTimingInitTypeDef FMC_ReadWriteTimingStruct =
    {
        .FMC_AddressSetupTime = 0,
        .FMC_AddressHoldTime = 0,
        .FMC_DataSetupTime = 4,
        .FMC_BusTurnAroundDuration = 0,
        .FMC_CLKDivision = 15,
        .FMC_DataLatency = 15,
        .FMC_AccessMode = FMC_AccessMode_A,
    }; 
    
    FMC_NORSRAMInitTypeDef FMC_NORSRAMInitStructure =
    {
        .FMC_Bank                   = FMC_Bank1_NORSRAM1,      
        .FMC_DataAddressMux         = FMC_DataAddressMux_Disable, 
        .FMC_MemoryType             = FMC_MemoryType_SRAM, 
        .FMC_MemoryDataWidth        = FMC_NAND_MemoryDataWidth_16b, 
        .FMC_BurstAccessMode        = FMC_BurstAccessMode_Disable, 
        .FMC_WaitSignalPolarity     = FMC_WaitSignalPolarity_Low, 
        .FMC_WrapMode               = FMC_WrapMode_Disable, 
        .FMC_WaitSignalActive       = FMC_WaitSignalActive_BeforeWaitState, 
        .FMC_WriteOperation         = FMC_WriteOperation_Enable, 
        .FMC_WaitSignal             = FMC_WaitSignalPolarity_Low, 
        .FMC_ExtendedMode           = FMC_ExtendedMode_Disable, 
        .FMC_AsynchronousWait       = FMC_AsynchronousWait_Disable, 
        .FMC_WriteBurst             = FMC_WriteBurst_Disable, 
        .FMC_ContinousClock         = FMC_CClock_SyncOnly,
        .FMC_ReadWriteTimingStruct  = &FMC_ReadWriteTimingStruct,
        .FMC_WriteTimingStruct      = 0,
    };
    
    FMC_NORSRAMInit(&FMC_NORSRAMInitStructure);
    
    FMC_NORSRAMCmd(FMC_Bank1_NORSRAM1, ENABLE);
}

3) Функции чтения и записи

void Ili9488WriteCommand (uint16_t cmd)
{
    *(uint16_t*)(0x60000000) = cmd;	
}

void Ili9488WriteData (uint16_t data)
{
	*(uint16_t*)(0x60002000) = data;	
}

void Ili9488ReadParam (uint16_t cmd, uint16_t* param, uint32_t len)
{
	*(uint16_t*)(0x60000000) = cmd;	    
    param[0] = *(uint16_t*)(0x60002000); // dummy
    for(uint32_t i = 0; i < len; i++) 
        param[i] = *(uint16_t*)(0x60002000);
}

Инициализацию думаю смысла нет показывать. Использовал разные варианты, в том числе вариант топик-стартера. Но скорее всего косяк уровнем ниже. Кто что может подсказать?

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


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

Приветствую. В даташите вскользь написано про 3-битный цвет. Перерыл весь инет, нигде не нашел примера использования. В обычном, 18 бит, работает без проблем. 8-цветный режим победить не могу (((

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


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

19.04.2022 в 12:40, yung сказал:

8-цветный режим победить не могу (((

Там его нет, побеждать нечего)))

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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