当前位置: 首页 > article >正文

[uboot][stm32]配置LTDC屏幕

文章目录

  • 前提
  • 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. 这个操作仅供参考

相关文章:

[uboot][stm32]配置LTDC屏幕

文章目录 前提dts设备树修改Kconfig日志打印后记 https://github.com/wdfk-prog/u-boot 前提 手上刚好有块屏幕,尝试在uboot中点亮一下使用前请使用其他手段点亮该屏幕确保屏幕的完好再进行操作.确保配置的参数及引脚是可用的. dts设备树修改 ltdc状态修改为重定向前绑定,另…...

机试刷题_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(虚拟机)是指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统,通过它可在一台电脑上同…...

2025年2月科技热点深度解析:AI竞赛、量子突破与开源革命

引言 2025年的科技领域持续呈现爆发式增长&#xff0c;AI大模型竞争白热化、量子计算商业化加速、开源工具生态繁荣成为本月最受关注的议题。本文结合最新行业动态&#xff0c;从技术突破、商业布局到开发者生态&#xff0c;全面解析当前科技热点&#xff0c;为读者提供深度洞…...

免费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;只能从父…...

IPD流程适合创业团队吗?

目录 简介 创业团队 作者简介 简介 回答这个问题&#xff0c;就不能只局限于 IPD 流程本身。 而是要先回答为什么需要 IPD 流程&#xff1f; 在 IPD 思维这篇文章&#xff0c;我也强调过这个观点&#xff1a; IPD 本身是为过剩经济量身定做的一种模式、一种思维。 包括…...

异步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 通信的定义、工作原理…...

深度学习(3)-TensorFlow入门(常数张量和变量)

低阶张量操作是所有现代机器学习的底层架构&#xff0c;可以转化为TensorFlow API。 张量&#xff0c;包括存储神经网络状态的特殊张量&#xff08;变量&#xff09;​。 张量运算&#xff0c;比如加法、relu、matmul。 反向传播&#xff0c;一种计算数学表达式梯度的方法&…...

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

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

HTML邮件的制作以及遇到的问题

以下是关于HTML邮件制作的详细步骤以及可能遇到的问题和解决办法&#xff1a; 一、HTML邮件制作步骤 规划邮件结构&#xff1a;确定邮件的主题、主要内容、目标受众等。比如是营销推广邮件、新闻通讯邮件还是通知邮件等。例如&#xff0c;营销推广邮件可能需要突出产品特点和…...

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;想着花点…...

linux中conda3安装

1、下载安装包 清华源-》https://mirrors.tuna.tsinghua.edu.cn/# 本文使用Anaconda3-2022.10&#xff0c;对应的下载路径-》https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2022.10-Linux-x86_64.sh 2、将下载到的sh脚本放在Linux中用sh脚本解析器执行 …...

大模型自动提示优化(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;采用四个并行分支提取不同维度的信息相比于…...

ECharts graphic 的学习

ECharts 的 graphic 属性用于在图表中自定义图形元素&#xff08;如文本、形状、图片等&#xff09;&#xff0c;实现更灵活的视觉效果增强或交互设计。以下是结合搜索结果的整理与分析&#xff1a; 一、graphic 的核心功能 自定义图形类型 支持多种基础图形元素&#xff0c;包…...

Springboot快速接入豆包大模型

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

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

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

掌握 JavaScript 旋转技术

1. 基本概念 1.1 角度与弧度 在讨论旋转之前&#xff0c;首先需要了解角度和弧度的概念&#xff1a; 角度&#xff1a;通常用度数表示&#xff0c;一个圆周为360度。弧度&#xff1a;数学上更常用的角度单位&#xff0c;一个圆周为2π弧度。 在JavaScript中&#xff0c;大多…...

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

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

从零开始搭建你的第一个HBase项目:实战经验分享

从零开始搭建你的第一个HBase项目&#xff1a;实战经验分享 数据洪流中的你&#xff0c;准备好了吗&#xff1f; 在大数据时代&#xff0c;数据量的增长速度令人咋舌。面对海量的数据&#xff0c;如何高效地存储、管理和分析成为了一个亟待解决的问题。今天&#xff0c;我们将…...

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

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

Elasticsearch 的分布式架构原理:通俗易懂版

Elasticsearch 的分布式架构原理&#xff1a;通俗易懂版 Lucene 和 Elasticsearch 的前世今生 Lucene 是一个功能强大的搜索库&#xff0c;提供了高效的全文检索能力。然而&#xff0c;直接基于 Lucene 开发非常复杂&#xff0c;即使是简单的功能也需要编写大量的 Java 代码&…...

每日一题之混乱的草稿纸

问题描述 一年一度的蓝桥杯省赛即将开赛&#xff0c;小蓝卧薪尝胆&#xff0c;目标直指省一。 为了实现这个宏伟目标&#xff0c;小蓝偷偷准备了一份 NN 行的代码模板&#xff0c;分别写在 NN 张草稿纸上&#xff08;每张草稿纸上都写有一行代码&#xff0c;并用 11 到 NN 的…...

【redis】数据类型之hyperloglog

Redis的HyperLogLog&#xff08;HLL&#xff09;是一种高效的概率数据结构&#xff0c;也是一种基于字符串的数据结构&#xff0c;用于估计大数据集的唯一元素数量&#xff08;基数统计&#xff09;。它通过极低的内存占用&#xff08;约 12KB&#xff09;实现接近线性的时间复…...

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

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