eLCDIF
MIPI标准
MIPI表示Mobile Industry Processor Interface,即移动产业处理器接口。是MIPI联盟发起的为移动应用处理器制定的开放标准和一个规范。主要是手机内部的接口(摄像头、显示屏接口、射频/基带接口)等标准化,从而减少手机内部接口的复杂程度及增加设计的灵活性。
对于LCD,MIPI接口可以分为3类:
MIPI-DBI (Display Bus Interface)
既然是Bus(总线),就是既能发送数据,也能发送命令,常用的8080接口就属于DBI接口。
Type B (i-80 system), 8-/9-/16-/18-/24-bit bus
Type C (Serial 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

像素的颜色
用红绿蓝三颜色来表示,可以用24位数据来表示红绿蓝,也可以用16位等等格式,比如:
bpp:bits per pixel,每个像素用多少位来表示
24bpp:实际上会用到32位,其中8位未使用,其余24位中分别用8位表示红(R)、绿(G)、蓝(B)
16bpp:有rbg565,rgb555
rgb565:用5位表示红、6位表示绿、5位表示蓝
rgb555:16位数据中用5位表示红、5位表示绿、5位表示蓝,浪费一位

假设每个像素的颜色用16位来表示,那么一个LCD的所有像素点假设有xres * yres个像素,需要的内存为:
xres * yres * 16 / 8字节,也就是要设置所有像素的颜色,需要这么大小的内存。这块内存就被称为framebuffer
LCD硬件模型

eLCDIF
简介
IMX6ULL的LCD控制器名称为eLCDIF(Enhanced LCD Interface,增强型LCD接口),主要特性如下:
支持MPU模式:有些显示屏自带显存,只需要把命令、数据发送给显示屏即可;就是前面讲的8080接口
VSYNC模式:跟MPU模式类似,多了VSYNC信号。针对高速数据传输(行场信号)
支持DOTCLK模式:RGB接口,就是前面讲的TFT-RGB接口
支持ITU-R BT.656接口,可以把4:2:2 YcbCr格式的数据转换为模拟电视信号
8/16/18/24/32 bit 的bpp数据都支持,取决于IO的复用设置及寄存器配置
MPU模式,VSYNC模式,DOTCLK模式,都可以配置时序参数。

上图是IMX6ULL的LCD控制器框图。我们在内存中划出一块内存,称之为显存,软件把数据写入显存。设置好LCD控制器之后,它会通过AXI总线协议从显存把RGB数据读入FIFO,再到达LCD接口(LCD Interface)。LCD控制器有两个时钟域:外设总线时钟域,LCD像素时钟域。前者是用来让LCD控制器正常工作,后者是用来控制电子枪移动。上图的Read_Data操作,在MPU模式下才用到;我们采用的是DCLK模式,因此不予考虑。
更详细的内容可以查看IMX6ull芯片手册《Chapter 34 Enhanced LCD Interface (eLCDIF)》。
数据传输与处理
框图:

数据在fb是怎么存储的;
设置fb输入和lcd控制器输出位宽格式如下:

比如rgb56516位一个像素打包格式如下:我们一般设置1111,这样数据比较紧凑。

从Fb里面一次读出多少32位数据;
交换字节:目的是如果接错线了可以使用该功能,我们一般设置0,不交换


上步骤后存放到fifo;
从3中fifo中取出数据统一转换为RGB888;
以rgb565为例说明如下:rgb666也是一样

上步转换后的数据存放到fifo;
从步骤5中fifo中取出数据然后通过控制时间发送出去。
设置时间参数timeing,后面会介绍如何设置下面的时间值。

寄存器介绍
关于RGB接口的lcd原理和寄存器请参考RGB_LCD试验