一、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
HSYNC信号表示新的一行开始显示
lcd控制器
LCD控制器的作用是将framebuff中的数据,传输给lcd屏幕并提高必要的控制信号
LCD 驱动编写
应用程序将数据写入framebuffer中,然后地址映射到内存中(物理内存与虚拟内存需要是一个地址)
lcd控制器从framerbuffer内存中将每个像素点发送给lcd
famerbuffer驱动是一个字符驱动创建一个内存空间,可以直接对齐对写
frambuff驱动框架编写
fb_info结构体,里面包含LCD硬件信息、操作方法、软件配置等信息
参考链接:驱动之LCD驱动框架和实现 | DRA&PHO如题.https://draapho.github.io/2018/01/09/1804-drv-lcd/
一、分配fb_info
fb_alloc_framebuffer 为framebuffer分配空间,进行内存映射
二、设置fb_info
初始化fb_info设备结构体
从数据手册中获取屏幕参数,需要的参数每个屏幕不一定相同,填充fb_info
操作函数也在其中
三、注册fb_info
register_framebuffer
*注册fb设备到系统中
硬件的配置
1、引脚设置
配置GPIO用于LCD
2、时钟设置
根据LCD手册设置LCD控制器,比如VCLK的频率
3、lcd控制器设置
分配显存(framebuffer)并将地址告诉LCD控制器