当前位置:首页 > 单片机 > 单片机
[导读]PC主机:Ubuntu 10.4 和redhat 9.0目标板:TQ2440开发板 Linux内核:2.6.30屏幕型号:WXCAT35-TG3#001F 分辨率: 320X240本文将介绍如何移植LCD设备。在移植前,先配置下内核,将LCD设备编译进内核。1.移植移植LCD设

PC主机:Ubuntu 10.4 和redhat 9.0

目标板:TQ2440开发板 Linux内核:2.6.30

屏幕型号:WXCAT35-TG3#001F 分辨率: 320X240


本文将介绍如何移植LCD设备。

在移植前,先配置下内核,将LCD设备编译进内核。


1.移植

移植LCD设置只须修改位于arch/arm/mach-s3c2440/mach-smdk2440.c中的两个结构体的数据。

1.1 s3c2410fb_display结构

修改后的内容如下:



/*LCDdriverinfo*/

staticstructs3c2410fb_displaysmdk2440_lcd_cfg__initdata={

.lcdcon5=S3C2410_LCDCON5_FRM565|

S3C2410_LCDCON5_INVVLINE|

S3C2410_LCDCON5_INVVFRAME|

S3C2410_LCDCON5_PWREN|

S3C2410_LCDCON5_HWSWP,

.type=S3C2410_LCDCON1_TFT,

.width=320,//240,

.height=240,//320,

.pixclock=156250,//166667,/*HCLK60MHz,divisor10*/

.xres=320,//240,

.yres=240,//320,

.bpp=16,

.left_margin=20,

.right_margin=38,//8,

.hsync_len=30,//4,

.upper_margin=15,//8,

.lower_margin=12,//7,

.vsync_len=3,//4,

};


上面的参数是如何修改的呢?我们来看下。


type表示显示模式,这里为TFT模式。

width和height表示屏幕的分辨率,我的分辨率是320X240。

xres和yres分别等于width和height。

bpp表示所每个像素点位数,这里使用16位。

left_margin,right_margin,hsync_len,upper_margin,lower_margin,vsync_len这六个参数的值由LCD的手册给出。下图为LCD中的参数:


在这里,我给出上面6个参数和LCD手册中数据的对应关系:


.left_margin = Hsync front porch = 20

.right_margin = Hsync back porch = 38

.hsync_len = Hsync pulse width = 30

.upper_margin = Vsyncbackporch = 15

.lower_margin = Vsync front porch = 12

.vsync_len = Vsync pulse width = 3


pixclock的值是用来计算CLKVAL的。在S3C2440的datasheet中,CLKVAL的计算公式为:

CLKVAL = HCLK / VCLK / 2 -1,而VCLK即为上面图中的Dclk,值为6.4MHz。


/*s3c2410fb_activate_var

*

*activate(set)thecontrollerfromthegivenframebuffer

*information

*/

staticvoids3c2410fb_activate_var(structfb_info*info)

