1. 概述
lcd 显示屏有多种接口方式,dsi(mipi)是最常见的一种。Dsi 的lcd显示屏调试一般分时序设置及寄存器参数设置两部分。(固件版本需升级至v1.21c或之后,固件版本号在“设置”->"关于手机"页面的最后一行可以查到)
2. 调试步骤
2.1 检查硬件电路。
确保开机后屏的背光能正常显示,供电电压及复位信号正常。如果是evb6开发板,请短接开发板上部调试插座右数第二个孔的scl到地,避免系统进入hdmi屏模式。
2.2 DSI 时序参数设置
dsi时序参数通过修改下面系统属性实现,参数的具体值要参考屏幕的规格书(具体命令例子请参考2.6):
persist.lcd.w : 屏的宽,单位像素.
persist.lcd.h : 屏的高,单位像素. 宽x高即是屏的分辨率(屏分横屏和竖屏,前者宽大于高,后者反之)
persist.lcd.hsa:行同步宽度
persist.lcd.hfp:行front porch
persist.lcd.hbp:行back porch
persist.lcd.vsa:场同步宽度
persist.lcd.vfp:场front porch
persist.lcd.vbp:场back porch
persist.lcd.dsi.lane.num : mipi lane的数量,取值1-4,默认4.
persist.disp.reinit:请置1
persist.lcd.dsi.eotp.dis: 该参数大部分屏不需要设,少数屏需设为0. 默认是1
如果当前屏分辨率和默认分辨率不一致,上述属性修改后需重启一次设备。 重启后运行adb shell wm size 确认分辨率是否正确。上述参数的值需根据屏的规格书来设置。
强调一下,整个调试过程中,只有发现分辨率跟实际不一样的时候,才需要重启系统,当然,增加重启次数也不会有问题。
2.3 屏的寄存器参数设置
寄存器的值一般要参考厂家提供的屏幕初始化参数,按照下面的格式通过命令文件形式保存到设备,下面是参考例子:
文件每一行代表一条命令,命令格式:命令名+参数(1个或多个),主要命令定义如下,
LCD_MIPI_WR_CMD Reg Data1 Data2
》寄存器写命令,Reg是16进制,代表寄存器首地址,data1,data2..是对应待写入该寄存器的数据,16进制
LCD_MIPI_RD_CMD Reg Count
》寄存器读命令,Reg是16进制,代表寄存器首地址,Count是10进制,表示读的字节. 该命令尽量少用,如果用,最好只读1~2个寄存器。调试过程中如果屏没有任何显示可以加该命令协助定位问题,一个寄存器都读不到请重点排查硬件。
LCD_DELAY_CMD Time
》延时命令,Time单位是毫秒,10进制
LCD_MIPI_RST_CMD Level
》复位命令,Level表示复位脚电平,取0或1,10进制。该命令一般不需要用。
注释,以英文#号开头
》参数文件第一行请添加注释,注明芯片型号和分辨率等,如:#ic:st7701,size:480x800
命令文件必须以lcd_cmd.cfg命名,可通过adb push命令把文件拷贝到设备的/data/misc/目录,如:
adb push lcd_cmd.cfg /data/misc/lcd_cmd.cfg
2.4 参数生效
时序参数或寄存器参数修改后,设置属性tml.hdmi.timing.up 为1让参数马上生效,此时可观察屏的显示变化。命令如下:adb shell setprop tml.lcd.timing.up 1
2.5 状态查询
可以通过读取下面属性来了解当前参数的值
tml.lcd.paras : 属性的值包含 lcd_w/lcd_h/lcd_hsa/lcd_hfp/mipi_lane等参数
tml.lcd.paras2 : 属性的值包含屏的其它参数,重点看cmd_cnt,该参数表示lcd_cmd.cfg的有效命令行数
tml.lcd.read.data : 属性的值代表读命令的返回结果
tml.lcd.paras3 : 其它参数,一般不需要关注。
2.6 命令举例
adb shell setprop persist.lcd.w 800
adb shell setprop persist.lcd.h 1280
adb shell setprop persist.lcd.hsa 8
adb shell setprop persist.lcd.hfp 52
adb shell setprop persist.lcd.hbp 48
adb shell setprop persist.lcd.vsa 6
adb shell setprop persist.lcd.vfp 16
adb shell setprop persist.lcd.vbp 15
adb shell setprop persist.lcd.dsi.lane.num 4
adb push lcd_cmd.txt /data/misc/lcd_cmd.cfg
adb shell setprop persist.disp.reinit 1
adb reboot
//如果已经显示正常,后续命令请忽略,否则继续调整参数
//确认分辨率是否正常
adb shell wm size
//… 调整参数
//参数生效:
adb shell setprop tml.lcd.timing.up 1
查看状态:
adb shell getprop tml.lcd.paras
adb shell getprop tml.lcd.paras2
//如果显示异常..再次调整
//参数生效:
adb shell setprop tml.lcd.timing.up 1
…
…
2.7 生成固件
调试OK后,后续批量生产,可以按下面步骤生成驱动固件:
2.7.1 准备参数文件:
设备连接电脑,先运行adb devices,确保设备识别,在电脑命令行终端运行 adb shell getprop > props.txt, 命令执行后会生成props.txt文件 ,然后把props.txt 和lcd_cmd.cfg 两个文件(名字不能变)放到一个文件夹如lcd, 然后压缩成lcd.zip。
2.7.2 参数文件压缩包上传服务器生成固件
点击下面网址:
https://www.temolin.com/webform/zai-xian-bootzi-dong-sheng-cheng
点击’GPIO配置文件’ 下面的第一个‘选择文件’按钮,把上一步骤的lcd.zip上传,然后在’接收boot文件邮件地址‘ 一栏下填写客户自己的邮箱地址,再点击提交,10分钟左右新固件会生成发到上述到邮箱。新固件刷机方法请参考:
https://www.temolin.com/doc/48/gu-jian-sheng-ji-gong-ju-shi-yong-zhi-nan
谢谢!