S3c2440ALCD控制器配置实例

来源:互联网 发布:c语言内嵌汇编 64位 编辑:程序博客网 时间:2024/06/07 02:48

本文所用的是东华TFT液晶屏(WXCAT35),配置为常用的16BPP(5:6:5)模式。


外部引脚信号:

VSYNC: 垂直同步信号,表示扫描1帧的开始

HSYNC: 水平同步信号,表示扫描1行的开始

VCLK:像素时钟信号

VDEN:数据使能信号

VD[23:0] : LCD像素数据输出端口

LEND/STH:行结束信号(TFT)/SEC TFT信号

LCD_LPCOE:SEC TFT OE信号
LCD_LPCREV:SEC TFT REV信号
LCD_LPCREVB:SEC TFT REVB信号


寄存器参数:

VSPW(vertical sync pulse width)       :垂直同步信号的脉宽,单位为1行(Line)的时间

VFPD(vertical front porch)                   : 垂直同步信号的前肩,单位为1行(Line)的时间

VBPD(vertical back porch)                  : 垂直同步信号的后肩,单位为1行(Line)的时间

LINEVAL :垂直显示尺寸-1,即屏竖直方向像素-1

HSPW(horizontal sync pulse width) :水平同步信号的脉宽,单位为1VCLK的时间

HBPD(horizontal back porch)              :水平同步信号的后肩,单位为1VCLK的时间

HFPD(horizontal front porth)                :水平同步信号的前肩,单位为1VCLK的时间

HOZVAL:水平显示尺寸-1,即屏水平方向像素-1

如240x320屏幕: LINEVAL=239 ;   HOZVAL=319

由上图可知:

扫描一帧的时间       =((VSPW+1) + (VBPD+1) + ( LINEVAL+1) + (VFPD+1)) * 时间

