BOE的 12.1-LVDS屏幕 RK3566 android 调试记录
硬件
屏幕参数记录
线序
4 lanes 数据 (RIN0~3),还有 1 个 是时钟(LVDS_CLK)。使用的单通道,因为没有另外4个lanes。
显示区域
以上表格得到以下参数:
行有效像素:1280
场有效像素:800
行前肩:72
行同步:tHP - Thadr - tHBP - tHFP ≈ 10左右,因为tHP有最大值和最小值这里用默认值计算
行后肩:78
场前肩:15
场同步:tvp - tVadr - tVBP - tVFP ≈ 5左右,因为tHP有最大值和最小值这里用默认值计算
场后肩:18
LVDS时钟(MHz):66.3 ~ 78.9 MHz
我实际使用的参数如下:
色域
VESA模式,8bit, 共24bit,RGB888。
时钟
MIPI时钟 = ( (LVDS时钟 * bpp / lanes ) * 10 / 9 ) / 2
我这里用屏幕建议的LVDS时钟72.4MHz才能够用,如果你是双通道则不用 / 2。
现在已知:LVDS时钟 72.4MHz,bpp=24bit,lanes=5(数据+时钟)
带入运算:
MIPI时钟 = ((72400000 * 24 / 5 ) * 10 / 9 ) / 2 ≈ 193,066,666.66 ≈ 193 MHz
生成参数
使用之前的参数,通过工具生成初始化序列:
最后一个参数,1D换成01才能够使用。
GM8775C拥有自测模式,不需要MIPI数据就能显示,初步调试可优先进入彩条模式,排除后端问题 将 23 00 02 2A 01 修改为 23 00 02 2A 4D
关于该屏幕是 VESA 还是 JEIDA 模式在手册里面我没有看出来,就二选一的测试,实测结果是常用的 VESA 模式。
完整设备树
该屏幕的完整设备树:
/{
};
/*
* video_phy0 needs to be enabled
* when dsi0 is enabled
*/
&dsi0 {
status = "okay";
dsi0_panel: panel@0 {
status = "okay";
compatible = "simple-panel-dsi";
reg = <0>;
dsi,flags = <(MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST |
MIPI_DSI_MODE_LPM | MIPI_DSI_MODE_EOT_PACKET)>;
dsi,format = <MIPI_DSI_FMT_RGB888>;
dsi,lanes = <4>;
panel-init-sequence = [
23 00 02 27 AA
23 00 02 48 02
23 00 02 B6 20
23 00 02 01 00
23 00 02 02 20
23 00 02 03 35
23 00 02 04 48 //hfp
23 00 02 05 0D //hsync
23 00 02 06 4e //hbp
23 00 02 07 00
23 00 02 08 0f //vfp
23 00 02 09 08 //vsync
23 00 02 0A 12 //vbp
23 00 02 0B 82
23 00 02 0C 28 //CLK
23 00 02 0D 01
23 00 02 0E 80
23 00 02 0F 20
23 00 02 10 20
23 00 02 11 03
23 00 02 12 1B
23 00 02 13 03 //寄偶
23 00 02 14 01
23 00 02 15 23
23 00 02 16 40
23 00 02 17 00
23 00 02 18 01
23 00 02 19 23
23 00 02 1A 40
23 00 02 1B 00
23 00 02 1E 46
23 00 02 51 30
23 00 02 1F 10
//23 00 02 2A 4D //彩条
23 00 02 2A 01
05 78 01 11
05 14 01 29
];
panel-exit-sequence = [
05 00 01 28
05 78 01 10
];
disp_timings0: display-timings {
native-mode = <&dsi0_timing0>;
dsi0_timing0: timing0 {
clock-frequency = <66000000>;
hactive = <1280>;
vactive = <800>;
// 水平时序(单位:像素时钟周期)
hfront-porch = <72>;
hsync-len = <13>;
hback-porch = <78>;
// 垂直时序(单位:行数)
vfront-porch = <15>;
vsync-len = <8>;
vback-porch = <18>;
// 同步信号极性
hsync-active = <1>;
vsync-active = <0>;
de-active = <0>;
pixelclk-active = <0>;
};
};
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
panel_in_dsi: endpoint {
remote-endpoint = <&dsi_out_panel>;
};
};
};
};
ports {
#address-cells = <1>;
#size-cells = <0>;
port@1 {
reg = <1>;
dsi_out_panel: endpoint {
remote-endpoint = <&panel_in_dsi>;
};
};
};
};
&video_phy1 {
status = "okay";
};
&video_phy0 {
status = "okay";
};
&dsi0_in_vp0 {
status = "disabled";
};
&dsi0_in_vp1 {
status = "okay";
};
&route_dsi0 {
status = "okay";
connect = <&vp1_out_dsi0>;
};
评论