STM32F429VET6 驱动正点原子2.8寸tftlcd屏出现一直白屏但不显示的情况,请问怎么解决?

lcd一直白屏,不显示其他东西,代码移植的正点原子官方例程的hal库版本

白屏只是点亮了背光,屏幕驱动完全不正常。
这个可能的原因就太多了,硬件连接错误,硬件损坏,程序驱动都有可能。
建议先检查电路连接,试试基本的寄存器读写是否正常,然后逐步调试更高层次的功能

该回答引用ChatGPT
首先,对于这种情况,可能存在以下几种原因:

1. 与硬件相关的问题:可能硬件连接出现问题,或者协议或引脚设置不正确;

2. 软件驱动问题:例如代码中的初始化或者控制参数设置不正确或者存在问题,或者代码有误等。

针对这种情况,可以先检查一下硬件连接和参数设置的正确性,确保没有问题。同时建议我们可以先将官方例程的LCD驱动代码改一下,将屏幕背景改成其他颜色,比如黑色或者其他一些颜色,通过观察屏幕显示的颜色变化,来排查是否存在软件驱动问题。接下来,我们可以提供以下的一份基于HAL库的LCD驱动代码作为参考供大家参考:

c
#define LCD_W 240
#define LCD_H 320

static void LCD_WriteReg(uint16_t regval)
{
*(__IO uint16_t *) (0x60000000)= regval;
}

static void LCD_WriteData(uint16_t data)
{
*(__IO uint16_t *) (0x60020000)= data;
}

void LCD_Init(void)
{
LCD_WriteReg(0x0000);
LCD_WriteReg(0x0000);
LCD_WriteReg(0x0000);
LCD_WriteReg(0x0000);
LCD_WriteReg(0x0000);

LCD_WriteReg(0x00C1);// power control 2, VHV and VGL voltage setting
LCD_WriteData(0x10);// VDV = 1.6V, VGH = 12.8V, VGL = -10V

LCD_WriteReg(0x00C0);// power control 1, SAP, BT[3:0], AP, DSTB, SLP
LCD_WriteData(0x08);// SAP = 0x15, BT = 0x02, AP = 0x00, DSTB = 0x01, SLB = 0x01

LCD_WriteReg(0x00C5);// VCOM control 1
LCD_WriteData(0x03);//

LCD_WriteReg(0x00B5);// blurring effect register
LCD_WriteData(0x02);// compared to register B; 0x00 is normal, 0x02 is blur

LCD_WriteReg(0x0001);// software reset, 0 args, w/delay
HAL_Delay(50);

//LCD_WriteReg(0x003A);// pixel format RGB565 / MCU 16bit; disable mipi bridge; 0x55 = RGB565; 0x66 = MCU/SPI;
LCD_WriteReg(0x36);// memory access control
LCD_WriteData(0x88);// MY MX MV ML BGR ?00?
// 0x08 从上到下;0x80 从下到上
// 0x20 从左到右;0x40 从右到左
// 0x40 RGB(BGR) pixel order
// 0x00 没有 Flip 和 Mirror 操作

LCD_WriteReg(0x29);// display on

LCD_SetWindow(0, 0, LCD_W-1, LCD_H-1);// update entire display
}

void LCD_SetWindow(uint16_t x, uint16_t y, uint16_t w, uint16_t h)
{
// Column address set
LCD_WriteReg(0x002A);// column addr set
LCD_WriteData(x >> 8);// start col high
LCD_WriteData(x & 0xFF);// start col low
LCD_WriteData(w >> 8);// end col high
LCD_WriteData(w & 0xFF);// end col low

// Row address set
LCD_WriteReg(0x002B);// page addr set
LCD_WriteData(y >> 8);// start page high
LCD_WriteData(y & 0xFF);// start page low
LCD_WriteData(h >> 8);// end page high
LCD_WriteData(h & 0xFF);// end page low

LCD_WriteReg(0x002C);// memory write
}

