0

我正在尝试在 STM32F10B 主板上初始化 DT028ATFT-TS 显示器。该系统以前与 DT028TFT-TS 一起工作,但该显示器已停产。由于使用了新的显示器,界面也不得不从 ILI9320 更改为 ILI9341。我现在基本上是在尝试以与我以前相同的配置初始化新显示器。

我面临的问题是显示图像最终显示随机分布的水平条纹(每次启动时略有不同),并带有一点闪烁。而且,有时(不确定是否相关),它只显示背光而没有其他任何东西 - 没有条纹,没有测试图像。测试图像只是在 x=100, y=50 处显示的一个大红色正方形 (100x100)。你可以在这里看到问题的效果: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);
// ===============================
4

1 回答 1

1

你的问题听起来像一个时间问题。你试过降低帧率吗?那应该放宽显示时间。您将其设置为 119 Hz。

您在初始化之前是否进行了正确的重置?

您可以与 ILI9341 控制器的其他实现进行比较:

于 2013-12-11T21:20:50.503 回答