2440LCD控制器详细配置.docx
- 文档编号:1619555
- 上传时间:2023-05-01
- 格式:DOCX
- 页数:106
- 大小:471.54KB
2440LCD控制器详细配置.docx
《2440LCD控制器详细配置.docx》由会员分享,可在线阅读,更多相关《2440LCD控制器详细配置.docx(106页珍藏版)》请在冰点文库上搜索。
2440LCD控制器详细配置
2440LCD控制器详细配置
2009-07-2713:
12:
03
S3c2440ALCD控制器配置实例
本文所用的是东华TFT液晶屏(WXCAT35),配置为常用的16BPP(5:
6:
5)模式。
先看一下TFT屏的操作时序图:
图一一般TFT型LCD时序图
外部引脚信号:
VSYNC:
垂直同步信号,表示扫描1帧的开始。
HSYNC:
水平同步信号,表示扫描1行的开始。
VDEN:
数据使能信号。
VD[23:
0]:
LCD像素数据输出端口。
VCLK:
像素时钟信号。
寄存器参数:
VSPW:
垂直同步信号的脉宽,单位为1行(Line)的时间。
VFPD:
垂直同步信号的前肩,单位为1行(Line)的时间。
VBPD:
垂直同步信号的后肩,单位为1行(Line)的时间。
LINEVAL:
垂直显示尺寸-1,即屏行宽-1。
HBPD:
水平同步信号的后肩,单位为1VCLK的时间。
HFPD:
水平同步信号的前肩,单位为1VCLK的时间。
HSPW:
水平同步信号的脉宽,单位为1VCLK的时间。
HOZVAL:
水平显示尺寸-1,即屏列宽-1。
由上图可知:
扫描一帧所需的时间:
=((VSPW+1)+(VBPD+1)+(LINEVAL+1)+(VFPD+1))个行时间。
扫描一行所所需的时间:
=((HSPW+1)+(HSPD+1)+(HFPD+1)+(HOZVAL+1))个VCLK时间。
而一个VCLK时间由LCD寄存器LCDCON1内的CLKVAL决定:
=HCLK/[2*(CLKVAL+1)]
因此扫描一帧所需的时间:
T=[(VSPW+1)+(VBPD+1)+(LINEVAL+1)+(VFPD+1)]*[(HSPW+1)+(HSPD+1)+(HFPD+1)+(HOZVAL+1)]*HCLK/[2*(CLKVAL+1)]
即帧频率为:
1/T
注意:
以上的时序图为一般TFT的时序图。
实际TFT对应的时序图时序可能不一样(比如极性,符号等)。
下文中详述。
图2东华TFT型LCD(WXCAT35)时序图
//2440A寄存器参数
#defineMVAL (13)
#defineMVAL_USED (0) //0=eachframe 1=ratebyMVAL
#defineINVVDEN
(1) //0=normal 1=inverted
#defineBSWP (0) //Byteswapcontrol
#defineHWSWP
(1) //Halfwordswapcontrol
#definePNRMODE (3) //设置为TFT屏
#defineBPPMODE (12) //设置为16bpp模式
//东华屏参数
#defineVBPD (3-1) //12垂直同步信号的后肩 参数见东华pdf
#defineVFPD (14-1) //4垂直同步信号的前肩
#defineVSPW (15-1) //5垂直同步信号的脉宽
#defineHBPD (38-1) //(22)水平同步信号的后肩
#defineHFPD (20-1) //(33)水平同步信号的前肩
#defineHSPW (30-1) //(44)水平同步信号的脉宽
#defineCLKVAL_TFT(6)
//屏大小
#defineLCD_XSIZE_TFT (240)//屏实际列数
#defineLCD_YSIZE_TFT (320)//屏实际行数
#defineSCR_XSIZE_TFT (240)//虚拟屏列数
#defineSCR_YSIZE_TFT (320)//虚拟屏行数
#defineHOZVAL_TFT (LCD_XSIZE_TFT-1)
#defineLINEVAL_TFT (LCD_YSIZE_TFT-1)
以上有关东华屏参数设置,在PDF中如下所示:
我的板子设置HCLK=100M因此CLKVAL=int(HCLK/(VCLK*2)-1),其中VCLK即上图的DCLK=6.4M,CLKVAL="int"(100/12.8-1)=int(6.8)=6
因此VCLK=HCLK/[(CLKVAL+1)x2]=100/2*(6+1)=7.14MHz
VFRAME=HCLK/[(CLKVAL+1)x2]/{(VSPW+1+VBPD+1+LCD_YSIZE_TFT+VFPD+1)*(HSPW+1+HSPD+1+HFPD+1+LCD_XSIZE_TFT)}=64.4HZ
注意:
有些液晶屏给的参数单位可能不一样,需要自己计算。
方法如下:
VBPD:
确定帧同步信号和帧数据传输前的一段延迟时间,是帧数据传输前延迟时间和行同步时钟间隔宽度的比值,如图,VBPD=t3/t6=1.02mS/31.77μs=32。
VFPD:
确定帧数据传输完成后到下一帧同步信号到来的一段延迟时间,
是帧数据传输后延迟时间和行同步时钟间隔宽度的比值,如图,VFPD=t5/t6=0.35ms/31.77μs=11。
VSPW:
确定帧同步时钟脉冲宽度,是帧同步信号时钟宽度和行同步时钟间隔宽度的比值。
如图,VSPW=t2/t6=0.06ms/31.77μs=2。
HBPD:
确定行同步信号和行数据传输前的一段延迟时间,描述行数据传输前延迟时间内VCLK脉冲个数,如图,VBPD=t7×VCLK=1.89μs×25MHz=47。
HFPD:
确定行数据传输完成后到下一行同步信号到来的一段延迟时间,描述行数据传输后延迟时间内VCLK脉冲个数,如图,HFPD=t9×VCLK=0.94μs×25MHz="24"。
HSPW:
确定行同步时钟脉冲宽度。
描述行同步脉冲宽度时间内VCLK脉冲个数,如图,HSPW=3.77μs×25MHz="94"。
S3C2440ALCD控制器配置
1.LCDCON1寄存器
rLCDCON1=(CLKVAL_TFT<<8)|(MVAL_USED<<7)|(PNRMODE<<5)|(BPPMODE<<1)|0;
其中:
CLKVAL_TFT=6;MMODE=MVAL_USED=0;PNRMODE=3;BPPMODE=12。
ENVID=0(关闭视屏输出,需要开启显示是设为1)。
2.LCDCON2寄存器
rLCDCON2=(VBPD<<24)|(LINEVAL_TFT<<14)|(VFPD<<6)|(VSPW);相关值见上文宏定义
3.LCDCON3寄存器
rLCDCON3=(HBPD<<19)|(HOZVAL_TFT<<8)|(HFPD);相关值见上文宏定义
4.LCDCON4寄存器
rLCDCON4=(MVAL<<8)|(HSPW);相关值见上文宏定义
5.LCDCON5寄存器
rLCDCON5=(1<<11)|(1<<10)|(1<<9)|(1<<8)|(0<<7)|(0<<6)|(1<<3) |(BSWP<<1)|(HWSWP);关于信号的极性图二(东华TFT型LCD(WXCAT35)时序图)
其中BSWP与数据存放有关见下文。
6.LCDSADDR1寄存器
volatileunsignedshortLCD_BUFFER[SCR_YSIZE_TFT][SCR_XSIZE_TFT];//全局变量
#defineM5D(n) ((n)&0x1fffff) //Togetlower21bits
rLCDSADDR1=(((U32)LCD_BUFFER>>22)<<21)|M5D((U32)LCD_BUFFER>>1);
7.LCDSADDR2寄存器
rLCDSADDR2=M5D(((U32)LCD_BUFFER+(SCR_XSIZE_TFT*LCD_YSIZE_TFT*2))>>1);
//单位为字节一个点16bit=2字节
8.LCDSADDR3寄存器
rLCDSADDR3=(((SCR_XSIZE_TFT-LCD_XSIZE_TFT)/1)<<11)|(LCD_XSIZE_TFT/1);
//1=*16bit/半字=16/16
LCD初始化程序:
voidLcd_Init(void)
{
//引脚功能初始化
rGPCUP =0x00000000;
rGPCCON=0xaaaa02a9;
rGPDUP =0x00000000;
rGPDCON=0xaaaaaaaa;//InitializeVD[15:
8]
rLCDCON1=(CLKVAL_TFT<<8)|(MVAL_USED<<7)|(PNRMODE<<5)|(BPPMODE<<1)|0;
//TFTLCDpanel,16bppTFT,ENVID=off(DisablethevideooutputandtheLCDcontrolsignal)
rLCDCON2=(VBPD<<24)|(LINEVAL_TFT<<14)|(VFPD<<6)|(VSPW);
rLCDCON3=(HBPD<<19)|(HOZVAL_TFT<<8)|(HFPD);
rLCDCON4=(MVAL<<8)|(HSPW);
rLCDCON5=(1<<11)|(1<<10)|(1<<9)|(1<<8)|(0<<7)|(0<<6)|(1<<3) |(BSWP<<1)|(HWSWP);
//5:
6:
5
rLCDSADDR1=(((U32)LCD_BUFFER>>22)<<21)|M5D((U32)LCD_BUFFER>>1);
rLCDSADDR2=M5D(((U32)LCD_BUFFER+(SCR_XSIZE_TFT*LCD_YSIZE_TFT*2))>>1);//单位为字节一个点16bit=2字节
rLCDSADDR3=(((SCR_XSIZE_TFT-LCD_XSIZE_TFT)/1)<<11)|(LCD_XSIZE_TFT/1);//1=*16bit/半字=16/16
rLCDINTMSK|=(3);//MASKLCDSubInterrupt
rTCONSEL&=(~7); //DisableLPC3480
rTPAL=0;//DisableTempPalette
}
16BPP模式特点:
内存数据格式:
数据引脚输出:
没有用到的引脚可用作GPIO
系统结构图:
要显示图像,只要向LCD_BUFFER[]先入像素数据(R(5):
G(6):
B(5))。
LCD控制器会自动通过DMA读取数据送往TFTLCD显示。
这里介绍一个Bmp2RGB.exe,次程序可将bmp图转换为RGB(5:
6:
5)格式的c格式的数组。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2440 LCD 控制器 详细 配置