从零开始打造 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. 板端验证

相关推荐
xiangw@GZ1 小时前
智能锁TouchKey的抗干扰设计【2】-软件算法
嵌入式硬件
iCxhust1 小时前
微机原理实践教程(C语言篇)---A001闪烁灯
c语言·开发语言·汇编·单片机·嵌入式硬件·51单片机·微机原理
一起搞IT吧1 小时前
相机Camera日志实例分析之二十:相机Camx【照片后置4800/5000/6400万拍照】单帧流程日志详解
android·嵌入式硬件·数码相机·智能手机
爱编码的小八嘎1 小时前
C语言完美演绎9-9
c语言
笨笨饿2 小时前
69_如何给自己手搓一个串口
linux·c语言·网络·单片机·嵌入式硬件·算法·个人开发
爱编码的小八嘎3 小时前
C语言完美演绎9-16
c语言
她说彩礼65万4 小时前
C语言 文件
linux·服务器·c语言
FreakStudio6 小时前
MicroPython 内核开发者直接狂喜!这个 Claude 插件市场,把开发全流程做成了「对话式外挂」
python·单片机·嵌入式·面向对象·并行计算·电子diy
天诚智能门锁7 小时前
天诚公租房管控平台CAT.1人脸猫眼智能锁助力青神县公租房管理
人工智能·嵌入式硬件·物联网·智能家居·智能硬件
m0_377108149 小时前
5月1日zzz
单片机