void LCD_Clear(uint16_t color)
{
uint32_t i;

LCD_SetWindow(0, 0, LCD_W-1, LCD_H-1);// update entire display

for (i = 0; i < LCD_W * LCD_H; i++) {
LCD_WriteData(color);
}
}


此外,还有一些注意事项,例如 STM32F429VET6 板子默认的 SPI1 引脚,如果不进行配置,会导致LCD屏白屏,不显示,因此建议在main函数中加入以下spi1初始化代码:

c
SPI_HandleTypeDef hspi1;

/* SPI1 init function */
void MX_SPI1_Init(void)
{
hspi1.Instance = SPI1;
hspi1.Init.Mode = SPI_MODE_MASTER;
hspi1.Init.Direction = SPI_DIRECTION_2LINES;
hspi1.Init.DataSize = SPI_DATASIZE_8BIT;
hspi1.Init.CLKPolarity = SPI_POLARITY_LOW;
hspi1.Init.CLKPhase = SPI_PHASE_1EDGE;
hspi1.Init.NSS = SPI_NSS_SOFT;
hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2;
hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;
hspi1.Init.TIMode = SPI_TIMODE_DISABLE;
hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
hspi1.Init.CRCPolynomial = 0x7;
if (HAL_SPI_Init(&hspi1) != HAL_OK)
{
Error_Handler();
}
}


最后,我们建议如果还是无法解决问题,可以查看硬件原理图和数据手册,再进一步排查问题所在。

以下答案由GPT-3.5大模型与博主波罗歌共同编写:
原因可能是屏幕与驱动程序之间的通信出现了问题。以下是可能的原因和相应的解决方案:

  1. 驱动程序中的设置错误:检查代码,确保时钟、管脚和其他参数正确设置。

  2. 没有正确初始化屏幕:在主函数中添加初始化函数,确保正确初始化LCD。

  3. 确认LCD驱动芯片正常工作:可以通过连接示波器来检查SPI通信是否正在进行。

以下是一个简单的LCD初始化程序,可能有助于诊断问题:

