您的位置:首页 > 其它

LCD驱动的学习

2016-03-08 19:40 162 查看

简介:

LCD是基于液晶的。

LCD(liquid crystal display)按驱动方式分类可以分为静态驱动,简单矩阵驱动,主动矩阵驱动。其中,简单矩阵又可以分为扭转向列型(TN)和超转向列型(STN),而主动矩阵驱动则以TFT(用的最多)为主。

TN型液晶驱动:是LCD中最基本的,他只能将入射光旋转90度,视角只有30度。

STN型驱动液晶:可以讲入射光旋转180度至270度,也改善了视角。

TFT解决了上述两种液晶屏的缺陷,属于比较常用的。

一块lcd屏显示图像不但需要lcd驱动器,还需要lcd控制器。很多主芯片cpu继承了lcd控制器。其显示原理为:作为帧同步信号的vsync,每发出一个脉冲,就意味着一幅图像开始传输。作为行同步信号的hsync,每发出一个信号,代表新的一行图像资料开始发送。图像为从左向右,从上向下显示。

一个完整的时序图如下:







下面是lcd的技术参数:

1. 可视面积

2. 可视角度

3. 点距

4. 色彩度

5. 对比值

6. 亮度值

7. 响应时间

显存:

Framebuffer(帧缓冲)从本质上讲是图形设备的硬件抽象。对开发者而言,framebuffer是一块显示缓存,往显示缓存中陷入特定格式的数据就意味着向屏幕中输出内容。通过不断地向framebuffer中写数据,显示控制器就自动的从framebuffer中读数据并显示出来。

在嵌入式一般没有专门的芯片做显存,一般是从内存中分一部分做显存。Framebuffer其实就是显存。

帧缓冲设备对应的设备文件是/dev/fb*,如果系统中有多个显示卡,linux下还可支持多个帧缓冲设备,最多可达32个。帧缓冲设备的主设备号为29,次设备号是0到31.

下面是使用帧缓冲设备文件的演示。



帧缓冲设备编程:

整个编程的系统架构如下:



可以看出,我们实现帧缓冲设备主要需要完成两个任务:

1. 实现一个fb_info结构体,这其中包括可变参数,固定参数,操作列表等。

2. 使用register_frambuffer注册一个帧缓冲设备。

Fb_info









register_frambuffer



寻找lcd驱动对应的设备:

在lcd驱动的init函数中,主要是初始化一个平台驱动。



平台驱动的结构体如下,其匹配的参数为“s3c2410-lcd”,可以查询同样名称为s3c2410-lcd的平台设备。



下面可以看到,确实能查到这个设备,资源有两个,一个是寄存器起始地址,另一个是中断号。



通过mach-s3c2440.c文件,这个设备被上报给内核。



驱动文件:



应用程序:



来自为知笔记(Wiz)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: