RK3288调试MIPI屏/LVDS屏/EDP屏

前言:本文适用于基于RK3288芯片的嵌入式设备,安卓7.1及以上系统的,针对MIPI屏、LVDS屏、EDP屏的调试流程、核心配置、分享自身调试细节,避免踩坑。本文以Android、debian系统调试为例。

一、调试前期准备

1.1 准备

  • 核心硬件:RK3288主板(带对应屏幕接口,确认MIPI/LVDS/EDP接口引脚)
  • 屏幕硬件:待调试MIPI屏、LVDS屏、EDP屏(EDP屏一般有两种排线,FPC和排针)
  • 屏参规格书:让客户提供对应屏的屏参时序规格书

二、分接口屏幕调试流程

2.1 RK3288调试MIPI屏

2.1.1 硬件连接
  • 连接屏幕复位脚(RST)、背光脚(BL_EN),电源使能脚,对应开发板GPIO引脚(需提前确认GPIO定义)
2.1.2 软件配置(设备树+驱动)
步骤1:修改设备树(dts文件)
  • mipi屏调试在dts文件中搜索dsi关键字,先配置GPIO引脚:复位脚(rst-gpios)、背光脚(backlight-gpios)、电源脚、像素格式(如RGB888),这些还需要去看原理图都有哪些脚需要去控制,还需要注意背光脚(backlight-gpios)在backlight中设置
  • 示例:

