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

相关推荐
祈安_1 天前
C语言内存函数
c语言·后端
norlan_jame3 天前
C-PHY与D-PHY差异
c语言·开发语言
czy87874753 天前
除了结构体之外,C语言中还有哪些其他方式可以模拟C++的面向对象编程特性
c语言
悠哉悠哉愿意3 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
m0_531237173 天前
C语言-数组练习进阶
c语言·开发语言·算法
Lester_11013 天前
STM32霍尔传感器输入口设置为复用功能输入口时,还能用GPIO函数直接读取IO的状态吗
stm32·单片机·嵌入式硬件·电机控制
LCG元3 天前
低功耗显示方案:STM32L0驱动OLED,动态波形绘制与优化
stm32·嵌入式硬件·信息可视化
三佛科技-187366133973 天前
120W小体积碳化硅电源方案(LP8841SC极简方案12V10A/24V5A输出)
单片机·嵌入式硬件
z20348315203 天前
STM32F103系列单片机定时器介绍(二)
stm32·单片机·嵌入式硬件
古译汉书3 天前
【IoT死磕系列】Day 7:只传8字节怎么控机械臂?学习工业控制 CANopen 的“对象字典”(附企业级源码)
数据结构·stm32·物联网·http