[uboot][stm32]配置LTDC屏幕

news2025/2/27 11:55:48

文章目录

  • 前提
  • dts设备树修改
  • Kconfig
  • 日志打印
  • 后记

https://github.com/wdfk-prog/u-boot

前提

  1. 手上刚好有块屏幕,尝试在uboot中点亮一下
  2. 使用前请使用其他手段点亮该屏幕确保屏幕的完好再进行操作.确保配置的参数及引脚是可用的.

dts设备树修改

  1. ltdc状态修改为重定向前绑定,另外进行GPIO的绑定.根据需要自行配置.注意我使用的是H7系列芯片.不同系列芯片AF的内容不一致,需要自行查看修改.
&ltdc {
	pinctrl-0 = <&ltdc_pins>;
	pinctrl-names = "default";
	status = "okay";
	bootph-all;
};

&pinctrl {
	   ltdc_pins: ltdc@0 {
        pins {
            pinmux = <STM32_PINMUX('K', 5, AF14)>,  /* LTDC_B6 */
                    <STM32_PINMUX('I', 7, AF14)>,  /* LTDC_B7 */
                    <STM32_PINMUX('K', 4, AF14)>,  /* LTDC_B5 */
                    <STM32_PINMUX('J', 15, AF14)>, /* LTDC_B3 */
                    <STM32_PINMUX('K', 3, AF14)>,  /* LTDC_B4 */
                    <STM32_PINMUX('K', 7, AF14)>,  /* LTDC_DE */
                    <STM32_PINMUX('I', 12, AF14)>, /* LTDC_HSYNC */
                    <STM32_PINMUX('I', 13, AF14)>, /* LTDC_VSYNC */
                    <STM32_PINMUX('I', 14, AF14)>, /* LTDC_CLK */
                    <STM32_PINMUX('K', 2, AF14)>,  /* LTDC_G7 */
                    <STM32_PINMUX('K', 0, AF14)>,  /* LTDC_G5 */
                    <STM32_PINMUX('K', 1, AF14)>,  /* LTDC_G6 */
                    <STM32_PINMUX('J', 11, AF14)>, /* LTDC_G4 */
                    <STM32_PINMUX('J', 10, AF14)>, /* LTDC_G3 */
                    <STM32_PINMUX('J', 9, AF14)>,  /* LTDC_G2 */
                    <STM32_PINMUX('J', 6, AF14)>,  /* LTDC_R7 */
                    <STM32_PINMUX('J', 5, AF14)>,  /* LTDC_R6 */
                    <STM32_PINMUX('J', 2, AF14)>,  /* LTDC_R3 */
                    <STM32_PINMUX('J', 3, AF14)>,  /* LTDC_R4 */
                    <STM32_PINMUX('J', 4, AF14)>;  /* LTDC_R5 */
            slew-rate = <3>;
        };
    };
};
  1. 添加屏幕节点及其信息
  • 上一步是完善LTDC的驱动引脚及启动
  • 这一步描述了屏幕的参数信息,以便于使用
	panel: panel {
		compatible = "simple-panel";
		display-timings {
			native-mode = <&timing0>;
			timing0: timing0 {
				clock-frequency = <33000000>;
				hactive = <800>;
				vactive = <480>;
				hfront-porch = <48>;
				hback-porch = <40>;
				hsync-len = <1>;
				vfront-porch = <13>;
				vback-porch = <32>;
				vsync-len = <1>;
			};
		};
	};

Kconfig

  • 修改配置文件,启用ltdc驱动代码程序
CONFIG_VIDEO=y
CONFIG_VIDEO_LOGO=y
CONFIG_BACKLIGHT_GPIO=y
CONFIG_VIDEO_LCD_ORISETECH_OTM8009A=y
CONFIG_VIDEO_STM32=y
CONFIG_VIDEO_STM32_DSI=y
CONFIG_VIDEO_STM32_MAX_XRES=480
CONFIG_VIDEO_STM32_MAX_YRES=800
CONFIG_SPLASH_SCREEN=y
CONFIG_SPLASH_SCREEN_ALIGN=y
CONFIG_BMP_16BPP=y
CONFIG_BMP_24BPP=n
CONFIG_BMP_32BPP=n
CONFIG_CMD_BMP=n
CONFIG_SYS_CONSOLE_IS_IN_ENV=n
CONFIG_VIDEO_BRIDGE=n
# CONFIG_VIDEO_FONT_8X16 is not set

日志打印

  • 可以看到配置的引脚已经被启动初始化了
