Linux LCD驱动中的LCD参数

kernel版本:linux-2.6.34
开发板:PW2440
CPU:S3C3440
LCD:3.5 寸TFT(320×240),Model Name LQ035NC111

LCD的参数设定是需要根据LCD的手册来设定arch/arm/mach-s3c2440/mach-smdk2440.c里面的s3c2410fb_display smdk2440_lcd_cfg结构体
例如从LQ035NC111的手册可以得到如下一个表


本篇文章来源于 Linux公社网站(www.linuxidc.com)  原文链接:http://www.linuxidc.com/Linux/2011-01/31800.htm

该表描述了该款并行LCD的所有时钟需求,在这里我参照的全是典型值“Typ”栏
一个很具有参考价值的文档文件是Documentation/fb/framebuffer.txt文件,里面给我们描述了一个架构
  +----------+---------------------------------------------+----------+-------+
  |          |                ↑                            |          |       |
  |          |                |upper_margin                |          |       |
  |          |                ↓                            |          |       |
  +----------###############################################----------+-------+
  |          #                ↑                            #          |       |
  |          #                |                            #          |       |
  |          #                |                            #          |       |
  |          #                |                            #          |       |
  |   left   #                |                            #  right   | hsync |
  |  margin  #                |       xres                 #  margin  |  len  |
  |<-------->#<---------------+--------------------------->#<-------->|<----->|
  |          #                |                            #          |       |
  |          #                |                            #          |       |
  |          #                |                            #          |       |
  |          #                |yres                        #          |       |
  |          #                |                            #          |       |
  |          #                |                            #          |       |
  |          #                |                            #          |       |
  |          #                |                            #          |       |
  |          #                |                            #          |       |
  |          #                |                            #          |       |
  |          #                |                            #          |       |
  |          #                |                            #          |       |
  |          #                ↓                            #          |       |
  +----------###############################################----------+-------+
  |          |                ↑                            |          |       |
  |          |                |lower_margin                |          |       |
  |          |                ↓                            |          |       |
  +----------+---------------------------------------------+----------+-------+
  |          |                ↑                            |          |       |
  |          |                |vsync_len                   |          |       |
  |          |                ↓                            |          |       |
  +----------+---------------------------------------------+----------+-------+

还有一个很有用的公式 Pixelclock:


   xfree: in MHz


   fb: in picoseconds (ps)


   pixclock = 1000000 / DCF
 

再结合结构体 static struct s3c2410fb_display smdk2440_lcd_cfg __initdata = {

    .lcdcon5    = S3C2410_LCDCON5_FRM565 |
             S3C2410_LCDCON5_INVVLINE |
             S3C2410_LCDCON5_INVVFRAME |
             S3C2410_LCDCON5_PWREN |
             S3C2410_LCDCON5_HWSWP,

    .type        = S3C2410_LCDCON1_TFT,

    .width = LCD_WIDTH,
    .height = LCD_HEIGHT,

    .pixclock = LCD_PIXCLOCK,
    .xres = LCD_WIDTH,
    .yres = LCD_HEIGHT,
    .bpp = 16,
    .left_margin = LCD_LEFT_MARGIN,
    .right_margin = LCD_RIGHT_MARGIN,
    .hsync_len = LCD_HSYNC_LEN,
    .upper_margin = LCD_UPPER_MARGIN ,
    .lower_margin = LCD_LOWER_MARGIN,
    .vsync_len = LCD_VSYNC_LEN,
};
 

pixclock:现在我们就可以开始设置这个结构体的参数了,有上面第3小结的表我们可以知道LCD的时钟Dclk应该是156ns,这个对应结构体里面的像素点时钟pixclock,在来看看第四节提到的一个公式 pixclock=1000000/DCF,这个DCF就是LCD的Dclk对应的频率,注意,单位为MHz,所以DCF=1000 000 000/156 Hz=1000/156 MHz;可以得到pixclock=1000000/(1000/156)=156000;
width、height的设定这个就没什么歧义了,对应320和240
bpp:其实我的这个LCD手册上说该屏是支持24位色的,但是这里填写16位,有空可以试试24位

其他的参数:其他参数对应第3节的表填写 xres         <===========> TEP

yres         <===========> Tvd

left_margin  <===========> Thf            time from sync to picture           HS Front Porch

right_margin <===========> Thb         time from picture to sync            HS Back Porch

hsync_len    <===========>  THS         length of horizontal sync           HS pulse width

upper_margin <===========> Tvf        time from sync to picture            VS Front Porch

lower_margin <===========> Tvb       time from picture to sync            VS Back Porch

vsync_len    <===========> Tvs           length of vertical sync                      VS pulse width
 
所以我的配置如下 #define LCD_WIDTH 320
#define LCD_HEIGHT 240
#define LCD_PIXCLOCK 156000

#define LCD_RIGHT_MARGIN 38
#define LCD_LEFT_MARGIN 20
#define LCD_HSYNC_LEN 30

#define LCD_UPPER_MARGIN 4
#define LCD_LOWER_MARGIN 15
#define LCD_VSYNC_LEN 3
 

基本上就这样了吧,呵呵


本篇文章来源于 Linux公社网站(www.linuxidc.com)  原文链接:http://www.linuxidc.com/Linux/2011-01/31800.htm

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值