a33

A33-LVDS 屏幕参数

sys_config.fex

Posted by LXG on August 1, 2022

示意图

lvds_para_model

sys_config.fex


;----------------------------------------------------------------------------------
;disp init configuration
;
;disp_mode             (0:screen0<screen0,fb0>)
;screenx_output_type   (0:none; 1:lcd; 3:hdmi;)
;screenx_output_mode   (used for hdmi output, 0:480i 1:576i 2:480p 3:576p 4:720p50)
;                      (5:720p60 6:1080i50 7:1080i60 8:1080p24 9:1080p50 10:1080p60)
;fbx format            (4:RGB655 5:RGB565 6:RGB556 7:ARGB1555 8:RGBA5551 9:RGB888 10:ARGB8888 12:ARGB4444)
;fbx pixel sequence    (0:ARGB 1:BGRA 2:ABGR 3:RGBA)
;fb0_scaler_mode_enable(scaler mode enable, used FE)
;fbx_width,fbx_height  (framebuffer horizontal/vertical pixels, fix to output resolution while equal 0)
;lcdx_backlight        (lcd init backlight,the range:[0,256],default:197
;lcdx_yy               (lcd init screen bright/contrast/saturation/hue, value:0~100, default:50/50/57/50)
;lcd0_contrast         (LCD contrast, 0~100)
;lcd0_saturation       (LCD saturation, 0~100)
;lcd0_hue              (LCD hue, 0~100)
;----------------------------------------------------------------------------------
[disp_init]
disp_init_enable         = 1
disp_mode                = 0

screen0_output_type      = 1
screen0_output_mode      = 4

screen1_output_type      = 1
screen1_output_mode      = 4

fb0_format               = 10
fb0_pixel_sequence       = 0
fb0_scaler_mode_enable   = 0
fb0_width                = 0
fb0_height               = 0

fb1_format               = 10
fb1_pixel_sequence       = 0
fb1_scaler_mode_enable   = 0
fb1_width                = 0
fb1_height               = 0

lcd0_backlight           = 197
lcd1_backlight           = 197

lcd0_bright              = 50
lcd0_contrast            = 50
lcd0_saturation          = 57
lcd0_hue                 = 50

lcd1_bright              = 50
lcd1_contrast            = 50
lcd1_saturation          = 57
lcd1_hue                 = 50

;----------------------------------------------------------------------------------
;lcd0 configuration

;lcd_if:               0:hv(sync+de); 1:8080; 2:ttl; 3:lvds; 4:dsi; 5:edp; 6:extend dsi
;lcd_x:                lcd horizontal resolution
;lcd_y:                lcd vertical resolution
;lcd_width:            width of lcd in mm
;lcd_height:           height of lcd in mm
;lcd_dclk_freq:        in MHZ unit
;lcd_pwm_freq:         in HZ unit
;lcd_pwm_pol:          lcd backlight PWM polarity
;lcd_pwm_max_limit     lcd backlight PWM max limit(<=255)
;lcd_hbp:              hsync back porch
;lcd_ht:               hsync total cycle
;lcd_vbp:              vsync back porch
;lcd_vt:               vysnc total cycle
;lcd_hspw:             hsync plus width
;lcd_vspw:             vysnc plus width
;lcd_lvds_if:          0:single link;  1:dual link
;lcd_lvds_colordepth:  0:8bit; 1:6bit
;lcd_lvds_mode:        0:NS mode; 1:JEIDA mode
;lcd_frm:              0:disable; 1:enable rgb666 dither; 2:enable rgb656 dither
;lcd_io_phase:         0:noraml; 1:intert phase(0~3bit: vsync phase; 4~7bit:hsync phase;
;                      8~11bit:dclk phase; 12~15bit:de phase)
;lcd_gamma_en          lcd gamma correction enable
;lcd_bright_curve_en   lcd bright curve correction enable
;lcd_cmap_en           lcd color map function enable
;deu_mode              0:smoll lcd screen; 1:large lcd screen(larger than 10inch)
;lcdgamma4iep:         Smart Backlight parameter, lcd gamma vale * 10;
;                      decrease it while lcd is not bright enough; increase while lcd is too bright
;smart_color           90:normal lcd screen 65:retina lcd screen(9.7inch)
;----------------------------------------------------------------------------------
[lcd0_para]
lcd_used            = 1


lcd_driver_name     = "default_lcd"
lcd_if              = 3
lcd_x               = 800
lcd_y               = 1280
lcd_width           =
lcd_height          =
lcd_dclk_freq       = 60
lcd_pwm_used        = 1
lcd_pwm_ch          = 0
lcd_pwm_freq        = 50000
lcd_pwm_pol         = 0
lcd_hbp             = 24
lcd_ht              = 920
lcd_hspw            = 24
lcd_vbp             = 10
lcd_vt              = 1304
lcd_vspw            = 2
lcd_lvds_if         = 0
lcd_lvds_colordepth = 0
lcd_lvds_mode       = 0
lcd_frm             = 1
lcd_io_phase        = 0x0100
lcd_gamma_en        = 0
lcd_bright_curve_en = 0
lcd_cmap_en         = 0

deu_mode            = 0
lcdgamma4iep        = 22
smart_color         = 90

lcd_bl_en           = port:PL04<1><0><default><1>
lcd_power           = "axp22_dc1sw"

lcdd0               = port:PD18<3><0><default><default>
lcdd1               = port:PD19<3><0><default><default>
lcdd2               = port:PD20<3><0><default><default>
lcdd3               = port:PD21<3><0><default><default>
lcdd4               = port:PD22<3><0><default><default>
lcdd5               = port:PD23<3><0><default><default>
lcdd6               = port:PD24<3><0><default><default>
lcdd7               = port:PD25<3><0><default><default>
lcdd8               = port:PD26<3><0><default><default>
lcdd9               = port:PD27<3><0><default><default>


;----------------------------------------------------------------------------------
;pwm config
;----------------------------------------------------------------------------------
[pwm0_para]
pwm_used            = 1
pwm_positive        = port:PH00<2><0><default><default>

[pwm1_para]
pwm_used            = 0
pwm_positive        = port:PH01<2><0><default><default>

屏幕参数

a33_lvds_para1 a33_lvds_para2

原理图

主控屏线

a33_board_lvds

a33_board_lvds2

使能和PWM

a33_board_lvds3

电源 axp22_dc1sw

a33_lcd_power

a33_lcd_power2

FAQ611

全志平台在board.dts(或sys_config.fex)文件的lcd0节点中,对LCD屏幕的timing时序参数进行了配置。

时序参数对于调屏非常关键,决定了发送端(SoC)发送数据时序。由于涉及到发送端和接收端的调试,除了分辨率和尺寸之外,其它几个数值都不是绝对不变的,两款一样分辨率,同种接口的屏,它们的数值也有可能不一样。

timing获取方式

最好的获取方式是通过询问LCD屏厂获得确切的时序参考值。其次或是从屏手册或者Driver IC手册中查找(向屏厂索要这些文档)。

至少需要从屏厂获得Width(屏宽),Height(屏高),HBP,HFP,HSW,VBP,VFP,VSW的数值。

全志board.dts中屏时序参数说明

lcd_x

含义:显示屏的水平像素数量,也就是屏分辨率中的宽。

数值:对应屏厂Width。

lcd_y

含义:显示屏的垂直行数,也就是屏分辨率中的高。

数值:对应屏厂Height。

lcd_hspw

含义:Horizontal Sync Pulse Width。指行同步信号的宽度。单位为1个dclk的时间(即是1个data cycle的时间)。

数值:对应屏厂HSW。

lcd_hbp

含义:Horizontal Back Porch。指有效行间,行同步信号(hsync)开始,到有效数据开始之间的 dclk 的 cycle 个数,包括同步信号区。

数值:是包含了hspw段,也就是lcd_hbp = 实际的hbp + 实际的hspw。对应屏厂HBP+HSW。

lcd_ht

含义:Horizontal Total time。指一行总的 dclk 的 cycle 个数。

数值:lcdht = lcdx + lcdhspw + lcdhbp + lcdhfp。对应屏厂Width+HSW+HBP+HFP。

由上面公式可知,我们不需要设置lcdhfp参数,因为驱动会自动根据其它几个已知参数中算出lcd_hfp。

lcd_vspw

含义:Vertical Sync Pulse Width。指场同步信号的宽度。单位为行。

数值:对应屏厂VSW。

lcd_vbp

含义:Vertical Back Porch。指场同步信号(vsync)开始,到有效数据行开始之间的行数,包括场同步信号区。

数值:是包含了vspw段,也就是lcd_vbp = 实际的vbp + 实际的vspw。对应屏厂VBP+VSW。

lcd_vt

含义:Vertical Total time。指一场的总行数。

数值:lcdvt = lcdy + lcdvspw + lcdvbp + lcdvfp。对应屏厂Height+VSW+VBP+VFP。

由上面公式可知,我们不需要设置lcdvfp参数,因为驱动会自动根据其它几个已知参数中算出lcd_vfp。

lcddclkfreq

含义:Dot Clock Frequency。传输像素传送频率。单位为MHz。

数值:lcddclkfreq = lcdht * lcdvt * fps,fps一般是60。注意lcddclkfreq数值取整数,单位是MHz。

如果是串行接口,发完一个像素需要2到3个周期的,那么,

lcddclkfreq * cycles = lcdht * lcdvt * fps 或者 lcddclkfreq = lcdht * cycles * lcdvt * fps。

实例演练

假如调试一款mipi屏,通过询问屏厂获得了屏的时序参数如下: Width-200,Height-400,HBP-120,HFP-130,HSW-60,VBP-20,VFP-40,VSW-40。

那么,对board.dts文件中的屏时序相关参数配置如下:


        lcd_x               = <200>;
        lcd_y               = <400>;
        lcd_dclk_freq       = <15>;

        lcd_hbp             = <180>;
        lcd_ht              = <510>;
        lcd_hspw            = <60>;
        lcd_vbp             = <60>;
        lcd_vt              = <500>;
        lcd_vspw            = <40>;

lcd_lvds_mode

lcd_lvds_mode: 0:NS mode; 1:JEIDA mode

lcd_lvds_mode 参数通常有两个或多个可选值,比如0代表NS mode,1代表JEIDA mode等。

  • NS mode:这是一个特定的LVDS信号传输模式,可能是某种特定的自定义标准,或者是针对某个特定品牌或型号的显示器所设计的信号格式。
  • JEIDA mode:则是遵循JEIDA(日本电子工业发展协会)制定的一种LVDS接口标准,它规定了数据线的数量、排列方式、时序和电平转换等细节,确保与遵循同样标准的LCD面板能够正确同步并接收图像数据。 简而言之,lcd_lvds_mode 参数就是用来告诉系统应该按照何种协议或标准来与连接的LVDS接口液晶显示器进行通信,确保视频信号的正确传输和显示。在实际应用中,应根据所使用的LCD屏的实际规格和数据手册来设置对应的模式,以确保屏幕能够正常显示图像。