基于PXA270的LCD显示系统的设计与实现

[09-13 16:45:59]   来源:http://www.88dzw.com  信息显示与光电技术   阅读:8594

文章摘要: pxafb_set_var()函数是为控制台设备驱动的高层提供一个驱动帧缓冲区的界面。同时也确定一些与画面缓冲区有关的参数,并记录在一个fb_var_screeinfo数据结构中。确定了这些参数以后,如果目标帧缓冲区属于当前选定的控制台设备,就通过pxa_activate_var()函数把这些参数分门别类地组合生成PXA270各有关寄存器的映像,并最终设置到PXA270的各个LCD控制寄存器中。 这里用到6个寄存器: DBAR1:DMA通道1的基地址寄存器,用于调色板; DBAR2:DMA通道2的基地址寄存器,用于画图; LCCR0

基于PXA270的LCD显示系统的设计与实现,标签:显示及光电,光电显示技术,http://www.88dzw.com

       pxafb_set_var()函数是为控制台设备驱动的高层提供一个驱动帧缓冲区的界面。同时也确定一些与画面缓冲区有关的参数,并记录在一个fb_var_screeinfo数据结构中。确定了这些参数以后,如果目标帧缓冲区属于当前选定的控制台设备,就通过pxa_activate_var()函数把这些参数分门别类地组合生成PXA270各有关寄存器的映像,并最终设置到PXA270的各个LCD控制寄存器中。

       这里用到6个寄存器:

       DBAR1:DMA通道1的基地址寄存器,用于调色板;

       DBAR2:DMA通道2的基地址寄存器,用于画图;

       LCCR0:黑白/彩色模式选择,单画面/双画面显示方式、被动/主动显示模式选择;

       LCCR1:控制着水平方面的扫描,包括每行的像素、水平同步脉冲宽度、在水平扫描行的开头和末尾各空出几个像素等参数;

       LCCR2:控制着垂直方面的扫描,包括每个画面的行数、垂直同步脉冲宽度、在画面的顶部和底部各空出几行等参数;

  LCCR3:控制着像素时钟的频率以及各种同步脉冲的极性。

       这些宏操作都在/drivers/video/pxafb.h文件里。

#if defined(CONFIG_FB_LB064v02)

#define LCD_PIXCLOCK        250000//54000//150000

#define LCD_BPP             16

#define LCD_XRES            640

#define LCD_YRES            480

#define LCD_HORIZONTAL_SYNC_PULSE_WIDTH 46

#define LCD_VERTICAL_SYNC_PULSE_WIDTH   1

#define LCD_BEGIN_OF_LINE_WAIT_COUNT    96

#define LCD_BEGIN_FRAME_WAIT_COUNT    35

#define LCD_END_OF_LINE_WAIT_COUNT     4

#define LCD_END_OF_FRAME_WAIT_COUNT    0

#define LCD_SYNC    (FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT)

#define LCD_LCCR0   (LCCR0_OUC | LCCR0_CMDIM | LCCR0_RDSTM | LCCR0_OUM | LCCR0_BM | LCCR0_QDM | LCCR0_PAS |LCCR0_EFM | LCCR0_IUM | LCCR0_SFM | LCCR0_LDM )

#define LCD_LCCR3                   (LCCR3_PCP | LCCR3_HSP | LCCR3_VSP)

#endif

       最后是通过register_framebuffer()进行各项登记,使帧缓冲区与控制台设备驱动的高层相连。参数fbi是一个指向fb_info数据结构的指针,通过这个数据结构使帧缓冲区与文件系统连接起来。

       3.2 帧缓冲区的操作

       对帧缓冲区的操作,应用程序首先要打开代表帧缓冲区的设备文件,帧缓冲区的file_operations数据结构是fb_fops。

static struct file_operations fb_fops = {

      owner:                 THIS_MODULE,

      read:           fb_read,   // 读操作

      write:                   fb_write, // 写操作

      ioctl:           fb_ioctl,  // 控制操作

      mmap:                 fb_mmap, // 映射操作

      open:                   fb_open,  // 打开操作

      release:       fb_release,    // 关闭操作

#ifdef HAVE_ARCH_FB_UNMAPPED_AREA

      get_unmapped_area: get_fb_unmapped_area,

#endif

};

上一页  [1] [2] [3] [4]  下一页


Tag:信息显示与光电技术显示及光电,光电显示技术信息显示与光电技术
分类导航
最新更新
热门排行