本文主要是介绍全志A133 Android10 lcd配置显示硬件参数说明,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一,概述
全志平台,通过board.dts
来配置一些通用的 LCD 配置参数。
内核板级配置:
longan/device/config/chips/a133/configs/b6/board.dts
二,硬件参数说明
1. lcd接口参数说明
lcd_driver_name
Lcd 屏驱动的名字(字符串),必须与屏驱动的名字对应。
lcd_model_name
Lcd 屏模型名字,非必须,可以用于同个屏驱动中进一步区分不同屏。
lcd_if
设置相应值的对应含义为:
0:HV RGB接口
1:CPU/I80接口
2:Reserved
3:LVDS接口
4:DSI接口
lcd_hv_if
这个参数只有在 lcd_if=0 时才有效。定义 RGB 同步屏下的几种接口类型。
设置相应值的对应含义为:
0:Parallel RGB
8:Serial RGB
10:Dummy RGB
11:RGB Dummy
12:Serial YUV (CCIR656)
lcd_hv_clk_phase
这个参数只有在 lcd_if=0 时才有效。定义 RGB 同步屏的 clock 与 data 之间的相位关系。
总共有 4个相位可供调节。设置相应值的对应含义为:
0: 0 degree
1: 90 degree
2: 180 degree
3: 270 degree
lcd_hv_sync_polarity
这个参数只有在 lcd_if=0 时才有效。定义 RGB 同步屏的 hsync 和 vsync 的极性。
设置相应值的对应含义为:
0:vsync active low,hsync active low
1:vsync active high,hsync active low
2:vsync active low,hsync active high
3:vsync active high,hsync active high
lcd_hv_srgb_seq
这个参数只有在 lcd_if=0 且 lcd_hv_if=8(Serial RGB)时才有效。
定义奇数行 RGB 输出的顺序:
0: Odd lines R‑G‑B; Even line R‑G‑B
1: Odd lines B‑R‑G; Even line R‑G‑B
2: Odd lines G‑B‑R; Even line R‑G‑B
4: Odd lines R‑G‑B; Even line B‑R‑G
5: Odd lines B‑R‑G; Even line B‑R‑G
6: Odd lines G‑B‑R; Even line B‑R‑G
8: Odd lines R‑G‑B; Even line B‑R‑G
9: Odd lines B‑R‑G; Even line G‑B‑R
10: Odd lines G‑B‑R; Even line G‑B‑R
lcd_hv_syuv_seq
这个参数只有在 lcd_if=0 且 lcd_hv_if=12(Serial YUV)时才有效。
定义 YUV 输出格式:
0:YUYV
1:YVYU
2:UYVY
3:VYUY
lcd_hv_syuv_fdly
这个参数只有在 lcd_if=0 且 lcd_hv_if=12(Serial YUV)时才有效。
定义 CCIR656 编码时 F 相对有效行延迟的行数:
0:F toggle right after active video line
1:Delay 2 lines (CCIR PAL)
2:Delay 3 lines (CCIR NTSC)
lcd_cpu_if
这个参数只有在 lcd_if=1 时才有效, 具体时序可参照RGB 和 I8080 管脚配置示意图中 CPU 那几列。
设置相应值的对应含义为:
0:18bit/1cycle (RGB666)
2: 16bit/3cycle (RGB666)
4:16bit/2cycle (RGB666)
6:16bit/2cycle (RGB666)
8:16bit/1cycle (RGB565)
10:9bit/1cycle (RGB666)
12:8bit/3cycle (RGB666)
14:8bit/2cycle (RGB565)
lcd_cpu_te
设置相应值的对应含义为,设置为 0 时,刷屏间隔时间为 lcd_ht × lcd_vt;设置为 1 或 2 时,刷屏间隔时间为两个 te 脉冲:
0:frame trigged automatically
1:frame trigged by te rising edge
2:frame trigged by te falling edge
lcd_lvds_if
设置相应值的对应含义为:
0:Single Link( 1 clock pair+3/4 data pair)
1:Dual Link(8 data lane,每4条lane接受一半像素,奇数像素或者偶数像素)
2: Dual Link (每4条lane接受全部像素,常用于物理双屏,且两个屏一样)
lcd_lvds_if 等于 2 的场景是,接两个一模一样的屏,然后两个屏显示同样的内容,此时 lcd 的其它timing 只需要填写一个屏的 timing 即可。
lcd_lvds_colordepth
设置相应值对应含义为:
0:8bit per color(4 data pair)
1:6bit per color(3 data pair)
lcd_lvds_mode
这个参数只有在 lcd_lvds_bitwidth=0 时才有效
设置相应值对应含义为 :
0:NS mode
1:JEDIA mode
lcd_dsi_if
这个参数只有在 lcd_if=4 时才有效。定义 MIPI DSI 屏的两种类型。
设置相应值的对应含义为:
0:Video mode
1:Command mode
2:video burst mode
注:Video mode 的 LCD 屏,是实时刷屏的,有 ht,hbp 等时序参数的定义;Command mode 的屏,屏上带有显示 Buffer,一般会有一个 TE 引脚。
lcd_dsi_lane
这个参数只有在 lcd_if=4 时才有效。
设置相应值的对应含义为:
1:1 data lane
2:2 data lane
3:3 data lane
4:4 data lane
lcd_dsi_format
这个参数只有在 lcd_if=4 时才有效。
设置相应值的对应含义为:
0:Package Pixel Stream, 24bit RGB
1:Loosely Package Pixel Stream, 18bit RGB
2:Package Pixel Stream, 18bit RGB
3:Package Pixel Stream, 16bit RGB
lcd_dsi_te
这个参数只有在 lcd_if=4 时才有效。
设置相应值的对应含义为:
0:frame trigged automatically
1:frame trigged by te rising edge
2:frame trigged by te falling edge
注:设置为 0 时,刷屏间隔时间为 lcd_ht × lcd_vt;设置为 1 或 2 时,刷屏间隔时间为两个 te 脉冲。这个的作用就是屏一端发给 SoC 端的信号,用于同步信号,如果使能这个变量,那么 SoC 内部的显示中断将由这个外部脚来触发。
lcd_dsi_port_num
这个参数只有在 lcd_if=4 时才有效。
设置相应值的对应含义为:
0:一个port
1:两个port
lcd_tcon_mode
Tcon 模式,这个参数只有在 lcd_if=4 时才有效。
设置相应值的对应含义为:
0:normal mode
1:tcon master mode(在第一次发送数据同步)
2::tcon master mode(每一帧都同步)
3:tcon slave mode(依靠master mode来启动)
4:one tcon driver two dsi(8条lane)
lcd_slave_tcon_num
Slave Tcon 的序号,这个参数只有在 lcd_if=4 时而且 lcd_tcon_mode 等于 1 或者 2 才有效。用于告诉 master 模式下的 tcon,从 tcon 的序号是多少。
设置相应值的对应含义为:
0:tcon_lcd0
1:tcon_lcd1
lcd_tcon_en_odd_even_div
这个参数只有在 lcd_if=4 而且 lcd_tcon_mode=4 时才有效。
设置相应值的对应含义为:
0:tcon将一帧图像分左右两半来发送给两个DSI模块
1:tcon将一帧图像分奇偶像素来发给两个DSI模块
lcd_sync_pixel_num
这个参数只有在 lcd_if=4 而且 lcd_tcon_mode 等于 2 或者 3 时才有效。
设置同步从 tcon 的起始 pixel
整数:不超过lcd_ht
lcd_sync_line_num
这个参数只有在 lcd_if=4 而且 lcd_tcon_mode 等于 2 或者 3 时才有效。
设置同步从 tcon 的起始行
整数:不超过lcd_vt
lcd_cpu_mode
Lcd CPU 模式,控制
设置相应值的对应含义为,设置为 0 时,刷屏间隔时间为 lcd_ht × lcd_vt;
设置为 1 或 2 时,刷屏间隔时间为两个 te 脉冲:
0:中断自动根据时序,由场消隐信号内部触发
1:中断根据数据Block的counter触发或者由外部te触发。
lcd_fsync_en
LCD 使能 fsync 功能,用于触发 sensor 出图, 目的是同步,部分 IC 支持。
0:disable
1:enable
lcd_fsync_act_time
LCD 的 fsync 功能,其中的有效电平时间长度,单位:像素时钟的个数。
0~lcd_ht‑1
lcd_fsync_dis_time
LCD 的 fsync 功能,其中的无效电平时间长度,单位:像素时钟的个数。
0~lcd_ht‑1
lcd_fsync_pol
LCD 的 fsync 功能的有效电平的极性。
0:有效电平为低
1:有效电平为高
lcd_start_delay
出现 LCD 显示前几行有闪条,或者 colorbar 1 ~ 7 可以显示,colorbar 8 显示不了的问题,可以调试一下这个参数试试。
整数:调试范围可以先从0 ~ 10调试,不可以再往上增加
2. 屏时序参数说明
时序参数对于调屏非常关键,决定了发送端(SoC)发送数据时序。由于涉及到发送端和接收端的调试,除了分辨率和尺寸之外,其它几个数值都不是绝对不变的,两款一样分辨率,同种接口的屏,它们的数值也有可能不一样。
获取途径如下:
- 询问 LCD 屏厂;
- 从屏手册或者 Driver IC 手册中查找(向屏厂索要这些文档);
lcd_ht = x + hspw + hbp + hfp
lcd_vt = y + vspw + vbp + vfp
lcd_x
显示屏的水平像素数量,也就是屏分辨率中的宽。
lcd_y
显示屏的垂直行数,也就是屏分辨率中的高。
lcd_ht
Horizontal Total time
指一行总的 dclk 的 cycle 个数。
lcd_hbp
Horizontal Back Porch
指有效行间,行同步信号(hsync)开始,到有效数据开始之间的 dclk 的 cycle 个数,包括同步信号区。注意的是包含了 hspw 段。
lcd_hbp= 实际的 hbp+ 实际的 hspw
lcd_hspw
Horizontal Sync Pulse Width
指行同步信号的宽度。单位为 1 个 dclk 的时间(即是 1 个 data cycle 的时间)。
lcd_vt
Vertical Total time 指一场的总行数。
lcd_vt 为偶数则传输是逐行扫描,为奇数则传输是隔行扫描;扫描模式配置错误会导致花屏。
lcd_vbp
Vertical Back Porch
指场同步信号(vsync)开始,到有效数据行开始之间的行数,包括场同步信号区。包含了 vspw 段,也就是
lcd_vbp= 实际的 vbp+ 实际的 vspw
lcd_vspw
Vertical Sync Pulse Width
指场同步信号的宽度。
lcd_dclk_freq
Dot Clock Frequency
传输像素传送频率(单位为 MHz)
fps = (lcd_dclk_freq×1000×1000) / (ht×vt)
这个值根据以下公式计算:
lcd_dclk_freq=lcd_ht*lcd_vt*fps
注意:
- 后面的三个参数都是从屏手册中获得,fps 一般是 60。
- 如果是串行接口,发完一个像素需要 2 到 3 个周期的,那么
lcd_dclk_freq * cycles = lcd_ht*lcd_vt*fps
或者
lcd_dclk_freq = lcd_ht*cycles*lcd_vt*fps
lcd_width
Width of lcd panel in mm
此参数描述 lcd 屏幕的物理宽度,单位是 mm。用于计算 dpi。
lcd_height
height of lcd panel in mm
此参数描述 lcd 屏幕的物理高度,单位是 mm。用于计算 dpi。
lcd_start_delay
此参数用于每一帧 de 向 tcon 送数据前的延时,该值配置不合理会导致前几行出现闪屏。
3. 背光相关参数
目前用得比较广泛的就是 pwm 背光调节,原理是利用 pwm 脉冲开关产生的高频率闪烁效应,通过调节占空比,达到欺骗人眼,调节亮暗的目的。
lcd_pwm_used
是否使用 pwm
此参数标识用以背光亮度的控制。
lcd_pwm_ch
此参数标识使用的 Pwm 通道,这里是指使用 SoC 哪个 pwm 通道,通过查看原理图连接可知。
lcd_pwm_freq
这个参数配置 PWM 信号的频率,单位为 Hz。
说明:频率不宜过低否则很容易就会看到闪烁,频率不宜过快否则背光调节效果差。部分屏手册会标明所允许的 pwm 频率范围,请遵循屏手册固定范围进行设置。在低亮度的时候容易看到闪烁,是正常现象,目前已知用上 pwm 的背光都是如此。
lcd_pwm_pol
这个参数配置 PWM 信号的占空比的极性。设置相应值对应含义为:
0:active high
1:active low
lcd_pwm_max_limit
Lcd backlight PWM 最高限制,以亮度值表示。
比如 150,则表示背光最高只能调到 150,0‑255 范围内的亮度值将会被线性映射到 0‑150 范围内。用于控制最高背光亮度,节省功耗。
lcd_bl_en
背光使能脚,非必须,看原理图是否有,用于使能或者禁止背光电路的电压。
示例:lcd_bl_en = port:PD24<1><2><1>
含义:PD24 输出高电平时打开 LCD 背光;下拉,默认高电平
• 第一个尖括号:功能分配。1 为输出。
• 第二个尖括号:内置电阻。使用 0 的话,标示内部电阻高阻态,如果是 1 则是内部电阻上拉,2就代表内部电阻下拉。使用 default 的话代表默认状态,即电阻上拉。其它数据无效。
• 第三个尖括号:驱动能力。default 表驱动能力是等级 1。
• 第四个尖括号:电平。0 为低电平,1 为高电平。
一般来说,高电平是使能,在这个前提下,建议将内阻电阻设置成下拉,防止硬件原因造成的上拉,导致背光提前亮。默认电平填写高电平,这是 uboot 显示过度到内核显示、平滑无闪烁的需要。
lcd_bl_n_percent
背光映射值,n 为 (0‑100)。
此功能是针对亮度非线性的 LCD 屏的,按照配置的亮度曲线方式来调整亮度变化,以使亮度变化更线性。
比如 lcd_bl_50_percent = 60,表明将 50% 的亮度值调整成 60%,即亮度比原来提高 10%。
说明:修改此属性不当可能导致背光调节效果差。
lcd_backlight
背光默认值,0‑255。
此属性决定在 uboot 显示 logo 阶段的亮度,进入都内核时则是读取保存的配置来决定亮度。
说明:显示 logo 阶段,一般来说需要比较亮的亮度,业内做法都是如此。
三,调试
1. 查看显示信息
cat /sys/class/disp/disp/attr/sysscreen 0:
de_rate 297000000 hz, ref_fps:60
mgr0: 1280x800 fmt[rgb] cs[0x204] range[full] eotf[0x4] bits[8bits] err[0] force_sync[0] unblank direct_show[false]
lcd output backlight( 50) fps:60.9 1280x 800
err:0 skip:31 irq:1942 vsync:0 vsync_skip:0
BUF enable ch[1] lyr[0] z[0] prem[N] a[globl 255] fmt[ 8] fb[1280, 800;1280, 800;1280, 800] crop[ 0, 0,1280, 800]
frame[ 0, 0,1280, 800] addr[ 0, 0, 0] flags[0x 0] trd[0,0]
lcd output
表示当前显示接口是 LCD 输出。
1280x800
表示当前 LCD 的分辨率,与 board.dts 中 lcd0 的设置一样。
ref_fps:60
是根据你在 board.dts 的 lcd0 填的时序算出来的理论值。
fps:60.9
后面的数值是实时统计的,正常来说应该是在 60(期望的 fps) 附近,如果差太多则不正常,重新检查屏时序,和在屏驱动的初始化序列是否有被调用到。
irq:1942
这是 vsync 中断的次数,每加 1 都代表刷新了一帧,正常来说是一秒 60(期望的 fps)次,重复cat sys,如果无变化,则异常。
BUF
开头的表示图层信息,一行 BUF 表示一个图层,如果一个 BUF 都没有出现,那么将是黑屏,不过和屏驱动本身关系就不大了,应该查看应用层 & 框架层。
err:0
这个表示缺数,如果数字很大且一直变化,屏幕会花甚至全黑,全红等。
skip:31
这个表示跳帧的数量,如果这个数值很大且一直变化,有可能卡顿,如果数字与 irq 后面的数字一样,说明每一帧都跳,会黑屏(有背光)。
2.查看 pwm 信息
Pwm 的用处是提供背光电源。
cat /sys/kernel/debug/pwmplatform/7020c00.s_pwm, 1 PWM device
pwm‑0 ((null) ): period: 0 ns duty: 0 ns polarity: normal
platform/300a000.pwm, 2 PWM devices
pwm‑0 (lcd ): requested enabled period: 20000 ns duty: 3984 ns polarity: normal
pwm‑1 ((null) ): period: 0 ns duty: 0 ns polarity: normal
“requested enabled” 表示请求并且使能了,括号里面的 lcd 表示是由 lcd 申请的。
3. 查看时钟信息
cat /sys/kernel/debug/clk/clk_summary
这个命令可以看哪个时钟是否使能,然后频率是多少。与显示相关的是 tcon,pll_video,mipi等。
cat /sys/kernel/debug/clk/clk_summary | grep tcon
cat /sys/kernel/debug/clk/clk_summary | grep pll_video
cat /sys/kernel/debug/clk/clk_summary | grep mipi
这篇关于全志A133 Android10 lcd配置显示硬件参数说明的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!