驱动了一下H43屏,发现了几个问题,驱动代码如下
复制代码- volatile unsigned int LCD_BUFFER[272][480];
- unsigned int addr = (unsigned int)LCD_BUFFER;
- void lcd_init(){
- GPECON = 0x00011111; //GPE0: for LCD Backlight ON-OFF. GPE1~4 is GPIO.
- GPEDAT = 0x00000001; //Backlight ON (some LCD(3.5) need it ,but NEC 4.3 not)
- GPEPUD = 0x00000000;
- //GPFCON = 0x96AAAAAA; //PWM1: for Backlight Dimming. GPF13 is USB_PWR. GPF0~12 is CAM I/F.
- // PWM0 Control Buzzer,but now we config it as OUTPUT!!!
- //GPFDAT = 0x00002000; //USB_PWR ON . Buzzer OFF .
- //GPFPUD = 0x00000000;
- GPFCON &= ~(0x3<<30);
- GPFCON |= 0x2<<30;
- GPFPUD = 0;
- GPICON = 0xAAAAAAAA;
- GPIPUD = 0x00000000;
- GPJCON = 0x00AAAAAA;
- GPJPUD = 0x00000000;
-
- SPCON &= ~(0x3);
- SPCON |= 1;
- MIFPCON &= ~(1<<3);
-
- //VIDCON0 = (0<<29)|(0<<26)|(0<<17)|(0<<16)|(9<<6)|(0<<5)|(1<<4)|(0<<2);
- //(0<<29)|(0<<26)|(0<<17)|(1<<16)|(5<<6)|(0<<5)|(1<<4)|(0<<2);
- //VIDCON1 = 1<<7;//1=RGB 类型LCD 设备在VCLK 上升沿得到视频数据
- VIDCON0 = (1<<4)|(9<<6);
- VIDCON1 = (1<<5)|(1<<6)|(1<<7);
- //+设置屏的时序
- //VIDTCON0 = (0x2<<16)|(0x3<<8)|(0x02<<0);
- //VIDTCON1 = (0x2d<<16)|(0x04<<8)|(0x06<<0);
- //VIDTCON2 = (271<<11)|(479<<0);
- VIDTCON0 = (1<<16)|(0<<8)|(0<<0);
- VIDTCON1 = (39<<16)|(0<<8)|(0<<0);
- VIDTCON2 = (271<<11)|(479<<0);
- //-
- WINCON0 = 8<<2;//(1<<17)|(3<<2);//窗口格式控制 0011=8BPP(palletized)
- //+VIDOSDxA ,VIDOSDxB:窗口位置控制
- VIDOSD0A = (0<<11)|(0);
- VIDOSD0B = (479<<11)|(271<<0);
- VIDOSD0C = (((480*272)&0xFFFFFF)<<0);
- //-
- VIDW00ADD0B0 = ((addr>>24)<<24)|(addr&0xffffff);
- VIDW00ADD1B0 = (addr&0xffffff) + 480*272*4;
- VIDW00ADD2 = (0<<13)|(480);
- DITHMODE=(1<<5)|(1<<3)|(1<<1);
- //+开显示
- VIDCON0 |= 3;
- WINCON0 |= 1;
- //-
- }
|
现象:能正常在屏幕上画线等操作,但是丢失一列,第0列看不到,而且确定上、下、右三侧均以达到正确问题,即
(0,0)~(479,0):正常
(0,0)~(0,271):看不到
(479,0)~(479,271):正常
(0,271)~(479,271):正常
并且
(480,0)~(480,271):看不到
问题1:画线时线(0,0)~(0,271),看不到,但是画(1,0)~(1,271)可以看到(怀疑是HBP等参数设置不对,但是修改HBP参数无任何效果)。
问题2:VIDTCON0~VIDTCON2只要不设置为0,设置为任何值都一样的效果,对屏幕没有任何影响。