扫描一行的时间    =((HSPW+1) + (HSPD+1+(HFPD+1+ (HOZVAL+1)) * VCLK时间

一个VCLK的时间   =HCLK/[2*(CLKVAL+1)]

则:

扫描一帧所需的时间 =[(VSPW+1)+(VBPD+1)+(LINEVAL+1)+(VFPD+1)]* [(HSPW+1)+(HSPD+1)+(HFPD+1)+ (HOZVAL+1)]*HCLK/[2*(CLKVAL+1)]


先看一下TFT屏的操作时序图: 东华TFT型LCD(WXCAT35)时序图

点击看大图                 点击看大图


//2440A寄存器参数

#define MVAL        (13)

#define MVAL_USED    (0)                 //0=each frame   1=rate by MVAL

#define INVVDEN           (1)                 //0=normal       1=inverted

#define BSWP               (0)                 //Byte swap control MSB\LSB设置

#define HWSWP           (1)                 //Half word swap control 高16bit与低16bit交换

#define PNRMODE        (3)                // 设置为TFT屏 11B为TFT模式

#define BPPMODE        (12)              // 设置为16bpp模式


//东华屏参数

#define VBPD              (15-1)            //15垂直同步信号的后肩   参数见 东华pdf

#define VFPD              (12-1)            //12 垂直同步信号的前肩

#define VSPW            (3-1)             //3垂直同步信号的脉宽

#define HBPD              (38-1)            //(22)水平同步信号的后肩

#define HFPD              (20-1)            //(33)水平同步信号的前肩

#define HSPW            (30-1)            //(44)水平同步信号的脉宽

#define CLKVAL_TFT (6)              //由以下计算可知:6


//屏大小

#define LCD_XSIZE_TFT    (240)//屏实际列数

#define LCD_YSIZE_TFT    (320)// 屏实际行数

#define SCR_XSIZE_TFT    (240) //虚拟屏列数

#define SCR_YSIZE_TFT    (320) //虚拟屏行数

#define HOZVAL_TFT   (LCD_XSIZE_TFT-1)

#define LINEVAL_TFT  (LCD_YSIZE_TFT-1)


以上有关东华屏参数设置,在PDF中如下所示:

点击看大图

 因为CLKVAL= int(HCLK/(VCLK*2)-1);

若设置HCLK=100M,其中VCLK即上图的DCL; 先带入经典值:6.4M, 则CLKVAL="int"(100/12.8-1)=int(6.8)=6. 设置CLKVAL为6重新计算VCLK=DCLK=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=t3t6=1.02 mS31.77μs=32

VFPD:确定帧数据传输完成后到下一帧同步信号到来的一段延迟时间,是帧数据传输后延迟时间和行同步时钟间隔宽度的比值,如图,VFPD=t5t6=0.35 ms31.77μs=11

VSPW:确定帧同步时钟脉冲宽度,是帧同步信号时钟宽度和行同步时钟间隔宽度的比值。如图,VSPW=t2t6=0.06 ms31.77μs=2

HBPD:确定行同步信号和行数据传输前的一段延迟时间,描述行数据传输前延迟时间内VCLK脉冲个数,如图,VBPD=t7×VCLK=1.89 μs×25MHz=47

HFPD:确定行数据传输完成后到下一行同步信号到来的一段延迟时间,描述行数据传输后延迟时间内VCLK脉冲个数,如图,HFPD=t9×VCLK=0.94 μs×25 MHz="24"

HSPW:确定行同步时钟脉冲宽度。描述行同步脉冲宽度时间内VCLK脉冲个数,如图,HSPW=3.77μs×25 MHz="94"


S3C2440A LCD控制器配置


1. LCDCON1寄存器

点击看大图 


rLCDCON1=(CLKVAL_TFT<<8)|(MVAL_USED<<7)|(PNRMODE<<5)|(BPPMODE<<1)|0;

其中:CLKVAL_TFT = 6MMODE = MVAL_USED = 0PNRMODE=3BPPMODE=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寄存器

点击看大图


volatile unsigned short LCD_BUFFER[SCR_YSIZE_TFT][SCR_XSIZE_TFT];//全局变量


#define M5D(n)                          ((n) & 0x1fffff)     // To get lower 21bits


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初始化程序:

void Lcd_Init(void)

{

       //引脚功能初始化


       rGPCUP  = 0x00000000;

       rGPCCON = 0xaaaa02a9;        

       rGPDUP  = 0x00000000;

       rGPDCON=0xaaaaaaaa; //Initialize VD[15:8]

       rLCDCON1=(CLKVAL_TFT<<8)|(MVAL_USED<<7)|(PNRMODE<<5)|(BPPMODE<<1)|0;

           // TFT LCD panel,16bpp TFT,ENVID=off(Disable the video output and the LCD control signal)

       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); // MASK LCD Sub Interrupt

       rTCONSEL &= (~7) ;     // Disable LPC3480

       rTPAL=0; // Disable Temp Palette

}


16BPP模式特点:

内存数据格式:

点击看大图 


点击看大图 


 点击看大图


 


数据引脚输出:没有用到的引脚可用作GPIO

点击看大图


系统结构图:



点击看大图 

要显示图像,只要向LCD_BUFFER[]先入像素数据(R(5):G(6):B(5))。LCD控制器会自动通过DMA读取数据送往TFT LCD显示。













原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 穿着超短裤感觉要漏屁股怎么办 台式电脑开机后无法进入系统怎么办 产后两年了肚子肥胖松弛怎么办 在作文中写上自己的名字怎么办 外出玩耍时迷路了你会怎么办 外出玩耍时孩子总喜欢乱跑怎么办? 如果真的物价高的受不了怎么办 每晚要5次真的受不了怎么办 五年级的学生钢笔字写不好怎么办 全麻醉药过后让人产生幻觉怎么办? 网贷小象优品上被别人冒用了怎么办 当你和老人产生冲突时该怎么办 百度网盘会员到期后容量怎么办 一个人不停的给你发视频聊天怎么办 被谋杀后的身后事应该怎么办 社保交了五年被单位辞退怎么办 桅子花叶子变黄叶杆蔫怎么办 薄荷养的都黄了干掉了怎么办 被烟草局没收的烟要是假烟怎么办 干了10年工程不想干了怎么办 在服务行业当服务员干不下去怎么办 高中生晚上偷着跑出去玩怎么办 货车高速忘记过安全检查站了怎么办 u盘上的文件名称乱码了怎么办 暖气管掉进去一点水泥渣怎么办 暗埋在瓷砖下的暖气管漏水怎么办 埋在瓷砖下面的水管漏水怎么办 埋在瓷砖下的水管漏水怎么办 水压太大把水管撑坏了怎么办 无效安装包与系统不兼容怎么办 圣空法师持五戒范戒了怎么办 美航空要是不改中国台湾标志怎么办 淘宝买的东西质量有问题怎么办 天猫618长达20天c店怎么办 新开的淘宝店铺没有生意怎么办 淘宝账号登陆限制用不了花呗怎么办 闲鱼买家签收后说是空盒怎么办 在咸鱼卖东西买家恶意退货怎么办 淘宝联系不上买家物流返回怎么办 换了支付宝绑定手机号退款怎么办啊 淘宝评价错了追评评价错了怎么办