lcd一直白屏,不显示其他东西,代码移植的正点原子官方例程的hal库版本
白屏只是点亮了背光,屏幕驱动完全不正常。
这个可能的原因就太多了,硬件连接错误,硬件损坏,程序驱动都有可能。
建议先检查电路连接,试试基本的寄存器读写是否正常,然后逐步调试更高层次的功能
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);
}
}
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大模型与博主波罗歌共同编写:
原因可能是屏幕与驱动程序之间的通信出现了问题。以下是可能的原因和相应的解决方案:
驱动程序中的设置错误:检查代码,确保时钟、管脚和其他参数正确设置。
没有正确初始化屏幕:在主函数中添加初始化函数,确保正确初始化LCD。
确认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 模块一直白屏不显示的情况,一般有以下几个可能的原因:
根据您提供的情况,我认为问题可能出在初始化设置上。您可以尝试按照以下步骤检查和调试:
如果以上步骤都确认没有问题,您还可以尝试使用示波器观察 LCD 控制信号和数据信号的波形,用于进一步分析 LCD 模块无法正常工作的原因。
希望我的回答能帮助到您,祝您解决问题。
在使用正点原子2.8寸TFTLCD屏幕时出现一直白屏但不显示的情况,可能是因为驱动程序的配置不正确或者信号线连接不良导致的。
您可以按照以下步骤进行排除故障:
总的来说,检查硬件连接、驱动程序配置和显示信号设置是解决TFTLCD屏幕一直白屏但不显示问题的关键。如果您无法解决问题,请尝试使用调试工具和更新驱动程序。
以下内容部分参考ChatGPT模型:
首先,需要检查硬件连接是否正确,例如时钟、引脚是否接对。然后,需要检查代码中的初始化是否正确,例如时钟配置、引脚配置、LCD控制器配置等。如果以上两个方面都没有问题,可以尝试使用示波器或逻辑分析仪来检查信号是否正常。最后,可以尝试使用其他LCD屏幕或者其他驱动程序来测试,以确定问题所在。
如果我的建议对您有帮助、请点击采纳、祝您生活愉快