<LCD硬件体系结构>
LCD控制器:位于ARM核内部,为LCD提供需要显示的数据,控制信息,控制时序
<LCD控制器结构>
REGBANKK : 寄存器组,总共有17个寄存器
LCDCDMA:LCD 中的DMA模块,该模块位于LCD的控制器中,在嵌入式系统中是内存中 有一个内存区域叫做帧缓存区,告诉DMA帧缓存区的起始地址,LCD控制器 的其他控制部件将该数据发给LCD驱动器。
TIMEGEN:用于产生时序信号
<液晶屏种类>
按照驱动类型可以分为:STN, GF,TFT,其中TFT最为常用
LCD驱动芯片:LCD驱动芯片位于液晶显示屏上,作用是为液晶分子提供偏转电压。
LCD显示与信号:
时序
VSYNC:一帧图像显示的时间
HSYNC:显示一行的时间
VCLK: 显示两个点之间的时间间隔
VD[23:0]:LCD像素输出端
VDEN:数据使能信号
LEND:行结束信号
《LCD初始化》
<引脚初始化>
将管脚配置成VD
控制字详情:
<时序初始化>
LCD控制寄存器1
作用分析:
用于设置CLKVAL
控制字详情:
LCD控制寄存器2
作用分析:
用于设置VBPD,LINEVAL,VFPD.VSPW
控制字详情:
控制寄存器3
作用分析:
用于设置HBPD,HOZVAL,HFPD,
控制字详情:
控制寄存器4
作用分析:
用于设置HSPW
控制字详情
各个时序信号的值:
VSPW和VBPD时序信号的计算方式:
用于初始化LINEVAL 和HOZVAL:
<帧缓冲初始化>
在内存中开辟一段空间用于存储一帧的数据,2440开发板中用16位数据表示一个像素点(16bpp),所以总共需要(480*272*2)个字节。
分配:
静态分配
LCD帧缓存地址数据寄存器:
作用分析:
用于存放帧缓存数据的起始地址。
控制字详情:
LCDBANK存放帧缓存地址的高30-22位
LCDBASEU存放帧缓存地址的低22-1位
LCD屏幕种类区分设置寄存器:
作用分析:
用于区分“dual-scan LCD”和“single scan LCD”
控制字详情:
如果屏幕使用 的是single-scan LCD,则该寄存器存放帧缓存地的尾地址的21-1位。
首尾像素点时间间隔控制/行宽度寄存器:
作用分析:
用于设置没行的最后一个像素点和下一行的低一个像素点之间是否有时间间隔。
控制字详情:
像素点时间间隔为0,行宽度取半字节,比如这里480个像素点,每个像素点是两个字节,所以取值为(480*2)/2
动态分配
告知:
将帧缓存数据地址值写入LCDADDR1中
<配置寄存器初始化>
LCD控制寄存器1
作用分析:
用于配置LCD种类,屏幕像素点的真彩色,和LCD控制器数据输出使能。
LCD控制寄存5
作用分析:
用于配置像素的分配,这里使用5:6:5(红绿蓝),和翻转极性控制
控制字详情:
像素真彩
转换极型
半字转换使能
临时调色板配置寄存器:
作用分析:
用于使能和配置临时调色板
使能临时调色板
GPG管脚控制器:
作用分析:
用于将相应管脚设置为LCD的电源
控制字详情:
LCD数据显示:
16bpp显示数据分配图
数据显示
http://www.114la.com/other/rgb.htm
单色显示
void LCD_line()
{
int x;
for(x=0;x<480;x++)
{
void point(x++,150,0xff0000)
}
}