需要准备的资料和一些基础概念
厂家给的资料
- 上下电时序 这部分可能需要在显示芯片数据手册中查找
c
enable-delay-ms = <35>;
prepare-delay-ms = <6>;
reset-delay-ms = <100>;
init-delay-ms = <200>;
unprepare-delay-ms = <0>;
disable-delay-ms = <20>;
- 初始化序列 一般厂家给的不一定是这种格式,而是形如
或者
需要修改成 Rockchip 支持的格式
c
panel-init-sequence = [
// Soft Reset & Delay 120ms
05 78 01 01 // CMD: 0x01 (Soft Reset) Delay 120ms (0x78)
// Sleep Out & Delay 120ms
05 78 01 11 // CMD: 0x11 (Sleep Out) Delay 120ms (0x78)
// Switch to command page 1
39 00 06 ff 77 01 00 00 11
// Set VDD/VSS
15 00 02 d1 11
// Set Tearing Effect Line
15 00 02 55 b0
// Switch to command page 0
39 00 06 ff 77 01 00 00 10
// Set Panel resolution
39 00 03 c0 63 00
// Set porch
39 00 03 c1 09 02
39 00 03 c2 31 08
// Set BCTRL
15 00 02 cc 18
// Gamma Setting +
39 00 11 b0 00 11 19 0c 10 06 07 0a 09 22 04 10 0e 28 30 1c
// Gamma Setting -
39 00 11 b1 00 12 19 0d 10 04 06 07 08 23 04 12 11 28 30 1c
// Switch to command page 1
39 00 06 ff 77 01 00 00 11
15 00 02 b0 4d
15 00 02 b1 6a
15 00 02 b2 07
15 00 02 b3 80
15 00 02 b5 47
15 00 02 b7 8a
15 00 02 b8 21
15 00 02 b9 10
15 00 02 c1 78
15 00 02 c2 78
// Set power
15 64 02 d0 88 // Delay 100ms (0x64)
39 00 04 e0 00 00 02
39 00 0c e1 01 a0 03 a0 02 a0 04 a0 00 44 44
39 00 0d e2 00 00 00 00 00 00 00 00 00 00 00 00
39 00 05 e3 00 00 33 33
39 00 03 e4 44 44
39 00 11 e5 01 26 a0 a0 03 28 a0 a0 05 2a a0 a0 07 2c a0 a0
39 00 05 e6 00 00 33 33
39 00 03 e7 44 44
39 00 11 e8 02 26 a0 a0 04 28 a0 a0 06 2a a0 a0 08 2c a0 a0
39 00 08 eb 00 01 e4 e4 44 00 40
39 00 11 ed ff f7 65 4f 0b a1 cf ff ff fc 1a b0 f4 56 7f ff
// Switch to command page 0
39 00 06 ff 77 01 00 00 00
// Display On & Delay 50ms
05 32 01 29 // CMD: 0x29 (Display On) Delay 50ms (0x32)
];
- 延迟参数
初始化序列配置规则以及时钟频率计算方法
mipi初始化序列配置规则:
cobol
panel-init-sequence = [
15 00 02 80 77
15 00 02 81 77
15 00 02 82 77
15 00 02 83 77
15 00 02 84 77
15 00 02 85 77
15 00 02 86 77
39 00 0D C3 01 66 13 23 00 66 85 33 20 38 38 00
05 64 01 11
05 14 01 29
];
中括号里的内容,每一行表示一串命令字,规则如下:
cobol
15 00 02 80 77
| | | | |
| | | | 数据
| | | | 寄存器地址
| | 数据长度
| 延时
命令类型(0x05: 单字节数据 0x15: 双字节数据 0x39: 多字节数据)
单字节数据举例:
cobol
05 64 01 11
双字节数据举例:
cobol
15 00 02 86 77
多字节数据举例:
cobol
39 00 0D C3 01 66 13 23 00 66 85 33 20 38 38 00
clock-frequency 的计算方法
已知下面参数:
- fps: 屏幕刷新率(默认:60帧)
- htotal: hactive + hback-porch + hfront-porch + hsync-len
- vtotal: vactive + hfront-porch + vfront-porch + vsync-len
求clock-frequency公式如下:
cobol
htotal * vtotal * fps = clock-frequency
创建新的 .dtsi 文件
- 在LubanCat_SDK\kernel-6.1\arch\arm64\boot\dts\rockchip 下
- 新建 rk3576-lubancat-3-dsi-800x480-3-5inch.dtsi
修改 mipi配置部分:
c
dsi_panel: panel@0 {
status = "okay";
compatible = "simple-panel-dsi";
reg = <0>;
backlight = <&backlight>;
power-supply = <&mipi_dsi_power>;
reset-gpios = <&gpio1 RK_PC1 GPIO_ACTIVE_LOW>;
enable-delay-ms = <35>;
prepare-delay-ms = <6>;
reset-delay-ms = <100>;
init-delay-ms = <200>;
unprepare-delay-ms = <0>;
disable-delay-ms = <20>;
width-mm = <51>;
height-mm = <87>;
dsi,flags = <(MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_SYNC_PULSE | MIPI_DSI_MODE_LPM)>;
dsi,format = <MIPI_DSI_FMT_RGB888>;
dsi,lanes = <2>;
bits-per-component = <8>; // 明确指定每个颜色分量是8位
/*
* Corrected init sequence for ST7701S based on the new rule.
* Format: [type] [delay_ms] [payload_len] [cmd] [data...]
* A pure delay is: [type] [delay_ms] [00]
*/
panel-init-sequence = [
// Soft Reset & Delay 120ms
05 78 01 01 // CMD: 0x01 (Soft Reset) Delay 120ms (0x78)
// Sleep Out & Delay 120ms
05 78 01 11 // CMD: 0x11 (Sleep Out) Delay 120ms (0x78)
// Switch to command page 1
39 00 06 ff 77 01 00 00 11
// Set VDD/VSS
15 00 02 d1 11
// Set Tearing Effect Line
15 00 02 55 b0
// Switch to command page 0
39 00 06 ff 77 01 00 00 10
// Set Panel resolution
39 00 03 c0 63 00
// Set porch
39 00 03 c1 09 02
39 00 03 c2 31 08
// Set BCTRL
15 00 02 cc 18
// Gamma Setting +
39 00 11 b0 00 11 19 0c 10 06 07 0a 09 22 04 10 0e 28 30 1c
// Gamma Setting -
39 00 11 b1 00 12 19 0d 10 04 06 07 08 23 04 12 11 28 30 1c
// Switch to command page 1
39 00 06 ff 77 01 00 00 11
15 00 02 b0 4d
15 00 02 b1 6a
15 00 02 b2 07
15 00 02 b3 80
15 00 02 b5 47
15 00 02 b7 8a
15 00 02 b8 21
15 00 02 b9 10
15 00 02 c1 78
15 00 02 c2 78
// Set power
15 64 02 d0 88 // Delay 100ms (0x64)
39 00 04 e0 00 00 02
39 00 0c e1 01 a0 03 a0 02 a0 04 a0 00 44 44
39 00 0d e2 00 00 00 00 00 00 00 00 00 00 00 00
39 00 05 e3 00 00 33 33
39 00 03 e4 44 44
39 00 11 e5 01 26 a0 a0 03 28 a0 a0 05 2a a0 a0 07 2c a0 a0
39 00 05 e6 00 00 33 33
39 00 03 e7 44 44
39 00 11 e8 02 26 a0 a0 04 28 a0 a0 06 2a a0 a0 08 2c a0 a0
39 00 08 eb 00 01 e4 e4 44 00 40
39 00 11 ed ff f7 65 4f 0b a1 cf ff ff fc 1a b0 f4 56 7f ff
// Switch to command page 0
39 00 06 ff 77 01 00 00 00
// Display On & Delay 50ms
05 32 01 29 // CMD: 0x29 (Display On) Delay 50ms (0x32)
];
panel-exit-sequence = [
// Display Off & Delay 20ms
05 14 01 28 // CMD: 0x28 (Display Off) Delay 20ms (0x14)
// Sleep In & Delay 120ms
05 00 01 10 // CMD: 0x10 (Sleep In) Delay 120ms (0x78)
];
disp_timings0: display-timings {
native-mode = <&dsi_timing0>;
dsi_timing0: timing0 {
clock-frequency = <25000000>;
hactive = <480>;
vactive = <800>;
hsync-len = <2>;
hback-porch = <18>;
hfront-porch = <16>;
vsync-len = <2>;
vback-porch = <16>;
vfront-porch = <14>;
hsync-active = <0>;
vsync-active = <0>;
de-active = <0>;
pixelclk-active = <1>;
};
};
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
panel_in_dsi: endpoint {
remote-endpoint = <&dsi_out_panel>;
};
};
};
};
触摸驱动部分:
编译屏幕的dtbo设备树插件并部署
编译步骤
如果有aarch64-linux-gnu-的环境
shell
#加载配置文件
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- ubancat_linux_rk3576_defconfig
#使用dtbs参数单独编译设备树
make ARCH=arm64 -j4 CROSS_COMPILE=aarch64-linux-gnu- dtbs
如果没有,那就使用开发包自带的编译环境
shell
export CROSS_COMPILE=/path/LubanCat_SDK/prebuilts/gcc/linux-x86/aarch64/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-
make ARCH=arm64 lubancat_linux_rk3576_defconfig
make ARCH=arm64 -j$(nproc) dtbs
# 编译后的 dtbo文件 在 arch/arm64/boot/dts/rockchip/overlay/
部署 .dtbo 文件
- 复制到你的 LubanCat 板子的 /boot/dtb/overlay/ 目录下
- 修改 uEnv.txt 文件 禁用旧的显示相关的 overlay
- 启用你的新屏幕 overlay dtoverlay=/dtb/overlay/rk3576-lubancat-dsi-800x480-3-5inch-st7701s.dtbo 最后 重启设备