本知识点主要参考白问网手册以及imx6ull 用户手册,重点介绍常用的DotClk接口
一、enhanced lcd interface overview
IMX6ULL的LCD控制器名称为eLCDIF(Enhanced LCD Interface,增强型LCD接口),主要特性如下:
① 支持MPU模式:有些显示屏自带显存,只需要把命令、数据发送给显示屏即可;
② 支持DOTCLK模式:RGB接口,本实验就是此模式;
③ VSYNC模式:针对高速数据传输(行场信号);
④ 支持ITU-R BT.656接口,可以把4:2:2 YcbCr格式的数据转换为模拟电视信号;
⑤ 8/16/18/24/32 bit 的bpp数据都支持,取决于IO的复用设置及寄存器配置;
⑥ MPU模式,VSYNC模式,DOTCLK模式,都可以配置时序参数。
二、External Signals
三、clock
LCD控制器有两个时钟域:外设总线时钟域,LCD像素时钟域。前者是用来让LCD控制器正常工作,后者是用来控制电子枪移动。
四、functional description
我们在内存中划出一块内存,称之为显存,软件把数据写入显存。
设置好LCD控制器之后,它会通过AXI总线协议从显存把RGB数据读入FIFO,再到达LCD接口(LCD Interface)。上图的Read_Data操作,在MPU模式下才用到。
4.1 Bus Master Operation in Write/Display Modes
eLCDIF块有一个总线主接口,可以启动数据驱动显示的请求。LCDIF_MASTER位必须设置为1才能启用总线主接口。软件应该编程为传输帧序列所需的所有控制寄存器。
DOTCLK和DVI模式用于以所需的刷新率和分辨率刷新显示器,和驱动不集成显示缓冲区内存的显示器。当显示器被刷新时,eLCDIF将会在当前帧的末尾自动用LCDIF_NEXT_BUF_ADDR中的值更新LCDIF_CUR_BUF_ADDR寄存器,并开始从新地址获取下一帧。如果LCDIF_NEXT_BUF_ADDR寄存器没有在一个帧刷新周期内更新,eLCDIF将继续传输最后一帧,直到一个新的值被编程到该寄存器中。
4.2 Write Data Path
eLCDIF支持基于光栅的帧缓冲区,并且不支持平铺缓冲区。在为外部显示处理数据之前,有几个选项来适应内存中显示缓冲区的特性。LCDIF_CTRL[INPUT_DATA_SWIZZLE]字段提供了以下数据字复用的选项
①byte packing 从FB中读取多个32bit 数据。那么怎么告诉控制器FB中像素的格式是什么样子的,以及FB中怎么存储这些格式的?例如FB格式为16bpp
LCDIF_CTRLn 寄存器的bit11-10 LCD 接口的位宽;
LCDIF_CTRLn 寄存器的bit9-8 和bit 3-1 设置FB中的像素格式
LCDIF_CTRL1n中的bit19-16 来设置内存中怎么存储像素格式。
②swizzle 交换32位数据中的字节顺序,当lcd接线错误,或者fb中与lcd的字节序不一致时需要设置
LCDIF_CTRLn 中bit15-14设置字节交换顺序。
值为2时:即0x12345678转为0x5