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

相关推荐
czhaii22 分钟前
单片机伺服电机加减速控制子程序
c语言·单片机
熠速28 分钟前
基于PolarLabBox的永磁同步电机(PMSM)零速带载闭环+全速域无感:8小时从理论到落地
单片机·嵌入式硬件·硬件在环半实物仿真
qq_3331209733 分钟前
C++高并发内存池的整体设计和实现思路_C 语言
java·c语言·c++
深圳市晶科鑫实业有限公司1 小时前
5G与AIoT时代:如何选择晶振常用频率?
服务器·单片机·物联网·5g·智能路由器·健康医疗·信息与通信
JNX_SEMI1 小时前
EG2031L:220V半桥驱动,1.5A灌流,宽压5V供电
单片机·嵌入式硬件
luj_17681 小时前
残熵算法的稳健防灾逻辑
c语言·开发语言·c++·经验分享·算法
物联通信量讯说1 小时前
物联网卡、流量卡、SIM 卡到底有什么区别?
物联网·iot·物联网卡
m0_377108142 小时前
stm32-SPI
stm32·单片机·嵌入式硬件
金线银线还是铜线?2 小时前
微能量收集PMIC芯片AEM00920的国产替代MF9005
物联网·太阳能·电源管理
QiLinkOS2 小时前
从技术到资产的跃迁:企业专利布局的深层逻辑
c语言·数据结构·c++·单片机·嵌入式硬件·算法·开源