Я пытаюсь инициализировать отображение DT028ATFT-TS на основной плате STM32F10B. Ранее система работала с DT028TFT-TS, но этот дисплей был прекращен. В результате использования нового diplay интерфейс также должен был перейти от ILI9320 к ILI9341. В настоящее время я пытаюсь инициализировать новый экран в конфигурации, которая была бы эквивалентна тому, что у меня было раньше.Как инициализировать дисплей DT028ATFT
Проблема, с которой я сталкиваюсь, заключается в том, что изображение на экране заканчивается показом горизонтальных полос, случайно распределенных (немного отличающихся при каждом запуске) с небольшим количеством мерцания. И порой (не уверен, если они связаны), он просто показывает подсветку и ничего больше - никаких полос, никакого тестового изображения. Тестовое изображение представляет собой только один большой красный квадрат (100x100), отображаемый при x = 100, y = 50. Вы можете увидеть эффект проблемы здесь: Streaked Display Image.
Ниже приведена часть кода инициализации, который я использовал, - часть его взята как таковая из примера кода DisplayTech, предлагаемого на их веб-сайте, часть которого настроена. Я исключил команды из кода примера, которые не задокументированы в соответствии с ILI9341 (возможно, настройка вендора) и параметры гамма-коррекции, просто для экономии места. Любая помощь в выяснении, где я пошла не так, будет оценена по достоинству.
// DT028ATFT LCD init - ILI9341:
// Frame Rate Control
SPI_WriteCMD(0xB1);
SPI_WriteDAT(0x00); // division ratio: 1
SPI_WriteDAT(0x10); // 16 clocks per line
// Power Control
SPI_WriteCMD(0xC0);
SPI_WriteDAT(0x25); // GVDD = 4.70V
SPI_WriteCMD(0xC1);
SPI_WriteDAT(0x03); // VCL=VCI x 2, VGH=VCI x 6, VGL=-VCI x 3
// VCOM Control
SPI_WriteCMD(0xC5);
SPI_WriteDAT(0x5C); // VCOMH = 5.000 V
SPI_WriteDAT(0x4C); // VCOML = -0.600 V
SPI_WriteCMD(0xC7);
SPI_WriteDAT(0x94); // VCOMH = VMH - 44, VCOML = VML - 44
// Memory Access Control
SPI_WriteCMD(0x36);
SPI_WriteDAT(0x08); // BGR=1, Normal addr order and refresh direction
// Write CTRL Display
SPI_WriteCMD(0x53);
SPI_WriteDAT(0x24); // BCTRL=1, DD=0, BL=1
// Display Function Control
SPI_WriteCMD(0xB6);
SPI_WriteDAT(0x00); // Normal scan, V63 pos pol/V0 neg pol
SPI_WriteDAT(0xA0); // LCD normally white, G1 to G320, S720 to S1
SPI_WriteDAT(0x27); // NL = 320
SPI_WriteDAT(0x00); // PCDIV not used
// Entry Mode Set
SPI_WriteCMD(0xB7);
SPI_WriteDAT(0x06); // Normal display for G1-G320 output, Low voltage detection enabled
// Column Address Set
SPI_WriteCMD(0x2A);
SPI_WriteDAT(0x00);
SPI_WriteDAT(0x00); // Start Column = 0
SPI_WriteDAT(0x00);
SPI_WriteDAT(0xEF); // End Column = 239
// Page Address Set
SPI_WriteCMD(0x2B);
SPI_WriteDAT(0x00);
SPI_WriteDAT(0x00); // Start Page = 0
SPI_WriteDAT(0x01);
SPI_WriteDAT(0x3F); // End Page = 319
// Gamma Set
SPI_WriteCMD(0x26);
SPI_WriteDAT(0x01); // Gamma Curve 1 selected (G2.2)
// Pixel Format Set
SPI_WriteCMD(0x3A);
SPI_WriteDAT(0x55); // 16bits/pixel (RGB and MCU i/f)
// Interface Control
SPI_WriteCMD(0xF6);
SPI_WriteDAT(0x00); // image data not wrapped around (exceeding data ignored)
SPI_WriteDAT(0x00); // MSB used also as LSB for R and B (64k colours)
SPI_WriteDAT(0x00); // Disp Op Mode: internal clk, GRAM access: Sys I/F, 1 transf/pxl (16bit 64k colours)
// RGB Interface Signal Control
SPI_WriteCMD(0xB0);
SPI_WriteDAT(0xC0); // BypassMode=1, RCM=2, VSPL=0, HSPL=0, DPL=0, EPL=0
// Sleep Mode off (DC/DC conv enabled, internal osc started)
SPI_WriteCMD(0x11);
Dly100us((void*)1200);
// Display ON
SPI_WriteCMD(0x29);
// ===============================
я сделать сброс до того, да. Изменение частоты кадров (70 Гц) избавилось от полос. Теперь все чисто. Благодаря! Я по-прежнему получаю исчезновение изображения (просто подсветка слева) иногда, но это, вероятно, отдельная проблема. – Unstacked
Хорошо, что это сработало. Что касается исчезающего образа, я понятия не имею. Это может быть почти все, что связано с HW. Если у вас есть второй дисплей, попробуйте воспроизвести, а также убедитесь, что ваша схема питания стабильная. – Manu3l0us
Получил исправление для исчезающего изображения - я подумал, что было бы полезно другим сделать эту заметку. К сожалению, я не уверен, какие из изменений оказали наибольшее влияние, но вот они: 1. Добавлен SW Reset после сброса микросхемы, который у меня уже был – Unstacked