OK
device_probe: display-controller@50001000
device_probe: soc
device_probe: pinctrl@58020000
device_probe: gpio@58022800
device_probe: pinctrl@58020000
device_probe: pinctrl@58020000
device_probe: reset-clock-controller@58024400
stm32h7_rcc_clock reset-clock-controller@58024400: clk->id 26
stm32h7_rcc_clock reset-clock-controller@58024400: clkid=26 gate offset=0xe0 bit_index=10 name=gpiok
device_probe: gpio@58022000
device_probe: gpio@58022800
device_probe: gpio@58022400
device_probe: pinctrl@58020000
device_probe: pinctrl@58020000
device_probe: reset-clock-controller@58024400
stm32h7_rcc_clock reset-clock-controller@58024400: clk->id 27
stm32h7_rcc_clock reset-clock-controller@58024400: clkid=27 gate offset=0xe0 bit_index=9 name=gpioj
device_probe: gpio@58022800
device_probe: gpio@58022800
device_probe: gpio@58022000
device_probe: gpio@58022000
device_probe: gpio@58022000
device_probe: gpio@58022800
device_probe: gpio@58022800
device_probe: gpio@58022800
device_probe: gpio@58022400
device_probe: gpio@58022400
device_probe: gpio@58022400
device_probe: gpio@58022400
device_probe: gpio@58022400
device_probe: gpio@58022400
device_probe: gpio@58022400
device_probe: gpio@58022400
device_probe: reset-clock-controller@58024400
stm32h7_rcc_clock reset-clock-controller@58024400: clk->id 72
stm32h7_rcc_clock reset-clock-controller@58024400: clkid=72 gate offset=0xe4 bit_index=3 name=ltdc
stm32_ltdc_probe: LTDC hardware 0x10300
device_probe: panel
device_probe: root_driver
device_probe: pinctrl@58020000
stm32_display display-controller@50001000: Set pixel clock req 33000000 hz get -19 hz
device_probe: reset-clock-controller@58024400
stm32_display display-controller@50001000: No video bridge, or no backlight on bridge
stm32_display display-controller@50001000: 800x480 16bpp frame buffer at 0xc1e00000
stm32_display display-controller@50001000: crop 0,0 800x480 bg 0xffffffff alpha 255
video_post_probe 627
device_probe: display-controller@50001000.v
device_probe: display-controller@50001000
video_post_probe 641
In:    serial@40004c00
Out:   serial@40004c00
Err:   serial@40004c00
device_probe: button-0
device_probe: gpio-keys
device_probe: root_driver
device_probe: pinctrl@58020000
device_probe: pinctrl@58020000
device_probe: gpio@58021c00
device_probe: pinctrl@58020000
device_probe: pinctrl@58020000
device_probe: reset-clock-controller@58024400
stm32h7_rcc_clock reset-clock-controller@58024400: clk->id 29
stm32h7_rcc_clock reset-clock-controller@58024400: clkid=29 gate offset=0xe0 bit_index=7 name=gpioh

后记

  1. 这个步骤并不完善.STM32的LTDC驱动有问题.直接卡死在系统内部.无法排查.
  2. 这个操作仅供参考

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2306869.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

机试刷题_1614. 括号的最大嵌套深度【python】

1614. 括号的最大嵌套深度 class Solution:def maxDepth(self, s: str) -> int:maxD 0if not s:return maxDstack []for char in s:if char(:stack.append(char)maxD max(maxD,len(stack))elif char) :stack.pop()return maxD

VM虚拟机安装与配置Ubuntu Linux操作系统详细教程~

一、下载VM虚拟机 VMware16.0.zip百度网盘下载链接:https://pan.baidu.com/s/1-l-CcAVNINqhRLSiQ26R7w?pwd=tznn 提取码: tznn 二、软件介绍 VMware(虚拟机)是指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统,通过它可在一台电脑上同…

免费PDF工具

Smallpdf.com - A Free Solution to all your PDF Problems Smallpdf - the platform that makes it super easy to convert and edit all your PDF files. Solving all your PDF problems in one place - and yes, free. https://smallpdf.com/#rappSmallpdf.com-解决您所有PD…

组件注册方式、传递数据

组件注册 一个vue组件要先被注册&#xff0c;这样vue才能在渲染模版时找到其对应的实现。有两种注册方式&#xff1a;全局注册和局部注册。&#xff08;组件的引入方式&#xff09; 以下这种属于局部引用。 组件传递数据 注意&#xff1a;props传递数据&#xff0c;只能从父…

异步fifo学习

FIFO 本质是由 RAM 加上读写逻辑构成的先入先出的数据缓冲器。与 RAM 的区别是 FIFO 没有外部读写地址线&#xff0c;顺序写入顺序读出数据&#xff0c;其数据地址是由内部读写指针自增完成&#xff0c;因此 FIFO 在读写时不需要考虑读写冲突的问题。 根据 FIFO 工作的时钟域&a…

【有啥问啥】All-to-All 通信:原理、实现与应用

All-to-All 通信&#xff1a;原理、实现与应用 一、引言 在分布式计算和并行处理领域&#xff0c;进程之间的通信是至关重要的。All-to-All 通信作为一种高效的通信模式&#xff0c;广泛应用于各种高性能计算和分布式系统中。本文将详细介绍 All-to-All 通信的定义、工作原理…

Python学习第十七天之PyTorch保姆级安装

PyTorch安装与部署 一、准备工作二、pytorch介绍三、CPU版本pytorch安装1. 创建虚拟环境2. 删除虚拟环境1. 通过环境名称删除2. 通过环境路径删除 3. 配置镜像源4. 安装pytorch1. 首先激活环境变量2. 进入pytorch官网&#xff0c;找到安装指令 5. 验证pytorch是否安装成功 四、…

