IMX6U RGBLCD 学习笔记
lcd屏幕的分辨率
定义:
分辨率指的是绝对像素尺寸,比如
- 1080p = 1920 px (x)* 1080px(y)
所以
- 同尺寸,分辨率越高越清晰
- 同分辨率,屏幕尺寸越小月清晰
lcd像素格式
一个像素px,由r,g,b三个小灯控制,每个小灯8bit
所以一个像素 为 3*8=24bit = 3byte. 成为 RGB888
若再加一个8bit的透明通道A,则变成32bit的 4byte的 ARGB8888
lcd屏幕的信号线接口
我们所使用的imx6ull + ATK屏幕1024*600. 采用的是RGB接口,接口连线有:
- R[0:7]
- G[0:7]
- B[0:7]
- DE 数据使能
- VSYNC 垂直同步信号(表示新的一帧画面)
- HSYNC 行同步信号 (表示新的一行)
- PCLK 时钟信号
- 我们目前的LCD屏幕有两种驱动模式:
- DE模式(用DE线, 可以不用HSYNC线)
- HV模式(不用DE线)
外设接口原理图

LCD屏幕的时间参数(协议)

每一帧图像的渲染,是按照从左到右,从上到下的顺序进行扫描的。所以是一行一行组成的。
时间参数:
HSYNC:(信号线)
行同步信号,产生表示显示新行VSYNC:(信号线)
帧同步信号,产生表示显示新一帧图像HBP:(时间)
当显示完一行后会发出HSYNC信号,电子枪关闭,移动到屏幕左边,从HSYNC信号结束,到等待电子枪重新打开的这段延时=HBPHFP:(时间)
当显示完一行之后,电子枪关闭,到HSYNC信号产生之间的延时=HFP。VFP:(时间)
当显示完一帧图像之后,电子枪关闭,到VSYNC信号产生之间的延时VBP:(时间)
当VSYNC信号结束,到电子枪打开的这段延时
HBP,HFP,VFP,VBP,这四个屏幕的参数,具体多少,需要参考LCD数据手册。
HSPW:(时间)
这个是HSYNC信号的时钟宽度VSPW:(时间)
这个是VSYNC信号的时钟宽度LINE:(时间)
显示完一帧图像所需时间HOZVAL:(时间)
显示完一行数据所需时间像素时钟:
就是LCD的时钟信号,即显示一帧图片需要多少个时钟数(因为频率已经确定了)
所以pxclk = (VSPW+VSB+LINE+VFP)*(HSPW+HBP+HOZVAL+HFP)= 853440个时钟。所以要保持60hz,就需要51.2Mhz时钟信号。
- 所以需要配置LCD屏幕的时钟源
LCD屏幕的显存
一个px = 4byte(ARGB8888)
所以一帧图片就是10246004byte = 2.4MB
因为这款LCD内部没有存储器。所以需要从DDR3(我们板子的外置ROM)中分配。
LCD屏幕的eLCDIF接口
这个eLCDIF是IMX6U自带的液晶屏接口,用于连接RGB LCD(可以把他想成是SOC上的连接至CA核心的外设)
eLCDIF支持3种接口:
- MPU接口(SOC和LCD屏幕直接传输数据和指令,如STM32的MCU屏幕)
- VSYNC接口
- DOTCLK接口(这个接口是用来连接RGBLCD的,包括VSYNC,HSYNC,DOTCLK,ENABLE这4个信号。也叫做RGB接口)
所以配置LCD驱动的关键,在于配置SOC上的eLCDIF的相关寄存器,配置好上面的一些时间参数。
主要配置一些:
- eLCDIF软复位(复位LCD,不是复位eLCDIF接口寄存器)
- 工作模式(DOTCLK)
- 数据大端小端
- 数据总线宽度
- 像素数据格式
- eLCDIF工作模式
- 使能位
- 数据线极性位
- 数据线使能位
- 脉冲宽度位
- 像素个数等等
LCD 屏幕驱动配置
- 初始化LCD的IO
配置所有IO,复用为eLCDIF的IO口 - 设置LCD的时钟源
- 配置eLCDIF接口(SOC的接口外设,所有外设驱动适配,本质都是设置SOC的内置外设寄存器)、
- 编写对外使用接口
总结:驱动配置思路
我们所有配置驱动,都是在配置SOC内部连接在外设总线上的SOC外设,也叫资源
- 时钟
- IO
- 协议->SOC内部寄存器->
- CR
- DR
- SR
所以,在适配外设的时候,要先搞清楚,外部设备是什么,实际的SOC外设资源是什么
比如
SOC内部外设资源—————————–实际的外部设备
eLCDIF———————————————-LCD
uart————————————————uart
gpio————————————————led,beep,key
exti————————————————key