大雨 发表于 2024-11-30 08:51:32

UART-SPI-LCM_DMA_交替使用下载显示图片例程将LCD8位改为16位后不能正常显示

本帖最后由 大雨 于 2024-11-30 09:08 编辑

UART-SPI-LCM_DMA_交替使用下载显示图片的问题

根据LCM_Test_8080_DMA_8bit_ILI9341例程,将原8位lcd屏,改为16位,修改了两处设置,测试显示正常。但是同样修改设置测试“UART-SPI-LCM_DMA_交替使用下载显示图片”例程时,显示则不正常。

重写函数:void LCD_WR_REG(u16 Reg)         
{
    LCMIFDATH = Reg>>8;//(u8)(Reg>>8);
   LCMIFDATL = Reg&0xFF;//(u8)Reg;//LCMIFDATH
      LCD_CS=0;
      LCMIFCR = 0x84;                //Enable interface, write command out
      while(LcmFlag);
      LCD_CS = 1 ;
}

修改设置:void LCM_Config(void)
{
      //LCMIFCFG = 0x84;      //bit7 1:Enable Interrupt, bit1 0:8bit mode; bit0 0:8080,1:6800
      LCMIFCFG = 0x8E;   //16位 开中断
      LCMIFCFG2 = 0x09;      //RS:P45,RD:P44,WR:P42; Setup Time=2,HOLD Time=1
      LCMIFSTA = 0x00;
}
显示图片不正常

tzz1983 发表于 2024-11-30 16:42:57

这个没法实验呀,不过应该不止要修改这两处的,屏初始化那段很长的代码,可能也要改。
得自己努力去找不同, 多看屏规格书,
另外找屏厂家要16位的驱动源码,然后看看哪些地方不一样,这样找起来应该会快一点。

大雨 发表于 2024-12-2 09:07:16

tzz1983 发表于 2024-11-30 16:42
这个没法实验呀,不过应该不止要修改这两处的,屏初始化那段很长的代码,可能也要改。
得自己努力去找不同 ...

初始化已经改过了
void LCD_Init(void)
{
LCD_Set_GPIO();
LCDRST(); //初始化之前复位
//#if (USE_LCM==1)    //void LCM_Config(void)
//LCMIFCFG = 0x84;//bit7 1:Enable Interrupt, bit1 0:8bit mode; bit0 0:8080,1:6800
//LCMIFCFG2= 0x09;//RS:P45,RD:P44,WR:P42; Setup Time=2,HOLD Time=1
//LCMIFSTA = 0x00;
//EA = 1;//开中断
//#endif
//#if (USE_DMA==1)    //void DMA_Config(void)
//DMA_Config();
//#endif
       
        //*************3.2inch ILI9341初始化**********//
        LCD_WR_CMD(0xE0);
        LCD_WR_DAT(0x00);
        LCD_WR_DAT(0x07);
        LCD_WR_DAT(0x0f);
        LCD_WR_DAT(0x0D);
        LCD_WR_DAT(0x1B);
        LCD_WR_DAT(0x0A);
        LCD_WR_DAT(0x3c);
        LCD_WR_DAT(0x78);
        LCD_WR_DAT(0x4A);
        LCD_WR_DAT(0x07);
        LCD_WR_DAT(0x0E);
        LCD_WR_DAT(0x09);
        LCD_WR_DAT(0x1B);
        LCD_WR_DAT(0x1e);
        LCD_WR_DAT(0x0f);
       
        LCD_WR_CMD(0xE1);
        LCD_WR_DAT(0x00);
        LCD_WR_DAT(0x22);
        LCD_WR_DAT(0x24);
        LCD_WR_DAT(0x06);
        LCD_WR_DAT(0x12);
        LCD_WR_DAT(0x07);
        LCD_WR_DAT(0x36);
        LCD_WR_DAT(0x47);
        LCD_WR_DAT(0x47);
        LCD_WR_DAT(0x06);
        LCD_WR_DAT(0x0a);
        LCD_WR_DAT(0x07);
        LCD_WR_DAT(0x30);
        LCD_WR_DAT(0x37);
        LCD_WR_DAT(0x0f);
       
        LCD_WR_CMD(0xC0);
        LCD_WR_DAT(0x10);
        LCD_WR_DAT(0x10);
       
        LCD_WR_CMD(0xC1);
        LCD_WR_DAT(0x41);
       
        LCD_WR_CMD(0xC5);
        LCD_WR_DAT(0x00);
        LCD_WR_DAT(0x22);
        LCD_WR_DAT(0x80);
       

       
        LCD_WR_CMD(0x3A); //Interface Mode Control,
        LCD_WR_DAT(0x55);
               
        LCD_WR_CMD(0XB0);//Interface Mode Control
        LCD_WR_DAT(0x00);
        LCD_WR_CMD(0xB1);   //Frame rate 70HZ
        LCD_WR_DAT(0xB0);
        LCD_WR_DAT(0x11);
        LCD_WR_CMD(0xB4);
        LCD_WR_DAT(0x02);   
        LCD_WR_CMD(0xB6); //RGB/MCU Interface Control
        LCD_WR_DAT(0x02);
        LCD_WR_DAT(0x02);
       
        LCD_WR_CMD(0xB7);
        LCD_WR_DAT(0xC6);
        LCD_WR_CMD(0xE9);
        LCD_WR_DAT(0x00);
       
        LCD_WR_CMD(0XF7);   
        LCD_WR_DAT(0xA9);
        LCD_WR_DAT(0x51);
        LCD_WR_DAT(0x2C);
        LCD_WR_DAT(0x82);
       
        LCD_WR_CMD(0x11);
        delay_ms(120);
        LCD_WR_CMD(0x29);

//************* Start Initial Sequence **********//               
        //设置LCD属性参数
        //LCD_SetParam();//设置LCD参数       
        LCD_BL=1;//点亮背光              
//*************2.4inch ILI9341初始化**********//
//LCD_WR_CMD(0x28); //display off 关显示
//delayms(20);
//LCD_WR_CMD(0xCF); LCD_WR_DAT(0x00); LCD_WR_DAT(0xD9); LCD_WR_DAT(0x30); //0xD9/0xC1
//LCD_WR_CMD(0xED); LCD_WR_DAT(0x64); LCD_WR_DAT(0x03); LCD_WR_DAT(0x12); LCD_WR_DAT(0x81);
//LCD_WR_CMD(0xE8); LCD_WR_DAT(0x85); LCD_WR_DAT(0x10); LCD_WR_DAT(0x7A);
//LCD_WR_CMD(0xCB); LCD_WR_DAT(0x39); LCD_WR_DAT(0x2C); LCD_WR_DAT(0x00); LCD_WR_DAT(0x34); LCD_WR_DAT(0x02);
//LCD_WR_CMD(0xF7); LCD_WR_DAT(0x20);
//LCD_WR_CMD(0xEA); LCD_WR_DAT(0x00); LCD_WR_DAT(0x00);
//LCD_WR_CMD(0xC0); LCD_WR_DAT(0x1B); //Power control //VRH
//LCD_WR_CMD(0xC1); LCD_WR_DAT(0x12); //Power control //SAP;BT 0x01
//LCD_WR_CMD(0xC5); LCD_WR_DAT(0x08); LCD_WR_DAT(0x26);//VCM control //30 //30
//LCD_WR_CMD(0xC7); LCD_WR_DAT(0XB7); //VCM control2
//LCD_WR_CMD(0x36); LCD_WR_DAT(0x08); //Memory Access Control
//LCD_WR_CMD(0x3A); LCD_WR_DAT(0x55);
//LCD_WR_CMD(0xB1); LCD_WR_DAT(0x00); LCD_WR_DAT(0x1A);
//LCD_WR_CMD(0xB6); LCD_WR_DAT(0x0A); LCD_WR_DAT(0xA2); // Display Function Control
//LCD_WR_CMD(0xF2); LCD_WR_DAT(0x00); //3Gamma Function Disable
//LCD_WR_CMD(0x26); LCD_WR_DAT(0x01); //Gamma curve selected
//LCD_WR_CMD(0xE0); LCD_WR_DAT(0x0F); LCD_WR_DAT(0x1D); LCD_WR_DAT(0x1A); LCD_WR_DAT(0x0A);//Set Gamma
//                  LCD_WR_DAT(0x0D); LCD_WR_DAT(0x07); LCD_WR_DAT(0x49); LCD_WR_DAT(0X66);
//                  LCD_WR_DAT(0x3B); LCD_WR_DAT(0x07); LCD_WR_DAT(0x11); LCD_WR_DAT(0x01);
//                  LCD_WR_DAT(0x09); LCD_WR_DAT(0x05); LCD_WR_DAT(0x04);      
//LCD_WR_CMD(0xE1); LCD_WR_DAT(0x00); LCD_WR_DAT(0x18); LCD_WR_DAT(0x1D); LCD_WR_DAT(0x02); //Set Gamma
//                  LCD_WR_DAT(0x0F); LCD_WR_DAT(0x04); LCD_WR_DAT(0x36); LCD_WR_DAT(0x13);
//                  LCD_WR_DAT(0x4C); LCD_WR_DAT(0x07); LCD_WR_DAT(0x13); LCD_WR_DAT(0x0F);
//                  LCD_WR_DAT(0x2E); LCD_WR_DAT(0x2F); LCD_WR_DAT(0x05);
//LCD_WR_CMD(0x2A); LCD_WR_DAT(0x00); LCD_WR_DAT(0x00); LCD_WR_DAT(0x00); LCD_WR_DAT(0xEF); //宽度
//LCD_WR_CMD(0x2B); LCD_WR_DAT(0x00); LCD_WR_DAT(0x00); LCD_WR_DAT(0x01); LCD_WR_DAT(0x3F); //高度
//LCD_WR_CMD(0x11);    //Exit Sleep 退出睡眠
//delayms(120);
//LCD_WR_CMD(0x29);    //display on 开显示
//设置LCD属性参数
LCD_SetDIR(LCD_DIR); //设置LCD显示方向 (设置窗口,包含宽高度)
//LCD_BL=1;          //点亮背光   
}
页: [1]
查看完整版本: UART-SPI-LCM_DMA_交替使用下载显示图片例程将LCD8位改为16位后不能正常显示