GPT-5倒计时:2025年AI海啸来袭,机器与人类对话临近

大家好&#xff0c;我是Shelly&#xff0c;一个专注于输出AI工具和科技前沿内容的AI应用教练&#xff0c;体验过300款以上的AI应用工具。关注科技及大模型领域对社会的影响10年。关注我一起驾驭AI工具&#xff0c;拥抱AI时代的到来。 人工智能&AIGC术语100条 Shelly聊AI-重…

ADC采集的电压误差比较大怎么办?

目录 1、电源噪声和电源不稳定 2、参考电压不稳定或不准确 3、采样电路设计不合理 4、温度影响 5、软件校准和误差修正 6、时钟抖动 ADC&#xff08;模数转换器&#xff09;采集的电压误差可能会受到多种因素的影响&#xff0c;要有效减少误差&#xff0c;需要从硬件和软…

【单片机】MSP430MSP432入门

文章目录 0 前言1 开发方式选择2 CCS和开发相关软件3 Keil开发MSP4324 IAR for 430开发MSP4305 总结 0 前言 最近因为想学DSP&#xff0c;所以把之前卸载的CCS给装回来了&#xff0c;手头也还有之前电赛剩下的MSP430和MSP432的板子&#xff0c;由于年代久远&#xff0c;想着花点…

大模型自动提示优化(APO)综述笔记

自大型语言模型&#xff08;LLMs&#xff09;出现以来&#xff0c;提示工程一直是各种自然语言处理&#xff08;NLP&#xff09;任务中激发期望响应的关键步骤。然而&#xff0c;由于模型的快速进步、任务的多样性和相关最佳实践的变化&#xff0c;提示工程对最终用户来说仍然是…

SOME/IP-SD -- 协议英文原文讲解6

前言 SOME/IP协议越来越多的用于汽车电子行业中&#xff0c;关于协议详细完全的中文资料却没有&#xff0c;所以我将结合工作经验并对照英文原版协议做一系列的文章。基本分三大块&#xff1a; 1. SOME/IP协议讲解 2. SOME/IP-SD协议讲解 3. python/C举例调试讲解 5.1.3.1 E…

每日Attention学习24——Strip Convolution Block

模块出处 [TIP 21] [link] CoANet: Connectivity Attention Network for Road Extraction From Satellite Imagery 模块名称 Strip Convolution Block (SCB) 模块作用 多方向条形特征提取 模块结构 模块特点 类PSP设计&#xff0c;采用四个并行分支提取不同维度的信息相比于…

Springboot快速接入豆包大模型

背景 突然接到上面的通知&#xff0c;想要在系统里面接入各大模型的能力&#xff0c;我这边随机选了个豆包&#xff0c;然后快速对接了一下&#xff0c;很顺利&#xff0c;一把过&#xff0c;现在文档的快速入门还是很ok的&#xff0c;在此记录一下过程&#xff0c;给宝子们参考…

DeepSeek的安全挑战和安全控制措施

本研究探讨了与 DeepSeek 相关的安全风险&#xff0c;为安全和风险管理领导者提供了有针对性的策略来缓解这些威胁&#xff0c;并提供了可行的措施来加强基于现有安全控制的 AI 保护。 主要发现 了解 DeepSeek 当前的安全状况。DeepSeek的采用激增暴露了关键的安全挑战&…

力扣-贪心-968 监控二叉树

思路 用true和false作为放置了摄像头&#xff0c;会有局限&#xff0c;就是没法判断以下情况 所以要用数字代表三种状态 2&#xff1a;有覆盖1&#xff1a;有摄像头0&#xff1a;无覆盖 两个节点都被覆盖时&#xff0c;要返回0 两个节点有一个无覆盖就要返回1 两个…

计算机毕业设计SpringBoot+Vue.js智慧社区(源码+文档+PPT+讲解)

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

在 compare-form.vue 中添加 compareDate 隐藏字段,并在提交时自动填入当前时间

在 compare-form.vue 中添加 compareDate 隐藏字段&#xff0c;并在提交时自动填入当前时间。 提交表单时存入的对象是FakeRegistration&#xff0c;这个对象里面有compareDate字段&#xff0c;刚好表格查询的对象也是FakeRegistration&#xff0c;所以表格展示的时间就是刚才…

Chat2File - DeepSeek Chat 导出助手:解决deepseek对话导出问题,提升开发效率

Chat2File - DeepSeek Chat 导出助手&#xff1a;解决deepseek对话导出问题&#xff0c;提升开发效率 大家好久不见&#xff0c;最近这段时间一直在开发一些项目&#xff0c;今天给大家带来一款刚在 Edge 成功上线的实用插件 ——Chat2File - DeepSeek Chat 导出助手。作为开发…

MEMS光纤麦克风传感器特色解析

概念原理 光纤麦克风是利用光纤作为传光介质和传感元件&#xff0c;将声音信号转换为光信号&#xff0c;并通过对光信号的检测和处理来获取声音信息的设备。它区别于传统基于电信号转换的麦克风&#xff0c;利用光的特性来实现声音的传感与传输。  原理&#xff1a;声音引起敏…