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

相关推荐
coderzxy12 小时前
mbpoll 交叉编译
物联网
BackCatK Chen12 小时前
第 8 篇:TMC2240 电机正反转实现|DIR 引脚控制 + 代码优化(稳定不抖动)
stm32·单片机·嵌入式硬件·保姆级教程·电机正反转·tmc2240·dir引脚控制
中议视控12 小时前
可编程网络中央控制系统主机通过红外发射棒控制空调电视等红外设备
网络·物联网·5g
星马梦缘13 小时前
EDA彩灯电路绘制
单片机·嵌入式硬件·物联网·pcb·eda·嘉立创
番茄灭世神15 小时前
Linux应用编程介绍
linux·嵌入式
Forsete15 小时前
LINUX驱动开发#9——定时器
linux·驱动开发·单片机
wangjialelele15 小时前
平衡二叉搜索树:AVL树和红黑树
java·c语言·开发语言·数据结构·c++·算法·深度优先
森G15 小时前
七、04ledc-sdk--------makefile有变化
linux·c语言·arm开发·c++·ubuntu
weixin_3954489116 小时前
mult_yolov5_post_copy.c_cursor_0205
c语言·python·yolo
Z9fish17 小时前
sse哈工大C语言编程练习20
c语言·开发语言·算法