&dsi0 {

status = "okay";

rockchip,lane-rate = <480>;

panel: panel {

compatible = "simple-panel-dsi";

reg = <0>;

backlight = <&backlight>;

vcc_en-gpios = <&gpio7 2 GPIO_ACTIVE_HIGH>;

enable-gpios = <&gpio6 11 GPIO_ACTIVE_HIGH>;

reset-gpios = <&gpio5 12 GPIO_ACTIVE_LOW>;

power-supply = <&vcc_lcd>;

dsi,flags = <(MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST

| MIPI_DSI_MODE_EOT_PACKET | MIPI_DSI_MODE_LPM)>;

dsi,format = <MIPI_DSI_FMT_RGB888>;

dsi,lanes = <4>;

reset-delay-ms = <120>;

init-delay-ms = <20>;

enable-delay-ms = <120>;

prepare-delay-ms = <120>;

status = "okay";

Plain Text

  • 配置MIPI的初始化序列,厂家给你的序列初始化代码需要去转换成正确dts中能用的
  • 示例(只复制了部分做示例)

panel-init-sequence = [

15 00 02 E0 00

15 00 02 E6 02

15 00 02 E7 0C

15 78 02 11 00

05 14 01 29

];

厂家给的

{0xE0,1,{0x00}},

{0xE6,1,{0x02}},

{0xE7,1,{0x0C}},

{0x11,1,{0x00}},

{REGFLAG_DELAY,120

{0x29,0,{}},

{REGFLAG_DELAY,20,{}},

厂家给的代码修改方法为第一个参数是地址第二个数据个数第三个是数据值

修改为dts可用的数组:地址+数据的个数,1个时05开头,2个时15开头,3个甚至更多时39开头,当然也有别的开头23\11

第二个是延时时间,看初始化代码地址与数据的下一行是否有delay数值如果有就将延时时间转成16进制加进去

第三个是地址加数据的个数多少,后面就是地址和数据

Plain Text

  • 配置屏幕参数:时钟、分辨率、行前沿、行同步信号行后沿、帧前沿、帧同步信号、帧后沿、行同步信号的有效电平、帧同步信号的有效电平、数据使能信号的有效电平、像素时钟的采样边沿
  • 示例:

disp_timings: display-timings {

native-mode = <&timing0>;

timing0: timing0 {

clock-frequency = <69000000>;

hactive = <800>;

vactive = <1280>;

hfront-porch = <40>;

hsync-len = <20>;

hback-porch = <20>;

vfront-porch = <20>;

vsync-len = <4>;

vback-porch = <20>;

hsync-active = <0>;

vsync-active = <0>;

de-active = <0>;

pixelclk-active = <0>;

};

};

Plain Text

2.1.3 调试测试与验证
  • 编译内核烧录新内核文件,观察屏幕:是否点亮、如果不亮背光是否有亮
  • 验证功能:调节亮度是否反、是否有花屏,确认正常响应

2.2 RK3288调试LVDS屏

2.2.1 硬件连接
  • 连接LVDS屏供电(VCC、GND),lvds屏是有单独背光板供电的,确认背光板供电电压(常见3.3V)
  • 连接LVDS信号线,看是单通道还是双通道,规格书上也会有,我一般就看屏线接满了就是双通道没结满就是单通道
2.2.2 软件配置(设备树+驱动)
  • 修改设备树:定位LVDS相关节点,dts文件中直接搜索(lvds),配置屏幕参数:时钟、分辨率、行前沿、行同步信号行后沿、帧前沿、帧同步信号、帧后沿、行同步信号的有效电平、帧同步信号的有效电平、数据使能信号的有效电平、像素时钟的采样边沿

&lvds_panel {

status = "okay";

compatible ="simple-panel";

backlight = <&backlight>;

bus-format = <MEDIA_BUS_FMT_RGB888_1X24>;//RGB数据格式

enable-gpios = <&gpio7 2 GPIO_ACTIVE_HIGH>;//使能引脚

enable-delay-ms = <200>;

power-supply = <&vcc_lcd>;

rockchip,data-mapping = "vesa";//数据映射格式如果有屏颜色花就改成jeida

rockchip,data-width = <24>;//数据位宽度可以改成18

rockchip,output = "duallvds";//单双通道

display-timings {

native-mode = <&timing0>;

timing0: timing0 {

clock-frequency = <148000000>;

hactive = <1920>;

vactive = <1080>;

hback-porch = <210>;

hfront-porch = <70>;

vback-porch = <50>;

vfront-porch = <3>;

hsync-len = <140>;

vsync-len = <5>;

hsync-active = <0>;

vsync-active = <0>;

de-active = <0>;

pixelclk-active = <0>;

};

};

};

C

  • 编译并烧录内核固件
2.2.3 调试测试与验证
  • 首先排查背光板是否能亮,亮了颜色是否不正常,是否有闪屏、花屏的情况
  • 设置中调整亮度调节是否反,没反调到最低是否会黑屏

2.3 RK3288调试EDP屏

2.3.1 硬件连接
  • EDP屏有两种屏线有和mipi类似的,也有和lvds类似的
  • 对好主板上的引脚标记去接上
2.3.2 软件配置(设备树+驱动)
  • 修改设备树:定位EDP相关节点,dts文件中直接搜索(edp),配置屏幕参数:时钟、分辨率、行前沿、行同步信号行后沿、帧前沿、帧同步信号、帧后沿、行同步信号的有效电平、帧同步信号的有效电平、数据使能信号的有效电平、像素时钟的采样边沿
  • 示例:

&edp_panel {

compatible ="simple-panel";

backlight = <&backlight>;

enable-gpios = <&gpio7 2 GPIO_ACTIVE_HIGH>;//使能引脚

enable-delay-ms = <300>;

prepare-delay-ms = <300>;

power-supply = <&vcc_lcd>;//电源供电,供电引脚在里面配置

bus-format = <MEDIA_BUS_FMT_RGB666_1X18>;//RGB数据格式

status = "okay";

disp_timings: display-timings {

native-mode = <&timing0>;

timing0: timing0 {

clock-frequency = <148000000>;

hactive = <1920>;

vactive = <1080>;

hfront-porch = <80>;

hsync-len = <50>;

hback-porch = <150>;

vfront-porch = <20>;

vsync-len = <5>;

vback-porch = <20>;

hsync-active = <0>;

vsync-active = <0>;

de-active = <0>;

pixelclk-active = <0>;

};

};

};

C

  • 编译并烧录内核固件
2.3.3 调试测试与验证
  • 排查步骤所有屏都大差不差的
  • 首先排查背光板是否能亮,亮了颜色是否不正常,是否有闪屏、花屏的情况
  • 设置中调整亮度调节是否反,没反调到最低是否会黑屏

三、常见问题与解决方案

3.1 通用问题

问题现象

可能原因

解决方案

屏幕完全黑屏,无背光

1. 供电异常;2. 背光脚未配置;3. 驱动未加载

1. 用万用表检测供电电压;2. 检查背光GPIO配置是否对上了;3. 检查\kernel\drivers\video\目录下pwm_bl.c是否编成.o文件

屏幕花屏、偏色

1. 时序参数配置错误;2. 像素格式不匹配;3. 信号线接触不良

1. 对照屏幕datasheet修改时序参数;2. 调整设备树中像素格式;3. 换根屏线试一试

驱动加载失败

1. 查看主板中的summary文件,ad进入主板 cd. /sys/kernel/debug/dri/0/然后cat summary是否有dsi\lvds\edp信息

1. 目录不存在那就是内核dts没配置好,屏没有挂载上,如果有summary但是没有信息就是panel的status没有写成okay

3.2 排查问题

3.2.1 背光问题

背光调节反的问题


backlight: backlight {

compatible = "pwm-backlight";

brightness-levels = <

0 1 2 3 4 5 6 7

8 9 10 11 12 13 14 15

16 17 18 19 20 21 22 23

24 25 26 27 28 29 30 31

32 33 34 35 36 37 38 39

40 41 42 43 44 45 46 47

48 49 50 51 52 53 54 55

56 57 58 59 60 61 62 63

64 65 66 67 68 69 70 71

72 73 74 75 76 77 78 79

80 81 82 83 84 85 86 87

88 89 90 91 92 93 94 95

96 97 98 99 100 101 102 103

104 105 106 107 108 109 110 111

112 113 114 115 116 117 118 119

120 121 122 123 124 125 126 127

128 129 130 131 132 133 134 135

136 137 138 139 140 141 142 143

144 145 146 147 148 149 150 151

152 153 154 155 156 157 158 159

160 161 162 163 164 165 166 167

168 169 170 171 172 173 174 175

176 177 178 179 180 181 182 183

184 185 186 187 188 189 190 191

192 193 194 195 196 197 198 199

200 201 202 203 204 205 206 207

208 209 210 211 212 213 214 215

216 217 218 219 220 221 222 223

224 225 226 227 228 229 230 231

232 233 234 235 236 237 238 239

240 241 242 243 244 245 246 247

248 249 250 251 252 253 254 255>;

default-brightness-level = <128>;

enable-gpios = <&gpio5 18 GPIO_ACTIVE_HIGH>;

pinctrl-names = "default";

pinctrl-0 = <&bl_en>;

pwms = <&pwm0 0 1000000 0>;//这个就是和亮度调节反有关,最有一个0的反了就改称1,1反了就改成0

};//背光对应的驱动文件在\kernel\drivers\video\backlight\pwm_bl.c

背光调节没反亮度最低黑屏,修改这个pwm_bl.c的pwm_backlight_update_status函数

@@ -107,6 +107,10 @@ static int pwm_backlight_update_status(struct backlight_device *bl)

brightness = pb->notify(pb->dev, brightness);

if (brightness > 0) {

+ if(brightness < 30){

+ brightness = 30;

+ }

+

C

3.2.2 屏信号脚问题

如果发现屏的使能脚、复位脚、电源脚,不是硬件上的问题,首先查看内核log,可以通过dmesg | grep panel 查看内核log是否有异常如果有那就可以通过adb 命令排查引脚是否复用的问题

cd 到/sys/kernel/debug/pinctrl/pinctrl-rockchip-pinctrl# cat pinmux-pins,就能到一张引脚映射表就能查看是否有复用引脚的问题,

四、调试总结与注意事项

4.1 调试总结

本次调试基于RK3288主板,主板拿到手可以先把原理图、位号图拿到来,查看mipi、lvds、edp有哪些要用的引脚都要对上,如果是新主板可以先进到adb去cat pinmux-pins目录对一下引脚有没有被占用,被占用可以排查dts哪些模块用了是否能关掉,引脚问题解决之后可以dts修改→编译→烧录完之后,亮了万事大吉,没亮还是进入adb cat summary文件看是否有这个文件如果没有就是dts的节点配置有问题,如果有summary没亮那就是屏参的问题。

4.2 注意事项

  • 调试前务必核对屏幕 datasheet 与RK3288芯片 datasheet,避免参数配置错误导致硬件损坏
  • 一定要注意硬件上的接线,如果接错是很有可能把屏烧了的,供电脚一定要对好
  • 本文调试环境:RK3288主板板 + Android 7.1 系统
  • 疑问交流:欢迎在评论区留言,分享调试经验,共同解决问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值