LCD屏幕操作原理_嵌入式Linux

2022-05-05 15:48:23 浏览数 (2)

5.1 LCD 操作原理

在 Linux 系统中通过 Framebuffer 驱动程序来控制 LCD。Frame 是帧的意思,buffer 是缓冲的意思,这意味着 Framebuffer 就是一块内存,里面保存着一帧图像。Framebuffer 中保存着一帧图像的每一个像素颜色值,假设 LCD 的分辨率是 1024x768,每一个像素的颜色用 32 位来表示,那么 Framebuffer 的大小就是:

1024x768x32/8=3145728 字节。

简单介绍 LCD 的操作原理

① 驱动程序设置好 LCD 控制器: 根据 LCD 的参数设置 LCD 控制器的时序、信号极性; 根据 LCD 分辨率、BPP 分配 Framebuffer。 ② APP 使用 ioctl 获得 LCD 分辨率、BPP ③ APP 通过 mmap 映射 Framebuffer,在 Framebuffer 中写入数据

假设需要设置 LCD 中坐标(x,y)处像素的颜色,首要要找到这个像素对应的内存,然后根据它的 BPP 值设置颜色。假设 fb_base 是 APP 执行 mmap 后得到的 Framebuffer 地址,如下图所示:

可以用以下公式算出(x,y)坐标处像素对应的 Framebuffer 地址:

(x,y)像素起始地址=fb_base (xres*bpp/8)y xbpp/8

最后一个要解决的问题就是像素的颜色怎么表示?它是用 RGB 三原色(红、绿、蓝)来表示的,在不同的BPP 格式中,用不同的位来分别表示 R、G、B,如下图所示:

对于 32BPP,一般只设置其中的低 24 位,高 8 位表示透明度,一般的 LCD 都不支持。 对于 24BPP,硬件上为了方便处理,在 Framebuffer 中也是用 32 位来表示,效果跟 32BPP 是一样的。 对于 16BPP,常用的是 RGB565;很少的场合会用到 RGB555,这可以通过 ioctl 读取驱动程序中的 RGB位偏移来确定使用哪一种格式。

0 人点赞