应用中需要的LCD知识
LCD是由一个一个的像素点组成的,每行有x个像素点,每列有y个像素点,分辨率是x*y。
只要控制了任意一个像素的颜色,就可以在LCD上绘制文字、图片。
1. 像素的颜色怎么表示
用红绿蓝(RGB)三个颜色来表示,可以用24位数据来表示红绿蓝,也可以用16位等等格式,比如:
- 24bpp1:实际上会用到32位,其中8位未使用,其余24位中分别用8位表示红(R)、绿(G)、蓝(B)
- 16bpp:有rgb565、rgb555
- rgb565:用5位表示红,6位表示绿,5位表示蓝
- rgb555:用5位表示红,5位表示绿,5位表示蓝,空1位
2.怎么把颜色发给LCD
假设每个像素的颜色用16位来表示,那么一个LCD的所有像素点假设有xresyres个。
总共需要的内存容量为:xresyres*16/8,要设置所有像素的颜色,需要这么大小的内存,这块内存被称为framebuffer。
- framebuffer中每一块数据对应一个像素。
- 每块数据的大小可能是16位、32位,这跟LCD上像素的颜色格式有关。
- 设置好LCD硬件后,只需要把颜色数据写入Framebuffer即可。
驱动中需要的LCD知识
驱动工程师对LCD的理解要深入硬件,需要回答下面几个问题:
- Framebuffer在哪里?
- 谁把Framebuffer中的数据发给LCD?
1.统一的LCD硬件模型
对于单片机使用的屏幕,屏幕自带LCD控制器,单片机使用内存接口控制LCD。
对于Linux的芯片,它自己就有内存,所以直接通过LCD控制器控制屏幕。
- MCU常用8080接口来连接LCD模组
- MPU常用TFT RGB接口来连接LCD
2. MIPI标准
MIPI(Mobile Industry Processor Interface),即移动产业处理器接口,是MIPI联盟发起的为移动应用处理器指定的开放标准和一个规范。
主要是手机内部的接口(摄像头、显示屏接口、射频/基带接口)等标准化,从而减少手机内部接口的复杂程度及增加设计的灵活性。
对于LCD,MIPI接口可以分为三类:
- MIPI-DBI(Display Bus Interface)
- 既然被称作Bus(总线),就是不仅发送数据,还能发送命令,常用的8080接口就属于DBI
- Type B(i-80 system),8- / 9- / 16- / 18- / 24- bit bus
- Type C(Serail data transfer interface,3/4-line SPI)
- MIPI-DPI(Display Pixel Interface)
- Pixel(像素),强调的是操作单个像素,在MPU上的LCD控制器就是这种接口
- Supports 24 bit/pixel (R:8-bit, G: 8-bit, B: 8-bit)
- Supports 18 bit/pixel (R:6-bit, G: 6-bit, B: 6-bit)
- Supports 16 bit/pixel (R:5-bit, G: 6-bit, B: 5-bit)
- MIPI-DSI(Display Serial Interface)
- Serial,相比于DBI、DPI需要使用很多接口线,DSI需要的接口线大为减少
- Supports one data lane/maximum speed 500Mbps
- Supports DSI version 1.01
- Supports D-PHY version 1.00
参考资料
- MIPI-DSI、MIPI-CSI、LVDS等接口解析:https://blog.csdn.net/u014470361/article/details/88891255
- ILI9488驱动芯片数据手册.pdf
bpp: bit per pixel,每个像素用多少位来表示 ↩︎