SYLIXOS 龙芯2K1000 LCD屏参配置(1)

 

  1. LCD 显示原理

LCD(Liquid Crystal Display)是利用液晶分子的物理结构和光学特性进行显示的一种技术。液晶分子具有以下的特性:。

  1. 液晶分子是介于固体和液体之间的一种棒状结构的大分子物质;
  2. 在自然形态下具有光学各向异性的特点,在电(磁)场作用下,呈各向同性的特点。
  3. LCD 的显示原理是利用了液晶的特性,将液晶置于两片导电玻璃基板之间,在上下玻璃基板的两个电极作用下,引起液晶分子扭曲变形,改变通过液晶盒光束的偏振状态,实现对背光源光束的开关控制。若在两片玻璃间加上彩色滤光片,玻璃面上即可实现彩色图像显示。
  4. LCD 一般有以下几项衡量显示效果的指标:
  5. 物理分辨率:表示 LCD 可以显示的点的数目,为一个固定值。同样的尺寸下,分辨率越高,显示的画面越细致。
  6. 色饱和度:表示 LCD 色彩鲜艳的程度。显示器是由红色(R)、绿色(G)、蓝色(B)三种颜色光组合成任意颜色的, 如果 RGB 三原色越鲜艳,则 LCD 显示的颜色范围越广。
  7. 亮度:表示 LCD 在白色画面下明亮的程度。亮度是直接影响画面品质的重要因素,LCD 的亮度一般由背光脚控制,其电压由 PWM 产生,可以被调节。
  8. 对比度:表示 LCD 上同一点最亮时(白色)与最暗时(黑色)的亮度的比值,高的对比度意味着相对较高的亮度和呈现较好的锐利度。
  9. TFT-LCD 屏是目前嵌入式系统应用的主流,其时序如图1.1所示。

图 1.1 TFT-LCD波形时序

1.1 显示时序图中名词解释

名词

说明

VSYNC

每发出一个脉冲,表明屏幕上刷入一帧新的数据

HSYNC

每发出一个脉冲,表明屏幕上刷入一行新的数据

VBPD

每帧开始时需要插入的帧同步周期无效行数

VFPD

每帧结束时到下一帧同步周期之前的无效行数

HBPD

每行开始时需要插入的像素时钟周期数

HFPD

每行结束时需要插入的像素时钟周期数

VSYNC

表示帧同步脉冲的宽度

HSYNC

表示行同步信号的宽度

VCLK

像素时钟信号

VDEN

数据有效标志信号

在帧同步以及行同步的头尾都必须留有回扫时间,即图 1.1 中的(HBPD + 1)和(HFPD +1)为行回扫时间, (VBPD + 1)和(VFPD + 1)为帧回扫时间。该时序安排起源于 CRT 显示器电子枪偏转所需要的时间,但后来因其成为实际工业标准,所以 TFT 屏也包含了回扫时间。根据图 1.1 的显示时序图可以得到如图 1.2 所示的 FrameBuffer 可见区域表示图。

图 1.2 FrameBuffer 可见区域表示图

  1. 龙芯FB驱动屏参代码

在ls2xFb.c驱动源码中找到_G_lpLs2xLcdPanels结构体数组。如下代码所示屏参列表:

static LS2X_LCD_PANEL_CB  _G_lpLs2xLcdPanels[ENUM_SUPPORT_RES_NUM] = {

    [ENUM_800X480_RES] = {

            .uiResX          = 800,

            .uiResY          = 480,

            .uiVirResX       = 800,

            .uiVirResY       = 480,

            .uiOffsetX       = 0,

            .uiOffsetY       = 0,



            .uiRedMask       = 0xF800,

            .uiGreenMask     = 0x07E0,

            .uiBlueMask      = 0x001F,



            .uiBitsPerPixel  = 16,

            .uiBytesPerPixel = 2,

#if defined(ls2k)

            .uiPixelClk      = 30,

            .uiRefresh       = 60,



            .uiLeftMargin    = 50,

            .uiRightMargin   = 36,

            .uiUpperMargin   = 22,

            .uiLowerMargin   = 15,

            .uiHsyncLen      = 10,

            .uiVsyncLen      = 8,



            .pvArg           = LW_NULL,

#elif defined(ls2h)

            .uiPixelClk      = 45,

            .uiRefresh       = 60,



            .uiLeftMargin    = 48,

            .uiRightMargin   = 40,

            .uiUpperMargin   = 22,

            .uiLowerMargin   = 17,

            .uiHsyncLen      = 92,

            .uiVsyncLen      = 2,

#endif                                                        /*  defined(ls2h)        */

    },

    [ENUM_800X600_RES] = {

           .uiResX          = 800,

           .uiResY          = 600,

           .uiVirResX       = 800,

           .uiVirResY       = 600,

           .uiOffsetX       = 0,

           .uiOffsetY       = 0,



           .uiRedMask       = 0xF800,

           .uiGreenMask     = 0x07E0,

           .uiBlueMask      = 0x001F,



           .uiBitsPerPixel  = 16,

           .uiBytesPerPixel = 2,



           .uiPixelClk      = 38,

           .uiRefresh       = 60,



           .uiLeftMargin    = 104,

           .uiRightMargin   = 24,

           .uiUpperMargin   = 14,

           .uiLowerMargin   = 1,

           .uiHsyncLen      = 80,

           .uiVsyncLen      = 2,



           .pvArg           = LW_NULL,

},

         .

         .

         .

}

       一般有新的LCD屏需要配置的话,在该数组中添加新屏参数数组;

  1. 添加新屏示类

现以京东方TDA104-001V02型号屏作示类,一般在配置屏参时要找到LCD芯片手册中的屏幕参数那张节。如下图3.1是TDA104-001V02 屏参:

图 3.1 TDA101-001V02

在知道这些时序后就可以配置新的屏参参数了,如下所示代码即为新屏配置数据:

  

  [ENUM_1024X768_RES] = {

           .uiResX          = 1024,                         // 对应的图3.1中 HVD

           .uiResY          = 768,                            // 对应的图3.1中 VVD

           .uiVirResX       = 1024,                           // 默认与uiResX 一致

           .uiVirResY       = 768,                             // 默认与uiResY 一致

           .uiOffsetX       = 0,                                  // 默认0

           .uiOffsetY       = 0,                                  // 默认0



           .uiRedMask       = 0xF800,                     // 默认,和其它屏配置相同

           .uiGreenMask     = 0x07E0,                      // 默认,和其它屏配置相同

           .uiBlueMask      = 0x001F,                       // 默认,和其它屏配置相同



           .uiBitsPerPixel  = 16,                                   // 默认,和其它屏配置相同

           .uiBytesPerPixel = 2,                                     // 默认,和其它屏配置相同



           .uiPixelClk      = 15384,          //按图3.1 FDCLK= 65MHZ,可以参考其它屏算出

           .uiRefresh       = 60,                                 // 默认,和其它屏配置相同



           .uiLeftMargin    = 160,                               // 对应的图3.1中 HBP

           .uiRightMargin   = 24,                                // 对应的图3.1中 HFP

           .uiUpperMargin   = 29,                               // 对应的图3.1中 VBP

           .uiLowerMargin   = 3,                                 // 对应的图3.1中 VFP

           .uiHsyncLen      = 136,                             // 对应的图3.1中 HSW

           .uiVsyncLen      = 6,                                 // 对应的图3.1中 VSW



           .pvArg           = LW_NULL,

    },

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值