历史上的今天
返回首页

历史上的今天

今天是:2025年01月07日(星期二)

正在发生

2019年01月07日 | S3c2440ALCD控制器配置实例

2019-01-07 来源:eefocus

本文所用的是东华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=t3/t6=1.02 mS/31.77μs=32。


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


VSPW:确定帧同步时钟脉冲宽度,是帧同步信号时钟宽度和行同步时钟间隔宽度的比值。如图,VSPW=t2/t6=0.06 ms/31.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 = 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寄存器


点击看大图


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)<


 


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)<

       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显示。


推荐阅读

史海拾趣

FCT Electronics公司的发展小趣事

随着电子行业的快速发展,市场竞争日益激烈。为了应对挑战,FCT Electronics不断加大研发投入,推出了一系列具有自主知识产权的新产品。同时,公司还加强了与高校、研究机构的合作,引进了一批高素质的人才,为公司的持续发展注入了新的活力。

Abbotec Incorporated公司的发展小趣事

随着技术的不断成熟,Abbotec开始将目光投向国际市场。公司积极参与国际电子展会,与多家国外企业建立了合作关系。通过与这些企业的合作,Abbotec不仅将产品销往全球各地,还引进了一些先进的生产技术和管理经验,进一步提升了自身的竞争力。

Dawning Precision Co Ltd公司的发展小趣事

随着市场竞争的加剧,Dawning意识到只有不断创新才能在行业中立于不败之地。公司加大了对研发的投入,聘请了一批在电子制造领域具有丰富经验的专家。在专家团队的带领下,Dawning成功开发出了多款具有自主知识产权的高精度电子产品,这些产品不仅在性能上领先同行,而且在价格上也更具竞争力。这些创新产品的推出,极大地提升了Dawning在市场上的竞争力。

灿科盟(Ckmtw)公司的发展小趣事

为了提升产品质量,增强客户信任,灿科盟在2008年成功通过了ISO9001:2000版质量管理体系认证。这一认证标志着公司在质量管理方面达到了国际标准,也为公司赢得了更多客户的青睐。此后,公司继续加强质量管理体系建设,不断提升产品质量和服务水平。

CBM_America_Corporation公司的发展小趣事

随着科技的快速发展,CBM_America_Corporation意识到传统电子产品市场的饱和趋势。为了保持竞争力,公司决定进行创新转型,将业务重心转向智能家居和物联网领域。通过研发智能家居设备和物联网解决方案,CBM成功打开了新的市场空间。同时,公司还积极拓展多元化业务,涉及到了电子支付、数据安全等领域,进一步提升了公司的综合实力。

Dino-Lite公司的发展小趣事

Dino-Lite公司自创立之初,就专注于数字显微镜技术的研发与创新。公司研发团队不断探索新技术,将传统显微镜与现代数字技术相结合,成功推出了一系列高性能、易用性强的Dino-Lite数字显微镜产品。这些产品以其高清画质、便捷操作和广泛适用性,迅速赢得了市场的认可。

随着技术的不断进步,Dino-Lite公司不断推出新产品,满足了不同行业对数字显微镜的需求。例如,公司针对医疗领域推出了高分辨率、低光环境下的专业显微镜,为医疗诊断和治疗提供了有力支持;同时,针对教育行业推出了性价比高的入门级产品,让更多的学生和老师能够接触和使用到先进的显微镜技术。

问答坊 | AI 解惑

高手看看显示程序哪里出错啊

;--------------------------------------- ;  四位共阳LED动态扫描显示程序 ;  P0为段码口,P2为位选口(低电平有效) ;  参数为要显示的字符串指针 ;---------------------------------------    & ...…

查看全部问答>

美资公司LSI上海研发中心诚聘 Test Engineer

美资公司LSI上海研发中心诚聘 Test Engineer 内部推荐,有意者请将中英文简历发送至:asic_tapeout@hotmail.com Test Engineer DESCRIPTION OF DUTIES IN ADDITION TO THOSE IN JOB DESCRIPTION: - To support prototype and production relea ...…

查看全部问答>

使用串口老出现ttys input overruns!

使用串口老出现ttys input overruns!有谁知道!如何解决!或是什么问题引起的!谢谢了先!…

查看全部问答>

请教怎样把很大的数组放到2407的FLASH中?!

我用到液晶显示,但是由于液晶本身的CGRAM=2K远远不够存入我要显示的自定义字符数组(大约有三百个中文字,按照16*16*300来计算,要用到将近10K的空间.所以我想把这些数组放到FLASH中,请教应该如何设置才能实现此功能? 万分感谢!…

查看全部问答>

求证:"TI MSP430大学计划教材"中,5V的液晶显示器可与MSP430的I/O口直接相连,可以吗???

"TI MSP430大学计划教材"-"MSP430系列16位超低功耗单片机原理与应用"一书中,第306页和309页的电路图均表示5V的液晶显示器可与MSP430的I/O口直接相连,可以吗???,这对我很重要,因我要将51系统改为用MSP430.…

查看全部问答>

C51增强型单片机程序集

非常好的程序集,与大家分享,不要错过啊,不学习没道理!呵呵,祝大家好运!…

查看全部问答>

TI送的MSP430软件开发指南的P66页的这周期计算为什么要乘以2呢?我觉得应该不要呀

TI送的MSP430软件开发指南的P66页的这周期计算为什么要乘以2呢?我觉得应该不要呀!书上写的是增计数模式周期应该是CCR0/f呀!求指导 …

查看全部问答>

【晒样片】慷慨TI样片申请之TPS65980

本帖最后由 风雪天殇 于 2014-7-25 15:28 编辑 前几天看到这个活动,这种鼠标一点就有奖励神马的最有爱了,果断点了链接,本着申请不浪费的原则,选了个TPS65980,虽然仍有很大可能用不上....当然那个SN74LVC1G08也有可能用得上,但是太便宜了的 ...…

查看全部问答>

可变周期脉冲发生器的设计

信号为50mhz固定,要用分频来实现不同的型号输入。 设计一个周期、占空比可调的脉冲发生器。脉冲产生过程中,可对脉冲的周期、高电平和低电平的延续时间进行调整;调整步长自定;并同时显示已经输出的脉冲的个数,若脉冲个数达到了数码管显示的极 ...…

查看全部问答>

今年题目预测有可能出现红外吗?

今年题目预测有可能出现红外吗? …

查看全部问答>