s3c2440裸机-LCD编程-2-LCD控制器

发布时间:2024-07-03  

1.LCD控制器框图



从上图看出,S3C2440 LCD控制器用于传输视频数据并且生成必要的控制信号,如VFRAME,VLINE,VCLK,VM等。除了控制信号,S3C2440还有视频数据端口,即VD [23:0]。通过设置REGBANK(寄存器组),LCDCDMA会自动(无需CPU参与)把内存上FrameBuffer里的数据,通过VIDPRCS发送到引脚VD[23:0]数据总线上,再配合VIDEOMUX引脚的控制信号,正确的显示出来。

REGBANK:具有17个可编程寄存器组和256x16调色板存储器,用于配置LCD控制器。

TIMEGEN:产生控制信号,例如 VSYNC、HSYNC、VCLK等信号

LCDCDMA:可以自动从FrameBuff中把数据copy出来。

VIDPRCS:从LCDCDMA接收视频数据,将数据输出到VD[23:0]数据总线上。

那么总结LCD控制器主要功能如下:

1. 取:从内存(FrameBuffer)取出某个像素的数据(之后需要把FrameBuffer地址、BPP、分辨率告诉LCD控制器)

2. 发:配合其它信号把FrameBuffer中的数据发给LCD;(那么需要设置LCD控制器时序、设置引脚极性)


2.数据存储格式

我们可以配置寄存器的BSWP、HWSWP来设置Framebuff中的像素存储格式。

24bpp的数据格式:



从图中可以看到24bpp的像素,在lcd控制器的VD[7:0]表示BLUE, VD[15:8]表示GREEN,VD[23:16]表示RED。在内存中的FrameBuffer中每一个像素占据4个字节,当BPP24BL=0时,低24位为颜色数据,当BPP24BL=1时,高24位为颜色数据。

16bpp的数据格式:



也可以看到16bpp的像素,在内存中的FrameBuffer中每一个像素占据2个字节,HWSWP用来设置像素数据的存放方式。

再看下LCD控制器的VD引脚输出情况,可以看到16bpp时分5:6:5和5:5:5:i两种数据格式。当5:6:5模式时,VD[7:3]表示BLUE, VD[15:10]表示Green数据,VD[23:19]表示RED。当5:5:5:i模式时,VD[7:3]表示BLUE, VD[15:11]表示Green,VD[23:19]表示RED。其中i表示透明度。

8bpp的数据格式:



上一节介绍了LCD硬件上只有R1-R5、G0-G5、B1-B5与SOC相连,5+6+5=16BPP,所以LCD上每个像素就只占据16位数据。那么当我们的Frame buffer中是8BPP颜色数据时,是如何把颜色数据填充到LCD上的呢?

用调色板

3.调色板

S3C2440A 中的 TFT LCD 控制器支持 1、2、4 或 8bpp调色显示(伪彩色)和16、24bpp无调色显示(真彩色)。S3C2440A 可以支持 256 色调色板给各种色彩映射的选择,以提供灵活操作给用户。

假如是16BPP的数据,LCD控制器从FB取出16bit数据,显示到LCD上,如下图所示:



那么当8BPP的数据时,就需要用到调色板,调色板里存放了256个16bit的数据,FB(frame buffer)只存放每个像素的索引,根据索引去调色板找到对应的数据传给LCD控制器,比如从FB中的第0个元素拿到调色板中的第0个16bit数据,再通过电子枪显示出来,如下图所示:



调色板支持 5:6:5(R:G:B)格式和 5:5:5:I(R:G:B:I)格式。当用户使用5:5:5:I格式时,I表示强度,也就是透明度。I是用作每个RGB 数据的共用 LSB 位,因此 5:5:5:I与R(5+I):G(5+I):B(5+I)格式相同。

调色板格式如下:(0x4D000400为调色板起始地址)



4.LCD controller相关寄存器

LCD控制寄存器1:



[27:18]为只读数据位,不需要设置;

[17:8]设置CLKVAL(像素时钟频率),我们使用的是TFT屏,因此采用的公式是VCLK = HCLK / [(CLKVAL+1) x 2],其中HCLK为100M。LCD手册里面Clock cycle的要求范围为5-12MHz即可,那么取VCLK=9,根据公式9=100/[(CLKVAL+1)x2],算出CLKVAL≈4.5=5,设置CLKVAL=5。

[7]不用管,默认即可;

[6:5]TFT lcd配置为0b11;

[4:1]设置bpp模式,用户可选

[0]LCD输出使能,先暂时关闭不输出;

LCD控制寄存器2:(垂直方向相关设置)



2440LCD控制器时序图如下:



和上一节LCD硬件原理中的LCD时序图对比发现:

[31:24] : VBPD = tvb - 1 (表示显示完最后一行像素,再过多久Vsync才来,表示上边黑框)

[23:14] : LINEVAL = 每帧有多少行 - 1 

[13:6]  : VFPD = tvf - 1(下边黑框)

[5:0]  : VSPW = tvp - 1 (Vsync信号的脉冲宽度)


LCD控制寄存器3:(水平方向相关设置)



[25:19] : HBPD = thb - 1(左边黑框)
[18:8]  : HOZVAL = 每行有多少列 - 1
[7:0]  : HFPD = thf - 1 (右边黑框)

LCD控制寄存器4:



[7:0]: HSPW = thp - 1 (Hsync信号的脉冲宽度)

LCD控制寄存器5:(用来设置引脚极性,bpp,数据存放格式)



[12] : BPP24BL(表示24bpp的数据是大端还是小端)
[11] : FRM565 (数据存放格式)
[10] : INVVCLK(时钟是否反转极性,当配置成0时数据在时钟下降沿被锁存)
[9]  : HSYNC是否反转
[8]  : VSYNC是否反转
[7]  : INVVD, rgb是否反转
[6]  : INVVDEN
[5]  : INVPWREN
[4]  : INVLEND
[3]  : PWREN(LCD_PWREN output signal enable/disable)
[2]  : ENLEND
[1]  : BSWP
[0]  : HWSWP

LCDSADDR1:(frame buffer的起始地址寄存器)



[29:21] : LCDBANK, A[30:22] of fb
[20:0]  : LCDBASEU, A[21:1] of fb
即[29:0]表示Frame buffer的起始地址的[30:1]。

LCDSADDR2:(frame buffer的结束地址寄存器)



[20:0] : LCDBASEL,A[21:1] of end addr,即framebuffer的结束地址。


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>