Integro 0 29 декабря, 2014 Опубликовано 29 декабря, 2014 · Жалоба Всем привет, Суть проблемы, имею 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). Включение дисплея: INANBO_T35CST_ILI9488_V1.pdf Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Jury093 2 29 декабря, 2014 Опубликовано 29 декабря, 2014 · Жалоба >Регистры читаю корректно, например ID=9488, статус также читаю. (то есть интерфейс работоспособен) После инициализации и выхода из режима слип и включения дисплея пытаюсь писать данные в память LCD, но на дисплее ничего нет. лень даташит искать: - если контроллер умеет, то попробуйте дать команду инверсии экрана или что-то похожее в системе команд ILI поищите.. смысл операции - убедиться, что контроллер проинтил экран и ждет данные.. - что выводите в качестве данных - бывает, что недачно выбранный паттерн не видно на экране - попробуйте заливку 0xffff, 0x5555, 0xaaaa.. - как формируется вывод данных? т.е. вы проинтили экран и что дальше? - читать из экранной области пробовали? - при наличии осцилла смотрите диаграммы доступа к экрану.. зы. NC - non connected. имхо, лучше никуда не присоединять (у вас на gnd), если производитель не разрешил.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Integro 0 2 января, 2015 Опубликовано 2 января, 2015 · Жалоба - если контроллер умеет, то попробуйте дать команду инверсии экрана или что-то похожее в системе команд ILI поищите.. смысл операции - убедиться, что контроллер проинтил экран и ждет данные.. Jury093 спасибо, совет был к месту, В итоге проблема была в железе, сигнал RESET сильно перетянули вниз, в итоге контроллер не мог его дотянуть до логической единицы. Еще раз спасибо Jury093. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Jury093 2 2 января, 2015 Опубликовано 2 января, 2015 · Жалоба Jury093 спасибо, совет был к месту, В итоге проблема была в железе, сигнал RESET сильно перетянули вниз, в итоге контроллер не мог его дотянуть до логической единицы. Еще раз спасибо Jury093. ок. успехов в борьбе с контроллером.. самое интересное - начальные шаги, первая точка, линия, цветной квадратик, буковка.. потом уже рутина.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ruslan-maniak 0 22 марта, 2019 Опубликовано 22 марта, 2019 · Жалоба Приветствую, коллеги. Столкнулся с проблемой запуска дисплея на контроллере 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); } Инициализацию думаю смысла нет показывать. Использовал разные варианты, в том числе вариант топик-стартера. Но скорее всего косяк уровнем ниже. Кто что может подсказать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
yung 0 19 апреля, 2022 Опубликовано 19 апреля, 2022 · Жалоба Приветствую. В даташите вскользь написано про 3-битный цвет. Перерыл весь инет, нигде не нашел примера использования. В обычном, 18 бит, работает без проблем. 8-цветный режим победить не могу ((( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 51 23 апреля, 2022 Опубликовано 23 апреля, 2022 · Жалоба 19.04.2022 в 12:40, yung сказал: 8-цветный режим победить не могу ((( Там его нет, побеждать нечего))) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
yung 0 24 апреля, 2022 Опубликовано 24 апреля, 2022 · Жалоба Из дашашита Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться