Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何初始化DT028ATFT显示器_C_Embedded_Stm32_Lcd - Fatal编程技术网

C 如何初始化DT028ATFT显示器

C 如何初始化DT028ATFT显示器,c,embedded,stm32,lcd,C,Embedded,Stm32,Lcd,我正在尝试初始化STM32F10B主板上的DT028ATFT-TS显示器。该系统以前使用过DT028TFT-TS,但该显示器已停止使用。由于使用了新的diplay,接口也必须从ILI9320更改为ILI9341。我现在基本上是尝试在一个配置中初始化新的显示,这个配置与我以前的配置相同 我面临的问题是,显示图像最终显示随机分布的水平条纹(每次启动时略有不同),并伴有一点闪烁。而且,有时(不确定是否相关),它只显示背光,其他什么都没有-没有条纹,没有测试图像。测试图像只是一个大的红色正方形(100x

我正在尝试初始化STM32F10B主板上的DT028ATFT-TS显示器。该系统以前使用过DT028TFT-TS,但该显示器已停止使用。由于使用了新的diplay,接口也必须从ILI9320更改为ILI9341。我现在基本上是尝试在一个配置中初始化新的显示,这个配置与我以前的配置相同

我面临的问题是,显示图像最终显示随机分布的水平条纹(每次启动时略有不同),并伴有一点闪烁。而且,有时(不确定是否相关),它只显示背光,其他什么都没有-没有条纹,没有测试图像。测试图像只是一个大的红色正方形(100x100),显示为x=100,y=50。您可以在此处看到问题的影响:

下面是我使用过的初始化代码的一部分——部分代码取自DisplayTech网站上提供的示例代码,部分代码是定制的。我从示例代码中排除了ILI9341(可能是供应商自定义)和gamma校正参数中未记录的命令,只是为了节省一些空间。如果能帮我找出哪里出了问题,我们将不胜感激

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

你的问题听起来像是时间问题。你试过降低帧速率吗?这将放宽显示时间。您正在将其设置为119赫兹

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

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


我以前做过重置,是的。改变帧速率(70Hz)可以消除条纹。现在都干净了。谢谢有时我仍然会看到图像消失(只剩下背光),但这可能是另一个问题。很好,它解决了。关于消失的图像,我不知道。这几乎可以是任何与硬件相关的东西。如果你有第二个显示器,试着复制,同时确保你的电源电路是稳定的。找到了消失图像的修复方法-我认为做这个笔记对其他人可能有用。不幸的是,我不确定哪一个变化产生了最大的影响,但它们是:1。在芯片重置之后添加了SW重置,我已经尝试过了:)以下是更改:1。在我已经进行的芯片复位之后添加了SW复位,然后显示关闭。2.使用示例链接中的Gamma设置。3.在显示打开和填充bkg后增加延迟。4.将SPI时钟从8Mhz降低到4Mhz(我确信这消除了我得到的一些工件)。再次感谢您的帮助,MURO3L0US。值得一提的是:当我体验空白屏幕时,气体位的改变(进入模式设置命令)禁用低电压检测,用一个损坏的屏幕事件替换了空白屏幕事件(仍然接近原始)。这表明当检测到无效电压时,显示器故意切断图像(切换位几次以确认)。VCC为2.8V,所以这是正常的。它一定是从内部电压中导出的。就在那时,我开始仔细研究你的例子。顺便说一句,我也遵循了cmd命令-不知道这是否重要。干杯