MI0283QT-17CP1 LCD 带 ILI9341V 控制器
MI0283QT-17CP1 LCD with ILI9341V controller
我正在尝试将 MI0283QT-17CP1 2.8' TFT LCD 与使用串行 8080 8 位数据协议的 ILI9341V 驱动程序一起使用。
这是我的初始化代码:
/* Software reset */
LCD_Send_Command(ILI9341_RESET);
HAL_Delay(50);
LCD_Send_Command(0x34); // TE off
LCD_Send_Command(ILI9341_POWERA);
LCD_Send_data(0x39);
LCD_Send_data(0x2C);
LCD_Send_data(0x00);
LCD_Send_data(0x34); //33
LCD_Send_data(0x02); //06
LCD_Send_Command(ILI9341_POWERB);
LCD_Send_data(0x00);
LCD_Send_data(0xC1); //C3 / F9 / EA
LCD_Send_data(0x30); // / F0
LCD_Send_Command(ILI9341_DTCA);
LCD_Send_data(0x85);
LCD_Send_data(0x00); //01
LCD_Send_data(0x78); //79
LCD_Send_Command(ILI9341_DTCB);
LCD_Send_data(0x00); //seems to be ok
LCD_Send_data(0x00); //seems to be ok
LCD_Send_Command(ILI9341_POWER_SEQ);
LCD_Send_data(0x64); //seems to be ok
LCD_Send_data(0x03); //seems to be ok
LCD_Send_data(0x12); //seems to be ok
LCD_Send_data(0x81); //seems to be ok
LCD_Send_Command(ILI9341_PRC);
LCD_Send_data(0x20); //seems to be ok
LCD_Send_Command(ILI9341_POWER1);
LCD_Send_data(0x21);//0x1B / 1D / 27 /21
LCD_Send_Command(ILI9341_POWER2);
LCD_Send_data(0x10); // 01
LCD_Send_Command(ILI9341_VCOM1);
LCD_Send_data(0x3E); //2D /3F / 33 / 4D / 4F
LCD_Send_data(0x33); //33 /3C / 34 / 3B / 38
LCD_Send_Command(ILI9341_MAC);
LCD_Send_data(0x48);
LCD_Send_Command(ILI9341_PIXEL_FORMAT); //seems to be ok
LCD_Send_data(0x55); //seems to be ok
//LCD_Send_Command(ILI9341_RGB_INTERFACE);
//LCD_Send_data(0x60);
LCD_Send_Command(ILI9341_FRC);
LCD_Send_data(0x00);
LCD_Send_data(0x18);
LCD_Send_Command(ILI9341_DFC);
LCD_Send_data(0x08);
LCD_Send_data(0x82);
LCD_Send_data(0x27);
//LCD_Send_Command(ILI9341_3GAMMA_EN);
//LCD_Send_data(0x00);
LCD_Send_Command(ILI9341_COLUMN_ADDR);
LCD_Send_data(0x00);
LCD_Send_data(0x00);
LCD_Send_data(0x00);
LCD_Send_data(0xEF);
LCD_Send_Command(ILI9341_PAGE_ADDR);
LCD_Send_data(0x00);
LCD_Send_data(0x00);
LCD_Send_data(0x01);
LCD_Send_data(0x3F);
LCD_Send_Command(ILI9341_GAMMA);
LCD_Send_data(0x01);
LCD_Send_Command(ILI9341_PGAMMA);
LCD_Send_data(0x0F);
LCD_Send_data(0x31);
LCD_Send_data(0x2B);
LCD_Send_data(0x0C);
LCD_Send_data(0x0E);
LCD_Send_data(0x08);
LCD_Send_data(0x4E);
LCD_Send_data(0xF1);
LCD_Send_data(0x37);
LCD_Send_data(0x07);
LCD_Send_data(0x10);
LCD_Send_data(0x03);
LCD_Send_data(0x0E);
LCD_Send_data(0x09);
LCD_Send_data(0x00);
LCD_Send_Command(ILI9341_NGAMMA);
LCD_Send_data(0x00);
LCD_Send_data(0x0E);
LCD_Send_data(0x14);
LCD_Send_data(0x03);
LCD_Send_data(0x11);
LCD_Send_data(0x07);
LCD_Send_data(0x31);
LCD_Send_data(0xC1);
LCD_Send_data(0x48);
LCD_Send_data(0x08);
LCD_Send_data(0x0F);
LCD_Send_data(0x0C);
LCD_Send_data(0x31);
LCD_Send_data(0x36);
LCD_Send_data(0x0F);
LCD_Send_Command(ILI9341_SLEEP_OUT);
HAL_Delay(1000);
LCD_Send_Command(ILI9341_DISPLAY_ON);
LCD_Send_Command(ILI9341_GRAM);
我正在尝试开始以红色(5-6-5 RGB 格式)绘制所有屏幕,但似乎无法绘制任何东西...
我已经检查了所有硬件线,如复位、CS、data/command 和所有数据线。
有没有人使用过这个设置并且可以告诉我我做错了什么?
谢谢,
艾夫纳
好的,所以我找到了答案,它不在初始化代码中,而是在屏幕的着色中。忘记添加一个 Gram 命令来设置将数据写入屏幕 sram。
所以现在我的着色函数是这样的:
void LCD_MNG_FillRect(uint16_t Xpos, uint16_t Ypos, uint16_t Width, uint16_t Heigth, LCD_COLORS_NAMES Color)
{
uint32_t Index;
uint16_t DisplayColor;
uint32_t Size = (uint32_t)(Width * Heigth);
LCD_InitDrawImage(Xpos, Ypos, Width, Heigth);
DisplayColor = LCD_MNG_CreateColor565((uint8_t)LCD_ColorsList[(int)Color].Red, (uint8_t)LCD_ColorsList[(int)Color].Green, (uint8_t)LCD_ColorsList[(int)Color].Blue);
LCD_Send_Command(ILI9341_GRAM); // this was missing...
for (Index = 0; Index < Size; Index++)
{
LCD_DisplayNextPoint(DisplayColor);
}
}
我希望这对其他人有所帮助。
我正在尝试将 MI0283QT-17CP1 2.8' TFT LCD 与使用串行 8080 8 位数据协议的 ILI9341V 驱动程序一起使用。 这是我的初始化代码:
/* Software reset */
LCD_Send_Command(ILI9341_RESET);
HAL_Delay(50);
LCD_Send_Command(0x34); // TE off
LCD_Send_Command(ILI9341_POWERA);
LCD_Send_data(0x39);
LCD_Send_data(0x2C);
LCD_Send_data(0x00);
LCD_Send_data(0x34); //33
LCD_Send_data(0x02); //06
LCD_Send_Command(ILI9341_POWERB);
LCD_Send_data(0x00);
LCD_Send_data(0xC1); //C3 / F9 / EA
LCD_Send_data(0x30); // / F0
LCD_Send_Command(ILI9341_DTCA);
LCD_Send_data(0x85);
LCD_Send_data(0x00); //01
LCD_Send_data(0x78); //79
LCD_Send_Command(ILI9341_DTCB);
LCD_Send_data(0x00); //seems to be ok
LCD_Send_data(0x00); //seems to be ok
LCD_Send_Command(ILI9341_POWER_SEQ);
LCD_Send_data(0x64); //seems to be ok
LCD_Send_data(0x03); //seems to be ok
LCD_Send_data(0x12); //seems to be ok
LCD_Send_data(0x81); //seems to be ok
LCD_Send_Command(ILI9341_PRC);
LCD_Send_data(0x20); //seems to be ok
LCD_Send_Command(ILI9341_POWER1);
LCD_Send_data(0x21);//0x1B / 1D / 27 /21
LCD_Send_Command(ILI9341_POWER2);
LCD_Send_data(0x10); // 01
LCD_Send_Command(ILI9341_VCOM1);
LCD_Send_data(0x3E); //2D /3F / 33 / 4D / 4F
LCD_Send_data(0x33); //33 /3C / 34 / 3B / 38
LCD_Send_Command(ILI9341_MAC);
LCD_Send_data(0x48);
LCD_Send_Command(ILI9341_PIXEL_FORMAT); //seems to be ok
LCD_Send_data(0x55); //seems to be ok
//LCD_Send_Command(ILI9341_RGB_INTERFACE);
//LCD_Send_data(0x60);
LCD_Send_Command(ILI9341_FRC);
LCD_Send_data(0x00);
LCD_Send_data(0x18);
LCD_Send_Command(ILI9341_DFC);
LCD_Send_data(0x08);
LCD_Send_data(0x82);
LCD_Send_data(0x27);
//LCD_Send_Command(ILI9341_3GAMMA_EN);
//LCD_Send_data(0x00);
LCD_Send_Command(ILI9341_COLUMN_ADDR);
LCD_Send_data(0x00);
LCD_Send_data(0x00);
LCD_Send_data(0x00);
LCD_Send_data(0xEF);
LCD_Send_Command(ILI9341_PAGE_ADDR);
LCD_Send_data(0x00);
LCD_Send_data(0x00);
LCD_Send_data(0x01);
LCD_Send_data(0x3F);
LCD_Send_Command(ILI9341_GAMMA);
LCD_Send_data(0x01);
LCD_Send_Command(ILI9341_PGAMMA);
LCD_Send_data(0x0F);
LCD_Send_data(0x31);
LCD_Send_data(0x2B);
LCD_Send_data(0x0C);
LCD_Send_data(0x0E);
LCD_Send_data(0x08);
LCD_Send_data(0x4E);
LCD_Send_data(0xF1);
LCD_Send_data(0x37);
LCD_Send_data(0x07);
LCD_Send_data(0x10);
LCD_Send_data(0x03);
LCD_Send_data(0x0E);
LCD_Send_data(0x09);
LCD_Send_data(0x00);
LCD_Send_Command(ILI9341_NGAMMA);
LCD_Send_data(0x00);
LCD_Send_data(0x0E);
LCD_Send_data(0x14);
LCD_Send_data(0x03);
LCD_Send_data(0x11);
LCD_Send_data(0x07);
LCD_Send_data(0x31);
LCD_Send_data(0xC1);
LCD_Send_data(0x48);
LCD_Send_data(0x08);
LCD_Send_data(0x0F);
LCD_Send_data(0x0C);
LCD_Send_data(0x31);
LCD_Send_data(0x36);
LCD_Send_data(0x0F);
LCD_Send_Command(ILI9341_SLEEP_OUT);
HAL_Delay(1000);
LCD_Send_Command(ILI9341_DISPLAY_ON);
LCD_Send_Command(ILI9341_GRAM);
我正在尝试开始以红色(5-6-5 RGB 格式)绘制所有屏幕,但似乎无法绘制任何东西... 我已经检查了所有硬件线,如复位、CS、data/command 和所有数据线。 有没有人使用过这个设置并且可以告诉我我做错了什么? 谢谢, 艾夫纳
好的,所以我找到了答案,它不在初始化代码中,而是在屏幕的着色中。忘记添加一个 Gram 命令来设置将数据写入屏幕 sram。 所以现在我的着色函数是这样的:
void LCD_MNG_FillRect(uint16_t Xpos, uint16_t Ypos, uint16_t Width, uint16_t Heigth, LCD_COLORS_NAMES Color)
{
uint32_t Index;
uint16_t DisplayColor;
uint32_t Size = (uint32_t)(Width * Heigth);
LCD_InitDrawImage(Xpos, Ypos, Width, Heigth);
DisplayColor = LCD_MNG_CreateColor565((uint8_t)LCD_ColorsList[(int)Color].Red, (uint8_t)LCD_ColorsList[(int)Color].Green, (uint8_t)LCD_ColorsList[(int)Color].Blue);
LCD_Send_Command(ILI9341_GRAM); // this was missing...
for (Index = 0; Index < Size; Index++)
{
LCD_DisplayNextPoint(DisplayColor);
}
}
我希望这对其他人有所帮助。