s3c2440 LCD控制器设置及代码详解(9页DOC).docx
《s3c2440 LCD控制器设置及代码详解(9页DOC).docx》由会员分享,可在线阅读,更多相关《s3c2440 LCD控制器设置及代码详解(9页DOC).docx(11页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、最新资料推荐1. LCD工作的硬件需求: 要使一块LCD正常的显示文字或图像,不仅需要LCD驱动器,而且还需要相应的LCD控制器。在通常情况下,生产厂商把LCD驱动器会以COF/COG的 形式与LCD玻璃基板制作在一起,而LCD控制器则是由外部的电路来实现,现在很多的MCU内部都集成了LCD控制器,如S3C2410/2440等。通 过LCD控制器就可以产生LCD驱动器所需要的控制信号来控制STN/TFT屏了。2. S3C2440内部LCD控制器结构图:我们根据数据手册来描述一下这个集成在S3C2440内部的LCD控制器:a:LCD控制器由REGBANK、LCDCDMA、TIMEGEN、VIDP
2、RCS寄存器组成;b:REGBANK由17个可编程的寄存器组和一块256*16的调色板内存组成,它们用来配置LCD控制器的;c:LCDCDMA是一个专用的DMA,它能自动地把在侦内存中的视频数据传送到LCD驱动器,通过使用这个DMA通道,视频数据在不需要CPU的干预的情况下显示在LCD屏上;d:VIDPRCS接收来自LCDCDMA的数据,将数据转换为合适的数据格式,比如说4/8位单扫,4位双扫显示模式,然后通过数据端口VD23:0传送视频数据到LCD驱动器;e:TIMEGEN由可编程的逻辑组成,他生成LCD驱动器需要的控制信号,比如VSYNC、HSYNC、VCLK和LEND等等,而这些控制 信
3、号又与REGBANK寄存器组中的LCDCON1/2/3/4/5的配置密切相关,通过不同的配置,TIMEGEN就能产生这些信号的不同形态,从而支 持不同的LCD驱动器(即不同的STN/TFT屏)。3. 常见TFT屏工作时序分析:LCD提供的外部接口信号: VSYNC/VFRAME/STV:垂直同步信号(TFT)/帧同步信号(STN)/SEC TFT信号;HSYNC/VLINE/CPV:水平同步信号(TFT)/行同步脉冲信号(STN)/SEC TFT信号;VCLK/LCD_HCLK:象素时钟信号(TFT/STN)/SEC TFT信号;VD23:0:LCD像素数据输出端口(TFT/STN/SEC T
4、FT);VDEN/VM/TP:数据使能信号(TFT)/LCD驱动交流偏置信号(STN)/SEC TFT 信号;LEND/STH:行结束信号(TFT)/SEC TFT信号;LCD_LPCOE:SEC TFT OE信号;LCD_LPCREV:SEC TFT REV信号;LCD_LPCREVB:SEC TFT REVB信号。所有显示器显示图像的原理都是从上到下,从左到右的。这是什么意思呢?这么说吧,一副图像可以看做是一个矩形,由很多排列整齐的点一行一行组成,这些点称之为像素。那么这幅图在LCD上的显示原理就是: A:显示指针从矩形左上角的第一行第一个点开始,一个点一个点的在LCD上显示,在上面的时序
5、图上用时间线表示就为VCLK,我们称之为像素时钟信号;B:当显示指针一直显示到矩形的右边就结束这一行,那么这一行的动作在上面的时序图中就称之为1 Line;C:接下来显示指针又回到矩形的左边从第二行开始显示,注意,显示指针在从第一行的右边回到第二行的左边是需要一定的时间的,我们称之为行切换;D:如此类推,显示指针就这样一行一行的显示至矩形的右下角才把一副图显示完成。因此,这一行一行的显示在时间线上看,就是时序图上的HSYNC;E:然 而,LCD的显示并不是对一副图像快速的显示一下,为了持续和稳定的在LCD上显示,就需要切换到另一幅图上(另一幅图可以和上一副图一样或者不一样,目 的只是为了将图像
6、持续的显示在LCD上)。那么这一副一副的图像就称之为帧,在时序图上就表示为1 Frame,因此从时序图上可以看出1 Line只是1 Frame中的一行;F:同样的,在帧与帧切换之间也是需要一定的时间的,我们称之为帧切换,那么LCD整个显示的过程在时间线上看,就可表示为时序图上的VSYNC。上面时序图上各时钟延时参数的含义如下:(这些参数的值,LCD产生厂商会提供相应的数据手册) VBPD(vertical back porch):表示在一帧图像开始时,垂直同步信号以后的无效的行数,对应驱动中的upper_margin;VFBD(vertical front porch):表示在一帧图像结束后,
7、垂直同步信号以前的无效的行数,对应驱动中的lower_margin;VSPW(vertical sync pulse width):表示垂直同步脉冲的宽度,用行数计算,对应驱动中的vsync_len;HBPD(horizontal back porch):表示从水平同步信号开始到一行的有效数据开始之间的VCLK的个数,对应驱动中的left_margin;HFPD(horizontal front porth):表示一行的有效数据结束到下一个水平同步信号开始之间的VCLK的个数,对应驱动中的right_margin;HSPW(horizontal sync pulse width):表示水平同步
8、信号的宽度,用VCLK计算,对应驱动中的hsync_len;对于以上这些参数的值将分别保存到REGBANK寄存器组中的LCDCON1/2/3/4/5寄存器中:(对寄存器的操作请查看S3c2440数据手册LCD部分) LCDCON1:17- 8位CLKVAL 6- 5位扫描模式(对于STN屏:4位单/双扫、8位单扫) 4- 1位色位模式(1BPP、8BPP、16BPP等)LCDCON2:31 - 24位VBPD 23 - 14位LINEVAL 13 - 6位VFPD 5 - 0位VSPWLCDCON3:25 - 19位HBPD 18 - 8位HOZVAL 7 - 0位HFPDLCDCON4: 7
9、 - 0位HSPWLCDCON5:4. 帧缓冲(FrameBuffer): 帧缓冲是Linux为显示设备提供的一个接口,它把一些显示设备描述成一个缓冲区,允许应用程序通过 FrameBuffer定义好的接口访问这些图形设备,从而不用去关心具体的硬件细节。对于帧缓冲设备而言,只要在显示缓冲区与显示点对应的区域写入颜色 值,对应的颜色就会自动的在屏幕上显示。下面来看一下在不同色位模式下缓冲区与显示点的对应关系:下面看看2440test里面的lcd.c文件static void PutPixel(U32 x,U32 y,U16 c) if(xSCR_XSIZE & ySCR_YSIZE) LCD_B
10、UFFER(y)(x) = c;很容易发现TFT LCD上显示单个像素的函数实际上很简洁看来似乎只需要LCD_BUFFER(y)(x) = c这一句话下面就来分析下,是如何通过这一句话来实现在LCD上显示单个像素的先分析下LCD_Init()即LCD初始化函数 rLCDCON1 = (LCD_PIXCLOCK 8) | (3 5) | (12 =0 )MMODE7 = 0PNRMODE6:5 = 11 TFT LCD panel BPPMODE4:1 = 1100 16bpp for TFTENVID0 = 0 DisablerLCDCON2 = (LCD_UPPER_MARGIN 24) |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- s3c2440 LCD控制器设置及代码详解9页DOC LCD 控制器 设置 代码 详解 DOC
限制150内