{

structs3c2410fb_info*fbi=info->par;

void__iomem*regs=fbi->io;

inttype=fbi->regs.lcdcon1&S3C2410_LCDCON1_TFT;/*regs.lcdcon1在s3c2410fb_check_var设置*/

structfb_var_screeninfo*var=&info->var;

intclkdiv=s3c2410fb_calc_pixclk(fbi,var->pixclock)/2;

dprintk("%s:var->xres=%dn",__func__,var->xres);

dprintk("%s:var->yres=%dn",__func__,var->yres);

dprintk("%s:var->bpp=%dn",__func__,var->bits_per_pixel);

if(type==S3C2410_LCDCON1_TFT){

s3c2410fb_calculate_tft_lcd_regs(info,&fbi->regs);/*根据var,计算出控制寄存器需要设置的值*/

--clkdiv;

if(clkdiv<0)

clkdiv=0;

}else{

s3c2410fb_calculate_stn_lcd_regs(info,&fbi->regs);

if(clkdiv<2)

clkdiv=2;

}

fbi->regs.lcdcon1|=S3C2410_LCDCON1_CLKVAL(clkdiv);/*设置CLKVAL*/

/*writenewregisters*/

dprintk("newregisterset:n");

dprintk("lcdcon[1]=0x%08lxn",fbi->regs.lcdcon1);

dprintk("lcdcon[2]=0x%08lxn",fbi->regs.lcdcon2);

dprintk("lcdcon[3]=0x%08lxn",fbi->regs.lcdcon3);

dprintk("lcdcon[4]=0x%08lxn",fbi->regs.lcdcon4);

dprintk("lcdcon[5]=0x%08lxn",fbi->regs.lcdcon5);

/*把计算好的值填入LCD控制器中*/

writel(fbi->regs.lcdcon1&~S3C2410_LCDCON1_ENVID,

regs+S3C2410_LCDCON1);/*仍然禁止LCD*/

writel(fbi->regs.lcdcon2,regs+S3C2410_LCDCON2);

writel(fbi->regs.lcdcon3,regs+S3C2410_LCDCON3);

writel(fbi->regs.lcdcon4,regs+S3C2410_LCDCON4);

writel(fbi->regs.lcdcon5,regs+S3C2410_LCDCON5);

/*setlcdaddresspointers*/

s3c2410fb_set_lcdaddr(info);/*设置LCD帧缓冲起始地址*/

fbi->regs.lcdcon1|=S3C2410_LCDCON1_ENVID,

writel(fbi->regs.lcdcon1,regs+S3C2410_LCDCON1);/*使能LCD*/

}

staticunsignedints3c2410fb_calc_pixclk(structs3c2410fb_info*fbi,

unsignedlongpixclk)

{

unsignedlongclk=clk_get_rate(fbi->clk);/*获取当前时钟频率(Hz)*/

unsignedlonglongdiv;

/*pixclkisinpicoseconds,ourclockisinHz

*

*Hz->picosecondsis/10^-12

*/

div = (unsigned long long)clk * pixclk;

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED(Light Emitting Diode)与LCD(Liquid Crystal Display)是当今显示技术领域的两大重要分支,各自凭借独特的优势在消费电子、广告传媒、工业控制、家用电器等多个领域占据着主导地...

关键字: LED LCD

液晶显示器(Liquid Crystal Display,简称LCD)作为一种广泛应用于电视、电脑显示器、手机以及各类电子产品的显示技术,其发展历程与科技创新紧密相连。LCD技术以其独特的构造和工作原理,在过去的几十年里...

关键字: LCD 液晶显示

LCD屏幕的优点包括较长的寿命、较便宜的价格、较宽的视角和较好的亮度均匀性,适合对亮度和均匀性有较高要求,注重电池寿命的用户。

关键字: LCD OLED 屏幕

LCD背光源将是下述内容的主要介绍对象,通过这篇文章,小编希望大家可以对它的相关情况以及信息有所认识和了解,详细内容如下。

关键字: LCD 背光源

Holtek A/D Flash LCD MCU新增系列成员HT67F2362A与HT67F2372A,分别为HT67F2362及HT67F2372的延伸产品,特点为新增C-type LCD驱动使得低压时可维持显示效果,...

关键字: MCU LCD LED 驱动电路

LCD与LED是两种采用不同工作原理的显示技术,LCD是由液态晶体组成的显示屏,而LED则是由发光二极管组成的显示屏。

关键字: LED 手机屏 LCD

台湾液晶显示面板制造商——群创光电,近日传出了变相裁员、逼迫员工自愿离职的消息。

关键字: LCD 显示器 群创光电

为增进大家对显示屏的认识,本文将对LCD显示屏、延长LCD显示屏寿命的方法、防止LCD显示屏静电的方法予以介绍。

关键字: LCD 显示屏 指数

为增进大家对显示屏的认识,本文将对LCD显示屏驱动方法以及定制LCD显示屏需要注意的参数予以介绍。

关键字: LCD 显示屏 指数

为增进大家对显示屏的认识,本文将对LCD显示屏的特点、LCD显示屏存储注意事项、处理LCD显示屏花屏的方法予以介绍。

关键字: LCD 显示屏 指数
关闭
关闭