跳过正文
  1. Posts/

鲁班猫3(rk3576)适配3.5英寸屏幕

··1712 字·4 分钟·
cerry2022
作者
cerry2022
A little bit about you
## 需要准备的资料和一些基础概念

厂家给的资料
#

  1. 上下电时序 这部分可能需要在显示芯片数据手册中查找
enable-delay-ms = <35>;
prepare-delay-ms = <6>;
reset-delay-ms = <100>;
init-delay-ms = <200>;
unprepare-delay-ms = <0>;
disable-delay-ms = <20>;
  1. 初始化序列 一般厂家给的不一定是这种格式,而是形如

    鲁班猫3(rk3576)适配3.5英寸屏幕-63dac64f.webp
    或者
    鲁班猫3(rk3576)适配3.5英寸屏幕-973e46f6.webp
    需要修改成 Rockchip 支持的格式
    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)
                    ];

  2. 延迟参数

鲁班猫3(rk3576)适配3.5英寸屏幕-9eef0129.webp

初始化序列配置规则以及时钟频率计算方法
#

mipi初始化序列配置规则:

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
];

中括号里的内容,每一行表示一串命令字,规则如下:

15 00 02 80 77
 |  |  | |  |
 |  |  | |  数据
 |  |  | | 寄存器地址
 |  |  数据长度
 |  延时
 命令类型(0x05: 单字节数据 0x15: 双字节数据 0x39: 多字节数据)

单字节数据举例:

05 64 01 11

双字节数据举例:

15 00 02 86 77

多字节数据举例:

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公式如下:

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配置部分:

Rockchip.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>;
                        };
                    };
                };
            };
触摸驱动部分:

鲁班猫3(rk3576)适配3.5英寸屏幕-01c923fe.webp

编译屏幕的dtbo设备树插件并部署
#

编译步骤
#

如果有aarch64-linux-gnu-的环境

#加载配置文件
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- ubancat_linux_rk3576_defconfig
#使用dtbs参数单独编译设备树
make ARCH=arm64 -j4 CROSS_COMPILE=aarch64-linux-gnu- dtbs

如果没有,那就使用开发包自带的编译环境

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 最后 重启设备

相关文章