从LCD硬件原理可以知道,要让LCD正常工作,需要从frame中取数据,然后通过电子枪打印到LCD上从而显示出来。这个就是LCD控制器要完成的工作。下列红色加粗的是一定要设置的控制单元。
问题1:LCD控制器从frame中怎样取数据,以及在什么地址取数据?
答:需要设置frame的基地址(LCDBASEU),结束地址(LCDBASEL),以及BPPMODE(一个像素需要多少bit来表示,即一像素读取多少多少空间的数据),BSWP、HWSWP(这两个是决定数据在frame中的排放规则)等。
问题2:LCD控制器什么时候把数据发送到LCD显示器上,以及如何发送?
答:设置LCD控制器的时序,设置LCD屏幕的分辨率(即多少行和多少列HOZVAL/LINEVAL),以及每行(列)的脉冲宽度(HSPW/VSPW),收到同步信号后多久发送数据(HBPD/VBPD),以及发送完需要等待多久才能收到同步信号等(VFPD/HFPD)。以及信号的极性(对比LCD控制器和LCD芯片的时序图),极性指的是什么时候采集数据,上升沿还是下降沿之类的。
设置的极性可以参考2440的手册LCDCON5,主要有以下控制单元:
- FRM565:16bpp时选择的格式5:6:5还是5:5:5:1
- INVVCLK:指定像素采样时间,是在时钟的上升沿还是下降沿采集信息。
- INVVLINE:指定水平同步信号的极性This bit indicates the VLINE/HSYNC pulse polarity
- INVVFRAME:指定垂直同步信号的极性This bit indicates the VFRAME/VSYNC pulse polarity
- INVVD:指定输出数据的极性This bit indicates the VD (video data) pulse polarity
- INVVDEN:指定VDEN(Data enable signal)的极性This bit indicates the VDEN signal polarity.
- INVPWREN:指定PWREN(LCD POWER ENABLE)的极性This bit indicates the PWREN signal polarity.
- INVLEND:指定LEND的极性This bit indicates the LEND signal polarity
- PWREN:是否是能LCD_PWERN LCD output signal enable/disable
- ENLEND:是否开启LEND LEND (一行数据显示完输出结束信号) output signal enable/disable.
- BSWP/HWSWP:控制数据在frame中的存放顺序 swap control bit.
LCD POWER ENABLE:The S3C2440A provides Power enable (PWREN) function. When PWREN is set to make PWREN signal enabled,the output value of LCD_PWREN pin is controlled by ENVID. In other words, If LCD_PWREN pin is connected to the power on/off control pin of the LCD panel, the power of LCD panel is controlled by the setting of ENVID
automatically。即POWER设置为使能的话,那么LCD的电源控制开关直接由ENVID(在LCDCON1)来控制。
VDEN:Data enable signal,指定数据有效,2440中vden为高电平时是正常有效的。
note: 16Bpp时可以指定数据在frame中排放的格式。也可以通过调试板来减少frame中使用的空间(伪彩色),这时frame中的数据可以是8bit的用来做索引,去调色板中换取16bit的真彩色。
所以ARM2440中的LCD控制器编程:
- 初始化2240中连接LCD的各个引脚GPIO(配置成LCD模式、是否输出高电平)
- 设置上述的各种时序控制器(LCDCON1-LCDCON5)、以及frame在内存中的起始地址和结束地址等。
- 开启LCD背光以及LCD的是能开关ENVID。