linux 内核配置lcd屏,在linux内核里面设置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的手册可以得到如下一个表

100615150303.png

该表描述了该款并行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

right_margin <===========> Thb

hsync_len    <===========> THS

upper_margin

<===========> Tvf

lower_margin

<===========> Tvb

vsync_len

<===========> Tvs所以我的配置如下#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

基本上就这样了吧,呵呵

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值