STM32MP157A驱动开发 | 05 - 基于LTDC接口驱动RGB LCD

Posted Mculover666

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM32MP157A驱动开发 | 05 - 基于LTDC接口驱动RGB LCD相关的知识,希望对你有一定的参考价值。

Step1. 添加LCD设备树描述,包括背光节点和ltdc节点
Step2. 驱动文件里添加一组设备ID

一、添加设备树描述

1. 修改ltdc节点描述


比较重要的属性是remote-endpoint,描述ltdc输出到哪里。

2. 添加ltdc输出接口描述

	rgblcd: rgblcd 
		compatible = "bearpi,rgblcd";
		backlight = &rgblcd_backlight;
		status = "okay";

		port 
			rgblcd_in: endpoint 
				remote-endpoint = <&ltdc_ep0_out>;
			;
		;
	;

其中remote-endpoint用于告诉屏幕驱动数据从哪里获得。

3. 添加backlight节点

	rgblcd_backlight: rgblcd-backlight 
		compatible = "gpio-backlight";
        gpios = <&gpioe 9 GPIO_ACTIVE_HIGH>;
		default-on;
		status = "okay";
	;

二、在驱动中添加屏幕参数

1. 添加屏幕参数描述

static const struct drm_display_mode bearpi_rgblcd_mode = 
	.clock = 51200,
	.hdisplay = 800,
	.hsync_start = 800 + 46,
	.hsync_end = 800 + 46 + 1,
	.htotal = 800 + 46 + 1 + 210,
	.vdisplay = 480,
	.vsync_start = 480 + 23,
	.vsync_end = 480 + 23 + 1,
	.vtotal = 480 + 23 + 1 + 22,
	.flags = DRM_MODE_FLAG_NVSYNC | DRM_MODE_FLAG_NHSYNC,
;

static const struct panel_desc bearpi_rgblcd_desc = 
	.modes = &bearpi_rgblcd_mode,
    .num_modes = 1,
    .bpc = 6,
	.size = 
		.width = 152,
		.height = 91,
	,
    .bus_format = MEDIA_BUS_FMT_RGB888_1X24,
    .bus_flags = DRM_BUS_FLAG_DE_HIGH | DRM_BUS_FLAG_PIXDATA_DRIVE_POSEDGE,
;

2. 添加设备兼容性

三、测试

以上是关于STM32MP157A驱动开发 | 05 - 基于LTDC接口驱动RGB LCD的主要内容,如果未能解决你的问题,请参考以下文章

STM32MP157A驱动开发 | 04 - Linux DRM显示驱动框架

STM32MP157A驱动开发 | 04 - Linux DRM显示驱动框架

STM32MP157A驱动开发 | 03-usb host接口的使用(U盘 )

STM32MP157A驱动开发 | 03-usb host接口的使用(U盘 )

STM32MP157A驱动开发 | 01- 板载LED作为系统心跳指示灯

STM32MP157A驱动开发 | 01- 板载LED作为系统心跳指示灯