void LCD_Init(void)
{
    __LCD_CS_SET();
    __LCD_DC_SET();
    __LCD_RESET_CLR();
    HAL_Delay(100);
    __LCD_RESET_SET();
    HAL_Delay(50);
    LCD_WR_REG(0x01);
    HAL_Delay(50);
    LCD_WR_REG(0xCF);  
    LCD_WR_DATA(0x00); 
    LCD_WR_DATA(0xD9);
    LCD_WR_DATA(0X30); 
    LCD_WR_REG(0xED);  
    LCD_WR_DATA(0x64); 
    LCD_WR_DATA(0x03);
    LCD_WR_DATA(0X12); 
    LCD_WR_DATA(0X81); 
    LCD_WR_REG(0xE8);  
    LCD_WR_DATA(0x85); 
    LCD_WR_DATA(0x10);
    LCD_WR_DATA(0x7A); 
    LCD_WR_REG(0xCB);  
    LCD_WR_DATA(0x39); 
    LCD_WR_DATA(0x2C);
    LCD_WR_DATA(0x00); 
    LCD_WR_DATA(0x34); 
    LCD_WR_DATA(0x02); 
    LCD_WR_REG(0xF7);  
    LCD_WR_DATA(0x20); 
    LCD_WR_REG(0xEA);  
    LCD_WR_DATA(0x00); 
    LCD_WR_DATA(0x00);
    LCD_WR_REG(0xC0);    //Power control
    LCD_WR_DATA(0x1D);   //VRH[5:0]
    LCD_WR_REG(0xC1);    //Power control
    LCD_WR_DATA(0x12);   //SAP[2:0];BT[3:0]
    LCD_WR_REG(0xC5);    //VCM control
    LCD_WR_DATA(0x15);
    LCD_WR_DATA(0x00);
    LCD_WR_DATA(0x85);
    LCD_WR_REG(0xC7);    //VCM control2
    LCD_WR_DATA(0x10);
    LCD_WR_REG(0x36);    // Memory Access Control
    LCD_WR_DATA(0xC8);
    LCD_WR_REG(0x3A);    
    LCD_WR_DATA(0x55);
    LCD_WR_REG(0xB1);    
    LCD_WR_DATA(0x00);
    LCD_WR_DATA(0x1A);
    LCD_WR_REG(0xB6);    // Display Function Control
    LCD_WR_DATA(0x0A);
    LCD_WR_DATA(0xA2);
    LCD_WR_REG(0xF2);    // 3Gamma Function Disable
    LCD_WR_DATA(0x00);
    LCD_WR_REG(0x26);    //Gamma curve selected
    LCD_WR_DATA(0x01);
    LCD_WR_REG(0xE0);    //Set Gamma
    LCD_WR_DATA(0x0F);
    LCD_WR_DATA(0x2A);
    LCD_WR_DATA(0x28);
    LCD_WR_DATA(0x08);
    LCD_WR_DATA(0x0E);
    LCD_WR_DATA(0x08);
    LCD_WR_DATA(0x54);
    LCD_WR_DATA(0XA9);
    LCD_WR_DATA(0x43);
    LCD_WR_DATA(0x0A);
    LCD_WR_DATA(0x0F);
    LCD_WR_DATA(0x00);
    LCD_WR_DATA(0x00);
    LCD_WR_DATA(0x00);
    LCD_WR_DATA(0x00);
    LCD_WR_REG(0XE1);    //Set Gamma
    LCD_WR_DATA(0x00);
    LCD_WR_DATA(0x15);
    LCD_WR_DATA(0x17);
    LCD_WR_DATA(0x07);
    LCD_WR_DATA(0x11);
    LCD_WR_DATA(0x06);
    LCD_WR_DATA(0x2B);
    LCD_WR_DATA(0x56);
    LCD_WR_DATA(0x3C);
    LCD_WR_DATA(0x05);
    LCD_WR_DATA(0x10);
    LCD_WR_DATA(0x0F);
    LCD_WR_DATA(0x3F);
    LCD_WR_DATA(0x3F);
    LCD_WR_DATA(0x0F);
    LCD_WR_REG(0x11); // Exit Sleep
    HAL_Delay(120);
    LCD_WR_REG(0x29); // Display on
}

请注意,在这个初始化例程中,LCD_WR_REG和LCD_WR_DATA这两个函数都被定义为宏。如果不了解这些函数,可以在代码中查找它们,并确保它们与屏幕型号和所使用的驱动兼容。此外,还需根据具体的硬件情况,对上述代码进行必要的修改。

希望这些信息能对您有帮助。
如果我的回答解决了您的问题,请采纳!

那应该就是硬件的问题了,我之前错把正点的12V电源插到普中上,就把芯片烧了,屏幕也是一直白。

该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:

如果您的STM32F429VET6驱动正点原子2.8寸tftlcd屏出现一直白屏但不显示的情况,可能有以下几个原因:

1. LCD的初始化未成功

在使用LCD之前,需要对其进行初始化,否则无法正常显示。您可以检查一下LCD初始化的代码是否正确,并且确保初始化函数的返回值为成功。

2. LCD的引脚连接不正确

检查一下LCD的引脚连接是否正确。特别是LCD的复位引脚(RST),如果未正确连接,可能会导致LCD无法正常工作。

3. LCD的配置参数不正确

检查一下LCD的配置参数是否正确。您可以参考正点原子的官方例程,确保您的配置参数与之一致。

4. LCD的数据线连接不正确

检查一下LCD的数据线连接是否正确。如果数据线连接不正确,可能会导致LCD无法正常显示。

5. STM32F429VET6的时钟配置不正确

检查一下STM32F429VET6的时钟配置是否正确。如果时钟配置不正确,可能会导致LCD无法正常工作。

如果以上几个方面都没有问题,您可以尝试使用示波器对LCD的时序进行分析,检查一下时序是否正确。如果还无法解决问题,建议您将代码移植到一块新的开发板上测试,以确定是否是硬件问题导致的。

