从零开始打造 OpenSTLinux 6.6 Yocto 系统 - STM32MP2(基于STM32CubeMX)(九)

1. 本文背景与目标

  • 为什么要在 U-Boot 阶段 点亮 MIPI 屏
    • 提前验证硬件连线
    • 启动画面(logo / splash)
    • 辅助 Kernel 调试
  • 本文适用范围
    • 硬件:正点原子STM32MP257开发板
    • 屏幕:正点原子5.5村MIPI屏幕(4 lane)/WLK2802MIPI-15P(1 lane)
    • 软件:OpenSTLinux 6.6 + U-Boot
  • 效果展示

2. STM32MP2 显示系统总体架构

2.1 显示链路总览

复制代码
LTDC → DSI Host → MIPI D-PHY → LCD Panel
  • LTDC 的作用
  • DSI Host 的作用
  • D-PHY 与 Lane 的关系

2.2 参考手册 RM0457 中的显示模块

  • RM0457 中涉及的模块章节
    • LTDC
    • DSI HOST
    • DSI PHY(D-PHY)

3. RM0457 解析:DSI Host & Lane 能力

  • RM0457 中关于 DSI Lane 的说明

  • 支持模式 - 本次只使用1/4 data lane + 1 clock lane

    • 1 data lane + 1 clock lane

    • 2 data lane + 1 clock lane

    • 4 data lane + 1 clock lane

4. 设备树与驱动

正点原子5.5寸MIPI屏幕(4 lane)/WLK2802MIPI-15P(1 lane)设备树

复制代码
/ {
...
	panel_backlight: panel-backlight {
		compatible = "gpio-backlight";
		gpios = <&gpiob 0 GPIO_ACTIVE_HIGH>;
		default-on;
		status = "okay";
	};
...
}; /*root*/

// DSI节点描述
&dsi {
	status = "okay";

	/* USER CODE BEGIN dsi */
	vdd-supply =  <&scmi_vddcore>;
	vdda18-supply = <&scmi_v1v8>;

	ports {
		#address-cells = <1>;
		#size-cells = <0>;

		port@0 {
			reg = <0>;
			dsi_in: endpoint {
				remote-endpoint = <&ltdc_ep0_out>;
			};
		};
		
		port@1 {
		    	reg = <1>;
		    	dsi_out: endpoint {
		        	remote-endpoint = <&dsi_panel_in>;
		    	};
		};
	};
	
    	panel_dsi: panel@0 {
        	compatible = "alientek,mipi-lcd";
        	//compatible = "wlk,w280bf036i";
        	reg = <0>;
			//dsi-lanes = <4>;
        	reset-gpios = <&gpioi 11 GPIO_ACTIVE_LOW>;
        	backlight = <&panel_backlight>;
        	power-supply = <&vdd_5v>;

        	port {
            		dsi_panel_in: endpoint {
                	remote-endpoint = <&dsi_out>;
            		};
        	};
    	};
	/* USER CODE END dsi */
};

// LTDC节点描述
&ltdc {
	status = "okay";

	/* USER CODE BEGIN ltdc */
	default-on;
	//rotation-memory = <&ltdc_sec_rotation>;

	port {
		#address-cells = <1>;
		#size-cells = <0>;

		ltdc_ep0_out: endpoint@0 {
			reg = <0>;
			remote-endpoint = <&dsi_in>;
		};
	};
	/* USER CODE END ltdc */
};

驱动文件

  • drivers/video/Makefile

    复制代码
    obj-y += panel-alientek-mipi.o
    obj-y += panel-w280bf036i-dsi.o
  • panel-alientek-mipi.c/panel-w280bf036i-dsi.c

    • 正点原子5.5寸MIPI屏幕(4 lane)

    • WLK2802MIPI-15P(1 lane)

      屏幕时序,一般由厂家提供

      屏幕初始化参数,一般由厂家提供

      初始化D-PHY参数(n lane/DSI图像格式/模式设置)


5. MIPI信号连接

MIPI告诉信号,要先把硬件引脚连接好

正点原子5.5寸MIPI屏幕(4 lane)直接将排线插入即可

WLK2802MIPI-15P(1 lane)硬件连接

复制代码
DSI TP RST -----------------> TRES
DSI BL     -----------------> BLC
DSI CK P   -----------------> CLK+
DSI CK N   -----------------> CLK-
DSI D0 P   -----------------> D0+
DSI D0 N   -----------------> D0-
板子3.3V    -----------------> 3.3V
GND        -----------------> GND
SCL/SDA/INT/PRST不用接

6. 编译测试

7. 板端验证

相关推荐
.Ashy.2 小时前
2026.4.11 蓝桥杯软件类C/C++ G组山东省赛 小记
c语言·c++·蓝桥杯
2401_892070982 小时前
链栈(链式栈) 超详细实现(C 语言 + 逐行精讲)
c语言·数据结构·链栈
不懂的浪漫3 小时前
mqtt-plus 架构解析(六):多 Broker 管理,如何让一个应用同时连接多个 MQTT 服务
spring boot·分布式·物联网·mqtt·架构
嵌入式吴彦祖4 小时前
Luckfox Pico Ultra W WIFI
linux·嵌入式硬件
cmpxr_6 小时前
【C】局部变量和全局变量及同名情况
c语言·开发语言
网域小星球8 小时前
C 语言从 0 入门(十七)|结构体指针 + 动态内存 + 文件综合实战
c语言·开发语言·文件操作·结构体指针·动态内存·综合项目
ipod7418 小时前
电子电路的元器件
单片机·嵌入式硬件
清风6666668 小时前
基于单片机的脉搏与呼吸监测报警设备设计与实现
单片机·嵌入式硬件·毕业设计·课程设计·期末大作业
Hello_Embed9 小时前
嵌入式上位机开发入门(十九):Socket 状态检测与断线重连
网络·单片机·网络协议·tcp/ip·嵌入式
foundbug9999 小时前
STM32 内部温度传感器测量程序(标准库函数版)
stm32·单片机·嵌入式硬件·算法