lcd屏幕驱动

一、RGBLCD显示原理简介(TFT lcd)

    1、像素点

              于一个“小灯“,不管是液晶屏,还是手机,平板,RGBLCD屏幕他都是有由一个个的彩色小灯构成的。彩色点阵屏每个像素点有三个小灯,红色、绿色和蓝色,也叫做RGB。RGB就是光的三原色。通过调整RGB三种颜色的比例,就可以实现姹紫千红的世界。

    2、分辨率

       要想显示文字,图片,视频等等就需要很多个像素点,分辨率说的就是像素点的个数,1080P、720P、2K、4K,8K。1080P=1920*1080,表示一行有1920个像素点,一列有1080个。显示器有尺寸!24村,27村、55寸。尺寸不变的情况下,分辨率越高,显示效果越精细。4K=3840*2160相当于4个1080P

       正点原子的RGB屏幕有:4.3寸480*272,800*480,7寸的800*480和1024*600,10.1寸的1280*800。

       Iphone4屏幕尺寸是3.5寸,960*640分辨率,PPI=327.

    3、像素格式

       如何将RGB三种颜色进行量化,每种颜色用8bit表示,RGB就需要888共24bit。可以描述出2^24=中颜色16777216=1677万种颜色。现在流行10bit,HDR10,支持HDR效果的10bit面板,RGB10 10 10。

       在RGB888的基础上在加上8bit的ALPHA通道,也就是透明通道,ARGB8888=32位。

    4、LCD屏幕接口

      lcd 种类是tft

       RGB格式的屏幕,一般叫做RGB接口屏。

屏幕接口有:MIPI、LVDS、MCU、RGB接口。

正点原子屏幕ID:使用ID可以识别出不同的屏幕,在RGBLCD屏幕上对R7,G7,B7焊接上拉或下拉电阻实现不同的ID。,

正点原子的ALPHA地板RGB屏幕接口用了3个3157模拟开关。原因是防止LCD屏幕上的ID电阻影响到6ULL的启动。

5、lcd时间参数

画一帧图片需要一行一行的画,HSYNC信号表示新的一行开始显示,信号的维持时间是HSPW

下一行像素的显示需要有个延时,叫做HFP

垂直:

VSYNC:垂直同步信号,帧同步信号,当出现这个信号的时候表示新的一帧开始显示,持续时间是vspw,间隔时间是VBP

6、显存

显示存储

存放一帧的图像数据大小,一般定义一个数组

rgb 888  24位 硬件中有24根数据线 ,每根数据线控制一位

屏幕的时序逻辑

画一帧图片需要一行一行的画,HSYNC信号表示新的一行开始显示,信号的维持时间是HSPW

下一行像素的显示需要有个延时,叫做HFP

垂直:

VSYNC:垂直同步信号,帧同步信号,当出现这个信号的时候表示新的一帧开始显示,持续时间是vspw,间隔时间是VBP

lcd控制器

LCD控制器的作用是将framebuff中的数据,传输给lcd屏幕并提高必要的控制信号

LCD 驱动编写

应用程序将数据写入framebuffer中,然后地址映射到内存中(物理内存与虚拟内存需要是一个地址)

lcd控制器从framerbuffer内存中将每个像素点发送给lcd              

famerbuffer驱动是一个字符驱动创建一个内存空间,可以直接对齐对写

lcd屏幕驱动_第1张图片

frambuff驱动框架编写

lcd屏幕驱动_第2张图片

参考链接:驱动之LCD驱动框架和实现 | DRA&PHO

一、分配fb_info

fb_alloc_framebuffer  为framebuffer分配空间,进行内存映射

二、设置fb_info

  初始化fb_info设备结构体

从数据手册中获取屏幕参数,需要的参数每个屏幕不一定相同,填充fb_info

操作函数也在其中

lcd屏幕驱动_第3张图片

 lcd屏幕驱动_第4张图片

三、注册fb_info

register_framebuffer  

*注册fb设备到系统中

硬件的配置

1、引脚设置

配置GPIO用于LCD

2、时钟设置

根据LCD手册设置LCD控制器,比如VCLK的频率

3、lcd控制器设置

分配显存(framebuffer)并将地址告诉LCD控制器

你可能感兴趣的:(秋招准备,linux)