问题如题。在本网站申请了一块2.8寸TFTLCD,驱显遇到问题,无论如何设置240X320屏幕只能刷新240x240,下边的80像素不能驱显。下边是ILI9341LCD驱动芯片的初始化代码[所有能写芯片的代码]和结果照片。开发板为STM32F412ZG-NUCLEO,开发软件为IAR7.3,工程为ARMMbed;开发板的PD_0~PD_15作为LCD数据线,采用RGB565模式,PE_10,PE_12~PE_15作为芯片控制信号线。先谢谢了
//ILI9341 2.8 inch TFT LCD Initial 240X320dotsvoid lcdInit(void){ res=0; wait(0.1); res=1; wait(0.1); b2l(0x01,0); wait(0.1); b2l(0x11,0);//Exit Sleep b2l(0x28,0);//Dsplay Off //b2l(0xCF,0);b2l(0x00,1);b2l(0xC1,1);b2l(0X30,1);//Power control B-3para=00A2F0 //b2l(0xED,0);b2l(0x64,1);b2l(0x03,1);b2l(0X12,1);b2l(0X81,1);//Power on sequence control-4Para=55012301 //b2l(0xE8,0);b2l(0x84,1);b2l(0x11,1);b2l(0x7A,1);//Driver timing control A-3para=84117A-85107A //b2l(0xCB,0);b2l(0x39,1);b2l(0x2C,1);b2l(0x00,1);b2l(0x34,1);b2l(0x02,1);//Power control A-5para=392C003402 //b2l(0xF7,0);b2l(0x20,1);// //b2l(0xEA,0);b2l(0x66,1);b2l(0x00,1);//Driver timing control B-2para=6600 b2l(0xC0,0);b2l(0x27,1);//Power control//00 VRH[5:0]=21 b2l(0xC1,0);b2l(0x10,1);//Power control//SAP[2:0];BT[3:0]=10 //b2l(0xC5,0);b2l(0x3F,1);b2l(0x3C,1);//VCM control//3F//3C //b2l(0xC7,0);b2l(0XB7,1);//nVM VMF[6:0]-VCM control2=C0 b2l(0xE7,0);b2l(0X04,1);//00000 GON DTE GAS-Entry Mode Set=06 b2l(0x36,0);b2l(0x80,1);//MY MX MV ML BGR 00-MHMemory Access Control=00 b2l(0x3A,0);b2l(0x55,1);//COLMOD: Pixel Format Set=55 b2l(0xB1,0);b2l(0x1B,1);b2l(0x1B,1);//Frame Rate Control(In Normal Mode/Full Colors)=001B b2l(0xB6,0);b2l(0x0A,1);b2l(0x82,1);b2l(0x27,1);//Display Function Control=0A8227xx //b2l(0x20,0);//Display Inversion OFF //b2l(0x21,0);//Display Inversion ON //b2l(0x2D,0);//Color Set-9 para //b2l(0x30,0);b2l(0x00,1);b2l(0x00,1);b2l(0x01,1);b2l(0x3F,1);//Partial Area -8 para //b2l(0x33,0);b2l(0xTFA,1);b2l(0xTFA,1);b2l(0xVSA,1);b2l(0xVSA,1);b2l(0xBFA,1);b2l(0xBFA,1);//Vertical Scrolling Definition //b2l(0x34,0);//Tearing Effect Line OFF //b2l(0x35,0);//Tearing Effect Line ON //b2l(0x37,0);b2l(0xVSP,1);b2l(0xVSP,1);//Vertical Scrolling Start Address //b2l(0x38,0);//Idle Mode OFF //b2l(0x39,0);//Idle Mode ON //b2l(0x3C,0);w2l(0x03FF,1);w2l(0x03FF,1);w2l(0x03FF,1);//Write_Memory_Continue-3para //b2l(0x44,0);b2l(0x01,1);b2l(0xFF,1);//Set_Tear_Scanline-2para //b2l(0x45,0);b2l(0x00,1);b2l(0x01,1);b2l(0xFF,1);//Get_Scanline-3para b2l(0x51,0);b2l(0x00,1);//Write Display Brightness-1para b2l(0x53,0);b2l(0x00,1);//00 BCTRL 0 DD BL 00 Write CTRL Display b2l(0x55,0);b2l(0x03,1);//000000 C[1] C[0] Write Content Adaptive Brightness Control b2l(0x5E,0);b2l(0x0F,1);//Write CABC Minimum Brightness b2l(0xB0,0);b2l(0x1A,1);//ByPass_MODE RCM[1] RCM[0]0 VSPL HSPL DPL-EPLRGB Interface Signal Control=40 b2l(0xB1,0);b2l(0x00,1);b2l(0x14,1);//0x14//Frame Rate Control(In Normal Mode/Full Colors)=001B b2l(0xB2,0);b2l(0x00,1);b2l(0x14,1);//0x14//Frame Rate Control(In Idle Mode/8 colors)=001B b2l(0xB3,0);b2l(0x00,1);b2l(0x1B,1);//Frame Rate control (In Partial Mode/Full Colors)=001B b2l(0xB4,0);b2l(0x00,1);//Display Inversion Control=02 b2l(0xB5,0);b2l(0x7F,1);b2l(0x7F,1);b2l(0x1F,1);b2l(0x1F,1);//Blanking Porch Control=02020A14 //b2l(0xB8,0);b2l(0xCC,1);//Backlight Control 2=CC //b2l(0xB9,0);b2l(0x04,1);//Backlight Control 3=04 //b2l(0xBA,0);b2l(0x65,1);//Backlight Control 4=65 //b2l(0xBC,0);b2l(0x44,1);//Backlight Control 5=44 //b2l(0xBE,0);b2l(0x0F,1);//Backlight Control 7=0F //b2l(0xBF,0);b2l(0x00,1);//Backlight Control 8=00 //b2l(0xF2,0);b2l(0x00,1);//3Gamma Function Disable b2l(0x26,0);//Gamma curve selected b2l(0x01,1); b2l(0xE0,0);//Set Gamma-15 para b2l(0x0F,1);b2l(0x2A,1);b2l(0x28,1);b2l(0x08,1);b2l(0x0E,1); b2l(0x08,1);b2l(0x54,1);b2l(0XA9,1);b2l(0x43,1);b2l(0x0A,1); b2l(0x0F,1);b2l(0x00,1);b2l(0x00,1);b2l(0x00,1);b2l(0x00,1); b2l(0XE1,0);//Set Gamma-15 para b2l(0x00,1);b2l(0x15,1);b2l(0x17,1);b2l(0x07,1);b2l(0x11,1); b2l(0x06,1);b2l(0x2B,1);b2l(0x56,1);b2l(0x3C,1);b2l(0x05,1); b2l(0x10,1);b2l(0x0F,1);b2l(0x3F,1);b2l(0x3F,1);b2l(0x0F,1); //b2l(0xE2,0);b2l(0xFF,1);b2l(0xFF,1);b2l(0xFF,1);//Digital Gamma Control 1-3para //b2l(0xE3,0);b2l(0xFF,1);b2l(0xFF,1);b2l(0xFF,1);//Digital Gamma Control 2-3para b2l(0x2A,0);b2l(0x00,1);b2l(0x00,1);b2l(0x00,1);b2l(0xEF,1);//Page Address Set b2l(0x2B,0);b2l(0x00,1);b2l(0x00,1);b2l(0x01,1);b2l(0x3F,1);//Column Address Set b2l(0xF6,0);b2l(0x01,1);b2l(0x00,1);b2l(0x00,1);//Interface Control-3para=010000 //b2l(0x0B,0);b2l(0x00,1);b2l(0x20,1);// //b2l(0x12,0);//Partial Mode ON b2l(0x13,0);//Normal Display Mode ON b2l(0x29,0);//display on}
我觉得吧,你会不会是初始化的时候横屏、竖屏模式设置反了。
我之前没注意横屏竖屏弄反了也是这种情况
谢谢各位,先解释一下:1. 手头没有原子的板子;2. 驱动没有问题,除了少那底部的,其它驱显完全正常;3. 接线上应该没有问题,仔细对过,所采用的数据线线序完全正确,信号线也没有被占用的。
实际上,我完全采用过原子案例中提供的初始化代码,结果一样,才参照手册将所有能写到LCD寄存器的命令都罗列测试,结果照旧,还是只能显示240x240的上半边,底下的无法驱显刷色。
刷屏是逐点改色,全部改完是320X240,16位的GRAM[RGB=565],这个应该不会错的。我还在尽力测试中。再次表示感谢。
谢谢!LCD本身的芯片支持的,与这无关。对此问题的再讨论如下:
经过测试,可能此LCD的控制芯片有问题或模块有问题,分析原因:
当写屏的地址起始和终止反过来填入就可以刷满屏了,但在其他的设置中就完全不对了。比如设置x=0x0000~0x0008,y=0x0000~0x0008,写一个数据;结果仅仅在顶部显示为一行,而不是一个色块!
放弃继续实验和讨论了。
玩过几乎所有的各种TFTLCD驱显芯片,从1.5寸~4.3寸的都有,此次第一次遇上这种的,很是沮丧。
非常感谢
各位老师!真晕菜,原子的代码原封不动的照搬过来试过,问题照旧!连线一根一根用万用表和示波器测过,不会有问题的,不然不会反制地址也可刷满屏。我已在前边说过了。