如果以上回答对您有所帮助,点击一下采纳该答案~谢谢

该回答引用于ChatGPT:
出现 LCD 模块一直白屏不显示的情况,一般有以下几个可能的原因:

  1. 电源供电不足:因为 LCD 模块需要较高的驱动电压和电流,如果供电不足就会导致 LCD 模块无法正常工作。
  2. 信号线连接错误:LCD 模块需要多条信号线来传输控制信号和数据信号,如果这些信号线连接错误就会导致 LCD 模块无法正常工作。
  3. 初始化设置错误:LCD 模块需要经过一系列的初始化设置才能正确显示图像,如果初始化设置错误,也会导致 LCD 模块无法正常工作。

根据您提供的情况,我认为问题可能出在初始化设置上。您可以尝试按照以下步骤检查和调试:

  1. 确认 LCD 模块供电正常:首先,您需要确保 STM32F429VET6 的 VDD 和 VDDIO 都能够提供足够的电压和电流,以供给 LCD 模块。您可以通过测量这些引脚的电压来确认其是否正常。如果发现供电不足,建议检查电源线路和 PCB 设计,确保电源连接正确,同时增大电源电容。
  2. 检查信号线连接是否正确:使用示波器或万用表检查控制信号和数据信号是否正确。控制信号包括复位信号、片选信号、写入信号和读取信号,通过这些信号可以控制 LCD 模块的工作状态。数据信号包括像素数据等,通过这些信号可以显示图像。如果发现信号线连接不正确,建议对照 STM32F429VET6 的硬件手册和 LCD 模块的驱动手册进行调整。
  3. 检查初始化设置是否正确:确保您在初始化代码中正确设置了 LCD 模块的分辨率、像素格式、时序等参数。您可以参考正点原子的官方例程以及 LCD 模块的驱动手册,确认初始化设置是否正确并进行调整。

如果以上步骤都确认没有问题,您还可以尝试使用示波器观察 LCD 控制信号和数据信号的波形,用于进一步分析 LCD 模块无法正常工作的原因。

希望我的回答能帮助到您,祝您解决问题。

在使用正点原子2.8寸TFTLCD屏幕时出现一直白屏但不显示的情况,可能是因为驱动程序的配置不正确或者信号线连接不良导致的。

您可以按照以下步骤进行排除故障:

  1. 确认硬件连接:首先,请确认您已正确连接屏幕模块和STM32F429VET6开发板,并检查信号线是否连接良好。
  2. 检查驱动程序:检查您使用的驱动程序配置是否正确。确保您已正确初始化TFTLCD屏幕的相关寄存器,并正确配置STM32F429VET6的时钟和引脚。
  3. 检查显示信号:检查您的显示信号是否正确。确保您已正确设置LCD数据和控制信号,以便TFTLCD屏幕能够正确显示。
  4. 调试程序:如果以上步骤无法解决问题,可以尝试调试您的程序。您可以使用调试器来检查程序的执行过程,并查找可能的问题。您可以尝试在程序中插入调试语句来输出变量值和调试信息,以便更好地了解程序的执行情况。
  5. 更新驱动程序:如果问题仍然存在,您可以尝试更新您的驱动程序。您可以访问正点原子官方网站下载最新版本的驱动程序,并按照说明进行更新。

总的来说,检查硬件连接、驱动程序配置和显示信号设置是解决TFTLCD屏幕一直白屏但不显示问题的关键。如果您无法解决问题,请尝试使用调试工具和更新驱动程序。

以下内容部分参考ChatGPT模型:
首先,需要检查硬件连接是否正确,例如时钟、引脚是否接对。然后,需要检查代码中的初始化是否正确,例如时钟配置、引脚配置、LCD控制器配置等。如果以上两个方面都没有问题,可以尝试使用示波器或逻辑分析仪来检查信号是否正常。最后,可以尝试使用其他LCD屏幕或者其他驱动程序来测试,以确定问题所在。
如果我的建议对您有帮助、请点击采纳、祝您生活愉快