概述
屏是嵌入式驱动开发中常见的设备,一般的带屏项目中最开始要调试的,简单记录一下自己在项目开发中的经验过程。所用平台是rockchip的rk3568,android11。
1.硬件原理图
硬件原理图主要看接的是哪个mipi接口,屏的电源控制io,背光控制io,这些需要在设备树中配置的要仔细核对。
2.dts参考:
&dsi1_in_vp1 {
status = "okay";
};
&dsi1 {
status = "okay";
//rockchip,lane-rate = ;
dsi1_panel: panel@0 {
status = "okay";
reg = ;
compatible = "simple-panel-dsi";
power-supply = ;
reset-gpios = ;
pinctrl-names = "default";
pinctrl-0 = ;
backlight = ;
reset-delay-ms = ;
enable-delay-ms = ;
prepare-delay-ms = ;
unprepare-delay-ms = ;
disable-delay-ms = ;
dsi,flags = ;
dsi,format = ;
dsi,lanes = ;
panel-init-sequence = [
05 78 01 11
05 1E 01 29
];
panel-exit-sequence = [
05 00 01 28
05 00 01 10
];
disp_timings1: display-timings {
native-mode = ;
dsi1_timing0: timing0 {
clock-frequency = ;
hactive = ;
vactive = ;
hfront-porch = ;
hsync-len = ;
hback-porch = ;
vfront-porch = ;
vsync-len = ;
vback-porch = ;
hsync-active = ;
vsync-active = ;
de-active = ;
pixelclk-active = ;
};
};
ports {
#address-cells = ;
#size-cells = ;
port@0 {
reg = ;
panel_in_dsi1: endpoint {
remote-endpoint = ;
};
};
};
};
ports {
#address-cells = ;
#size-cells = ;
port@1 {
reg = ;
dsi1_out_panel: endpoint {
remote-endpoint = ;
};
};
};
};
&video_phy0 {
status = "disabled";
};
&video_phy1 {
status = "okay";
};
&route_dsi1 {
status = "okay";
connect = ;
};
PS:以上代码只是参考,并不完整。还有io的配置,包括是否有管脚复用等。 panel-init-sequence 和 panel-exit-sequence是mipi屏的初始化命令,timing0是屏的一些参数。一般是屏厂提供。格式就按照mipi的cmd格式来写。正常情况上电可以点亮屏幕了。如果出了问题,也有调试命令可以查看clk,dsi这些通道是否正常。 rk平台的点屏方式还是比较简洁的,直接在dts中完成。有些平台是需要增加代码实现的。不过原理都差不多。最后,祝大家都能点屏成功。
|