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

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

相关文章:

  • AI如何改变传统工厂的生产模式?
  • Nginx 平滑升级/回滚
  • 免费的 S3 客户端工具:s3cmd
  • 特斯拉 FSD 算法深度剖析:软件层面全解读
  • 深入理解Java多线程编程:从基础到高级应用
  • 【机器人系列之硬件和软件架构设计】
  • OpenHarmony应用间跳转
  • Lua的table(表)
  • JSON Schema 入门指南:如何定义和验证 JSON 数据结构
  • QT和有道词典有冲突,导致内存溢出,闪退。
  • neo4j 和 langchain_community.graphs.Neo4jGraph 对比
  • 前缀和专题练习 ——基于罗勇军老师的《蓝桥杯算法入门C/C++》
  • 机试刷题_NC17 最长回文子串【python】
  • PostgreSQL:模拟插入数据和查询(带时间)
  • 三轴加速度推算姿态角的方法,理论分析和MATLAB例程
  • Leetcode3162:优质数对的总数 I
  • Spring Boot @Async 注解深度指南
  • 湘潭大学计算机复试详细攻略(调剂)
  • Ubuntu 下 nginx-1.24.0 源码分析 - NGX_CYCLE_POOL_SIZE 宏
  • 智能生活综合平台需求规格说明书
  • 4月金融数据前瞻:受去年低基数因素影响,社融增量有望同比大幅多增
  • 央行:下阶段将实施好适度宽松的货币政策
  • 《中国人民银行业务领域数据安全管理办法》发布,6月30日起施行
  • 屈晓华履新四川省社科联党组书记,此前担任省国动办主任
  • 河南省省长王凯在郑州调研促消费工作,走访蜜雪冰城总部
  • 习近平同瑞典国王卡尔十六世·古斯塔夫就中瑞建交75周年互致贺电