百问网技术交流群,百万嵌入式工程师聚集地:
/page/2248041
硬件_IMX6ULL的LCD控制器
参考资料,GIT仓库里:
IMX6ULL\开发板配套资料\datasheet\Core_board\CPU\IMX6ULLRM.pdf
《Chapter 34 Enhanced LCD Interface (eLCDIF)》
IMX6ULL的LCD裸机程序
IMX6ULL\source\03_LCD\05_参考的裸机源码\03_font_test
1. LCD控制器模块介绍
1.1 硬件框图
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)》。
1.2 数据传输与处理
框图: 举例说明:见视频1.3 时序控制
看寄存器说明。
2. LCD控制器寄存器简介
查看任何芯片的LCD控制器寄存器时,记住几个要点:
① 怎么把LCD的信息告诉LCD控制器:即分辨率、行列时序、像素时钟等;
② 怎么把显存地址、像素格式告诉LCD控制器。
上图是我们将要使用到的寄存器,下面逐个讲解这些寄存器,在后续的LCD控制编程实验会用到。
2.1 LCDIF_CTRL寄存器
2.2 LCDIF_CTRL1寄存器
本实验中使用TFT LCD,LCD控制器使用DOTCLK模式。本寄存器中其他用不到的位,就不介绍了。
2.3 LCDIF_TRANSFER_COUNT寄存器
2.4 LCDIF_VDCTRL0寄存器
本寄存器用来设置Vsync信号相关的时序,及极性。
2.5 LCDIF_VDCTRL1寄存器
2.6 LCDIF_VDCTRL2寄存器
HSYNC_PULSE_WIDTH:水平同步信号脉冲宽度;
HSYNC_PERIOD:两个水平同步信号之间的总数,即水平方向同步信号的总周期
2.7 LCDIF_VDCTRL3寄存器
2.8 LCDIF_VDCTRL4寄存器
2.9 LCDIF_CUR_BUF寄存器
2.10 LCDIF_NEXT_BUF寄存器
LCD控制器传输完当前帧后,会把LCDIF_NEXT_BUF寄存器的值复制到LCDIF_CUR_BUF寄存器。
百问网技术交流群,百万嵌入式工程师聚集地:
/page/2248041
百问网技术论坛:
/
百问网嵌入式视频官网:
/index
百问网开发板:
淘宝:/
天猫:/