友善之臂mini2440配套的X35 LCD显示屏可谓是比较蛋疼,说是sony的,但是没有找到相关手册,从裸机编写程序就一直有问题。为了让以后的广大同胞少走弯路,在此将我遇到的一些问题做一些总结:
相关的裸板和驱动程序见链接:http://t.cn/RyPU3dV
LCD pin : GPC,GPD,GPG :GPD[0:15] = VD[8:23] ;GPC[8:15] = VD[0:7] ; GPG4为LCD_PWREN引脚,X35 LCD没有背光引脚,MINI2440的背光电路是通过GP4引脚来开启的。
GPC[0:7]即为LCD控制引脚,设置为LCD模式即可GPC
LCD控制器寄存器介绍:
重点的是 :
1) (VBPD,VFPD,HBPD,HFPD需要根据自己的屏幕进行调整,我当时就是一点一点的调整到最佳的)
2) VDEN 一定要翻转,否则无图像
寄存器介绍如下,按照下面操作进行就没问题了。
/*bit[17:8] : VCLK = HCLK / [(CLKVAL+1) x 2]
* (10MHZ) 100ns = 100MHZ / [(CLKVAL+1) * 2]
* CLKVAL = 4;
* bit[6:5] :PNRMODE = TFTLCD ;
* bit[4:1] :BPPMODE = 0b1100 (16BPP)
* bit[0] : 0 disable the video output and the LCD control signal....
*/
lcd_regs->lcdcon1 = (4<<8) | (3<<5) | (0x0c<<1) ;
/*
* 垂直方向的时间参数
* bit[31 : 24] : VBPD, VSYNC 之后再过多长时间才能发出第一行数据,LCD手册 T0 - T2 -T1
* VBPD = 0
* bit[23 : 14] : 多少行,320 行, LINEVAL = 320 - 1 = 319
* bit[13 : 6 ] : VFPD 发出最后一行数据之后,再过多长时间才能发出VSYNC,LCD 手册T2 - T5
* VFPD = 0
* bit[5 : 0 ] :VSPW ,VSYNC信号的脉冲宽度,LCD手册= 1,所以VSPW = 1-1=0
* VSPW = 9;
*
*/
lcd_regs->lcdcon2 = (0<<24) | (319<<14) | (0<<6) | (9<<0);
/*
* 水平方向的时间参数
* bit[25:19]: HBPD, HSYNC 之后再过多长时间才能发出第一个像素的数据T0 - T2 -T1
* HBPD = 25
* bit[18:8] : 多少列,240 ,HOZVAL = 240 -1 =239
* bit[7 :0] : HFPD =0
*
*/
lcd_regs->lcdcon3 = (25<<19) | (239<<8) | (0<<0);
/*
* 水平方向时间参数
* bit[7:0] : HSPW,HSYNC信号的脉冲宽度,T7-1
*/
lcd_regs->lcdcon4 = 4;
/*
* 信号的极性
* bit[11] : 1 = 565 format
* bit[10] : 1 = The video data is fetched at VCLK rising edge 此处有差别
* bit[ 9] : 1 = HSYNC 信号要反转, 即低电平有效
* bit[ 8] : 1 = VSYNC 信号要反转, 即低电平有效
* bit[ 6] : 1 = VDEN 反转 一定要翻转,否则无图像
* bit[ 0] : 1 = BSWP: HWSWP = 0:1 2440手册 P413
*
*/
lcd_regs->lcdcon5 = (1<<11) | (0<<10) | (1<<9) | (1<<8) |(1 << 6) | (1<<0);
lcdsaddr1 -3 为显存寄存器,用来存储将要在LCD上显示的信息。