ARM2440中的LCD控制器编程。

LCD硬件原理可以知道,要让LCD正常工作需要从frame中取数据,然后通过电子枪打印到LCD上从而显示出来。这个就是LCD控制器要完成的工作。下列红色加粗的是一定要设置的控制单元。

问题1:LCD控制器从frame中怎样取数据,以及在什么地址取数据?

答:需要设置frame的基地址(LCDBASEU),结束地址(LCDBASEL),以及BPPMODE(一个像素需要多少bit来表示,即一像素读取多少多少空间的数据),BSWPHWSWP(这两个是决定数据在frame中的排放规则)等。

问题2:LCD控制器什么时候把数据发送到LCD显示器上,以及如何发送?

答:设置LCD控制器的时序,设置LCD屏幕的分辨率(即多少行和多少列HOZVAL/LINEVAL),以及每行(列)的脉冲宽度(HSPW/VSPW),收到同步信号后多久发送数据(HBPD/VBPD),以及发送完需要等待多久才能收到同步信号等(VFPD/HFPD)。以及信号的极性(对比LCD控制器和LCD芯片的时序图),极性指的是什么时候采集数据,上升沿还是下降沿之类的。

设置的极性可以参考2440的手册LCDCON5,主要有以下控制单元:

  • FRM56516bpp时选择的格式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
发布了35 篇原创文章 · 获赞 1 · 访问量 1870

猜你喜欢

转载自blog.csdn.net/lzj_linux188/article/details/101099866