主题 : Tiny6410——H43屏 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 73747
精华: 0
发帖: 32
金钱: 170 两
威望: 34 点
贡献值: 0 点
综合积分: 64 分
注册时间: 2012-07-13
最后登录: 2013-07-24
楼主  发表于: 2012-12-04 22:43

 Tiny6410——H43屏

驱动了一下H43屏,发现了几个问题,驱动代码如下
复制代码
  1. volatile unsigned int LCD_BUFFER[272][480];
  2. unsigned int addr = (unsigned int)LCD_BUFFER;
  3. void lcd_init(){
  4.     GPECON = 0x00011111;    //GPE0: for LCD Backlight ON-OFF. GPE1~4 is GPIO.
  5.     GPEDAT =  0x00000001;    //Backlight ON  (some LCD(3.5) need it ,but NEC 4.3 not)
  6.     GPEPUD = 0x00000000;
  7.     //GPFCON = 0x96AAAAAA;    //PWM1: for Backlight Dimming. GPF13 is USB_PWR. GPF0~12 is CAM I/F.
  8.                     // PWM0 Control Buzzer,but now we config it as OUTPUT!!!
  9.     //GPFDAT =  0x00002000;    //USB_PWR ON . Buzzer OFF .
  10.     //GPFPUD = 0x00000000;
  11.     GPFCON &= ~(0x3<<30);
  12.     GPFCON |= 0x2<<30;
  13.     GPFPUD = 0;
  14.     GPICON = 0xAAAAAAAA;
  15.     GPIPUD = 0x00000000;
  16.     GPJCON = 0x00AAAAAA;
  17.     GPJPUD = 0x00000000;
  18.     
  19.     SPCON &= ~(0x3);
  20.     SPCON |= 1;
  21.     MIFPCON &= ~(1<<3);
  22.     
  23.     //VIDCON0 = (0<<29)|(0<<26)|(0<<17)|(0<<16)|(9<<6)|(0<<5)|(1<<4)|(0<<2);
  24.              //(0<<29)|(0<<26)|(0<<17)|(1<<16)|(5<<6)|(0<<5)|(1<<4)|(0<<2);
  25.     //VIDCON1 = 1<<7;//1=RGB 类型LCD 设备在VCLK 上升沿得到视频数据
  26.     VIDCON0 = (1<<4)|(9<<6);
  27.     VIDCON1 = (1<<5)|(1<<6)|(1<<7);
  28. //+设置屏的时序
  29.     //VIDTCON0 = (0x2<<16)|(0x3<<8)|(0x02<<0);
  30.     //VIDTCON1 = (0x2d<<16)|(0x04<<8)|(0x06<<0);
  31.     //VIDTCON2 = (271<<11)|(479<<0);
  32.     VIDTCON0 = (1<<16)|(0<<8)|(0<<0);
  33.     VIDTCON1 = (39<<16)|(0<<8)|(0<<0);
  34.     VIDTCON2 = (271<<11)|(479<<0);
  35. //-
  36.     WINCON0 = 8<<2;//(1<<17)|(3<<2);//窗口格式控制 0011=8BPP(palletized)
  37. //+VIDOSDxA ,VIDOSDxB:窗口位置控制
  38.     VIDOSD0A = (0<<11)|(0);
  39.     VIDOSD0B = (479<<11)|(271<<0);
  40.     VIDOSD0C = (((480*272)&0xFFFFFF)<<0);
  41. //-
  42.     VIDW00ADD0B0 = ((addr>>24)<<24)|(addr&0xffffff);
  43.     VIDW00ADD1B0 = (addr&0xffffff) + 480*272*4;
  44.     VIDW00ADD2 = (0<<13)|(480);
  45.     DITHMODE=(1<<5)|(1<<3)|(1<<1);
  46. //+开显示
  47.     VIDCON0 |= 3;
  48.     WINCON0 |= 1;
  49. //-    
  50. }

现象:能正常在屏幕上画线等操作,但是丢失一列,第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,设置为任何值都一样的效果,对屏幕没有任何影响。