当前位置: 首页 > news >正文

【RK3576】【Android14】显示屏MIPI开发调试

获取更多相关的【RK3576】【Android14】驱动开发,可收藏系列博文,持续更新中:
【RK3576】Android 14 驱动开发实战指南


简介

硬件接口

驱动开发

显示数据流:

VP1视频源 → DSI控制器 → MIPI PHY → 显示面板

DTS配置

/* 显示路由配置:定义显示输出路径 */
&route_dsi {
    status = "okay";  // 启用DSI显示路由
    logo,uboot = "logo.bmp";  // U-Boot阶段显示logo
    logo,kernel = "logo_kernel.bmp";  // 内核启动阶段显示logo
    logo,mode = "center";  // logo居中显示
    connect = <&vp1_out_dsi>;  // 连接VP1视频处理器输出
};

/* MIPI-DSI控制器核心配置 */
&dsi {
    status = "okay";  // 启用DSI控制器
    compatible = "rockchip,rk3576-mipi-dsi2";
    reg = <0x0 0x27d80000 0x0 0x10000>;  // 寄存器物理地址
    clocks = <&cru 411>, <&cru 412>;  // PCLK和系统时钟
    clock-names = "pclk", "sys_clk";
    phys = <&mipidcphy0>;  // 物理层PHY连接
    phy-names = "dcphy";
    rockchip,grf = <&vo0_grf>;  // 通用寄存器文件

    /* 输入端口:连接视频处理器 */
    ports {
        port@0 {
            dsi_in_vp1: endpoint@1 {  // 使用VP1作为输入源
                status = "okay";
                remote-endpoint = <&vp1_out_dsi>;  // 对接VP1输出
            };
            // 禁用其他未使用的输入源
            dsi_in_vp0: endpoint@0 { status = "disabled"; };
            dsi_in_vp2: endpoint@2 { status = "disabled"; };
            dsi_in_vopl: endpoint@3 { status = "disabled"; };
        };
        
        /* 输出端口:连接显示面板 */
        port@1 {
            dsi_out_panel: endpoint {
                remote-endpoint = <&panel_in_dsi>;  // 对接面板输入
            };
        };
    };
};

/* 显示面板配置 */
&dsi_panel {
    status = "okay";
    compatible = "simple-panel-dsi";
    backlight = <&backlight>;  // 背光控制
    power-supply = <&vcc3v3_lcd_n>;  // 面板电源
    reset-delay-ms = <10>;  // 复位后延迟
    enable-delay-ms = <10>;  // 使能后延迟
    
    /* 物理尺寸 */
    width-mm = <68>;   // 面板宽度(毫米)
    height-mm = <121>; // 面板高度(毫米)
    
    /* DSI协议参数 */
    dsi,flags = <((1 << 0) | (1 << 1) | (1 << 11) | (1 << 9))>;  // 工作模式标志,[0]:TE反转, [1]:刷新技术, [2]:HS模式
    dsi,format = <0>;    // 像素格式:0:RGB888, 1:RGB666, 2:RGB565
    dsi,lanes = <4>;     // 使用4条数据通道
    
    /* 面板初始化序列(厂商提供) */
    panel-init-sequence = [
        // 省略具体初始化命令...
        05 78 01 11   // SLEEP OUT命令 + 120ms延迟
        05 00 01 29   // DISPLAY ON命令
    ];
    
    /* 面板关闭序列 */
    panel-exit-sequence = [
        05 00 01 28   // DISPLAY OFF命令
        05 00 01 10   // SLEEP IN命令
    ];
    
    /* 显示时序参数 */
    disp_timings0: display-timings {
        native-mode = <&dsi_timing0>;  // 默认使用时序0
        dsi_timing0: timing0 {
            clock-frequency = <132000000>;  // 像素时钟132MHz
            hactive = <1080>;   // 水平有效像素
            vactive = <1920>;   // 垂直有效像素
            hfront-porch = <15>;  // 水平前廊
            hsync-len = <4>;      // 水平同步脉冲
            hback-porch = <30>;   // 水平后廊
            vfront-porch = <15>;  // 垂直前廊
            vsync-len = <2>;       // 垂直同步脉冲
            vback-porch = <15>;   // 垂直后廊
            // 同步信号极性 (0:正常, 1:反转)
            hsync-active = <0>;  
            vsync-active = <0>;
            de-active = <0>;      // 数据使能极性
            pixelclk-active = <0>; // 像素时钟极性
        };
    };
    
    /* 面板输入端口 */
    ports {
        port@0 {
            panel_in_dsi: endpoint {
                remote-endpoint = <&dsi_out_panel>;  // 连接DSI输出
            };
        };
    };
};

/* 显示子系统时钟配置 */
&display_subsystem {
    clocks = <&hdptxphy_hdmi>;  // HDMI PHY时钟
    clock-names = "hdmi0_phy_pll";
};

http://www.xdnf.cn/news/1155565.html

相关文章:

  • 【图文详解】Transformer架构详细解析:多头自注意力机制、qkv计算过程、encoder架构、decoder架构以及mask的意义
  • Qwen3-8B 与 ChatGPT-4o Mini 的 TTFT 性能对比与底层原理详解
  • 网鼎杯2020青龙组notes复现
  • springboot websocket 自动重启方案
  • 彩虹云商城全源码 - 全新客服系统上线
  • CAN通讯理论与实践:调试和优化全讲解
  • 移动端开发的package命名规范
  • 《突破 GIL 限制:Python 多线程的真相与最佳实践》
  • “人工智能+”视域下计算思维与语文写作融合的跨学科教学设计模式探究
  • OpenTelemetry学习笔记(九):Elastic 对 OTLP 的原生支持
  • 二、Spark 开发环境搭建 IDEA + Maven 及 WordCount 案例实战
  • Golang的微服务链路追踪
  • 7. 命令模式
  • 5G NR PDCCH之CRC处理
  • GaussDB 数据库架构师修炼(七) 安全规划
  • 【Docker-Day 7】揭秘 Dockerfile 启动指令:CMD、ENTRYPOINT、ENV、ARG 与 EXPOSE 详解
  • 常用框架知识
  • Python基础-列表
  • 【Lua】大G表
  • 06 51单片机之矩阵键盘
  • 【Kafka】深入理解 Kafka MirrorMaker2 - 实战篇
  • 链表的基本操作
  • 费曼学习法
  • 吴恩达机器学习笔记(3)—线性代数回顾(可选)
  • 嵌入式硬件篇---按键
  • Nginx的location匹配规则
  • Android 项目中如何在执行 assemble 或 Run 前自动执行 clean 操作?
  • Go语言--语法基础6--基本数据类型--map类型
  • Node.js 中基于请求 ID 实现简单队列(即时阻止策略/排队等待策略)
  • 在NLP深层语义分析中,深度学习和机器学习的区别与联系