w803|联盛德|WM IoT SDK2.X测试|window11|TOML 文件|外设|TFT_LCD|测试任务|(5):TFT_LCD_LVGL示例

TFT_LCD_LVGL

功能概述

此应用程序是使用 WM IoT SDK 进行 LVGL 功能的示例。它演示了如何初始化 TFT LCD 设备,并创建 LVGL DEMO Task 进行 LVGL 模块的初始化,并展示 LVGL 原生的不同 Demo 场景, 例如: Widgets, Music Player, Benchmark, Stress 等。 此程序采用 SDIO(SPI 模式) 与连接屏通信, 通信过程采用 DMA 或 CPU Polling 方式进行。

环境要求Á

  1. 示例程序中

TFT LCD屏要求:

手边有个1.8寸的TFT SPI屏,显示芯片ST7735,拿来测试。

应用程序 使用的 TFT LCD 屏可以被替换,但需要满足3个条件:

  1. Device Table 中 要预先设定 该 TFT LCD 屏的设备信息。

W803的Device Table位于G:\bsp\wm_iot_sdk\components\wm_dt\config\w803,已有定义,如:

[[dev]]

dev_name = "nv3041a_spi"

init_cfg = {init_level = "app", init_priority = 0}

spi_cfg = {mode = 0, freq = 40000000, pin_cs = {pin_num = 27, pin_mux = "fun5", dir = "output", pupd = "float"}}

pin_lcd_reset = 26

pin_lcd_dcx = 25

pin_lcd_led = 24

spi_device = "sdspi"

gpio_device = "gpio"

[[dev]]

dev_name = "st7735_spi"

init_cfg = {init_level = "app", init_priority = 0}

spi_cfg = {mode = 0, freq = 15000000, pin_cs = {pin_num = 27, pin_mux = "fun5", dir = "output", pupd = "float"}}

pin_lcd_reset = 26

pin_lcd_dcx = 25

pin_lcd_led = 24

spi_device = "sdspi"

gpio_device = "gpio"

执行wm.py devconfig查询到的GPIO配置:

TFT LCD 配置说明

对于 TFT LCD,包含如下选项:

  • pin_lcd_reset 表示 TFT LCD 屏幕的复位引脚,选择用哪个引脚来重置显示模块,取值为 GPIO 引脚编号,可取值为从 0 到 45。
  • pin_lcd_dcx 表示 TFT LCD 屏幕的数据/命令选择引脚,选择用哪个引脚来区分,取值为 GPIO 引脚编号,可取值为从 0 到 45。
  • pin_lcd_led 表示 TFT LCD 屏幕的背光控制引脚,选择用哪个引脚来控制屏幕的背光亮灭,取值为 GPIO 引脚编号,可取值为从 0 到 45。
  1. 此应用参考程序 引用 wm_drv_tft_lcd_cfg.h 中 的宏定义 WM_LVGL_LCD_MODULE_NAME,

#define LCD_DEVICE_NAME                WM_CFG_TFT_LCD_DEVICE_NAME

其值应配置成 Device Table 中已预设的 TFT LCD 屏设备 的设备名。 并在 menuconfig -> PERIPHERALS -> TFT LCD -> LCD Device 中选中 LCD 设备, 或者在 prj.config 中直接定义所需选中 LCD 设备的 Compile 开关,如 CONFIG_COMPONENT_DRIVER_LCD_NV3041A_SPI=y 。

c) 该 TFT LCD 屏的设备驱动 需要适配好,主要是其驱动实现的 ops 函数需要实现,并关联到 Device Table 中 dt_hw_table_entry[] 中。

执行wm.py devconfig后,显示调整主控芯片为w803后的devicetable,其中:

采用ST7735显示驱动:

还需要修改G:\bsp\wm_iot_sdk\components\driver\include\wm_drv_tft_lcd_cfg.h,适配屏幕大小。

本例修改如下:

#elif defined(CONFIG_COMPONENT_DRIVER_LCD_ST7735_SPI)

/* User need to check the ST7735 LCD Model's GM mode pin selection which descripted on ST7735's Datasheet.

 * GM[2:0]=000 , 132RGB x 162 resolution

 * GM[2:0]=011 , 128RGB x 160 resolution

*/

#define WM_CFG_TFT_LCD_DEVICE_NAME  DEV_NAME_ST7735_SPI

#define WM_CFG_TFT_LCD_X_RESOLUTION 130

#define WM_CFG_TFT_LCD_Y_RESOLUTION 162

#define WM_CFG_TFT_LCD_ROTATION     0

#define WM_CFG_TFT_LCD_PIXEL_WIDTH  2 //RGB565(2 Bytes)

  1. 引脚连接:

硬件配置 存储在 Device Table 中,包含 SDIO 设备的引脚定义 和 SDIO(SPI Mode) 时钟设定 以及 TFT LCD 屏设备的其他引脚定义。 SDIO 设备 及 TFT LCD 屏设备 可在 Device Table中 通过设备名 进行定义查询。 Device Table 的定义文件是 wm_dt_hw.c,但具体可能会因为此工程所引用的设备表文件不同而由差异。

下图为 W803 的 GPIO 序号 与 ST7735 PIN 的对应关系 示例, 实际应该参考Device Table中的配置。

GPIO序号

引脚编号

连接描述

ST7735 PIN

WM_GPIO_NUM_22

PB6

CLK

SCL

WM_GPIO_NUM_23

PB7

MOSI

SDA

WM_GPIO_NUM_27

PB11

CS

CS

WM_GPIO_NUM_26

PB10

RESET

RES

WM_GPIO_NUM_25

PB9

DCX

DC/DO

WM_GPIO_NUM_24

PB8

LED

BK

编译和烧录

示例位置:examples\tft_lcd\tft_lcd_lvgl

Demo 场景的选择 是在 menuconfig -> LVGL -> Demos 中选中所需的 Demos选项,或者在 prj.config 中直接定义所需选中 Demo 场景的 Compile 开关,比如:打开 CONFIG_LV_USE_DEMO_STRESS=y。 需要注意的是,为了避免运行冲突, 不能同时打开两个及以上的 Demo 场景的宏定义开关。

编译时,请注意选择 CONFIG_BUILD_TYPE_XXX 以及 确认所引用的 Device Table 需要与所实验的开发板相匹配。 为了更高的画面显示效率,用户可通过 device table 将 RCC CPU Clock 设定成较高的值,比如:240MHz。

编译、烧录等操作请参考:快速入门

运行结果

成功运行将输出如下日志

[I] (10) main: ver: 2.2-beta.2 build at Feb 23 2025 19:38:05

[I] (11) main: boot reason 0

[I] (11) main: heap size 220656(215.48KB)

[I] (11) main: flash size 0x200000(2MB)

W803: [I] (451) lvgl_example: LCD x_resolution = 130

[I] (452) lvgl_example: LCD y_resolution = 162

[I] (452) lvgl_example: LCD rotation = 0

其他可选演示功能

可选演示功能1: 客制化 Memeoy malloc/realloc 函数,从 PSRAM 中分配 LVGL 所需的 heap 空间。

硬件上,须确保 pSRAM 元件有正确接到 测试平台上。 软件上,可启用 prj.config 中的如下选项(默认关闭), 或者在 menuconfig UI界面中 选择启用。

CONFIG_COMPONENT_DRIVER_PSRAM_ENABLED=y CONFIG_LV_MEM_CUSTOM=y CONFIG_LV_MEM_CUSTOM_INCLUDE=”wm_lv_port_mem.h”

说明:考虑到 pSRAM 访问效率弱于 sRAM, 打开此功能后,可能 LVGL 的画面显示速度会降低。

可选演示功能2: 启用 CLI 模块,通过 CLI 查询工程运行时状态

软件上,可启用 prj.config 中的如下选项(默认打开), 或者在 menuconfig UI界面中 选择启用。

CONFIG_COMPONENT_CLI_ENABLED=y CONFIG_CLI_COMMANDS_SYSTEM=y

说明:CLI 为 debug 用途,在用户工程中的量产版本 可以考虑关闭。 如下是上电后,通过 Uart0(默认 CLI 端口,可通过 menuconfig 调整), 输入 help 命令 呈现出的 CLI 命令.

W801S: help

COMMAND LIST:

cls                   -- clear command line

help                  -- show help info

log                   -- log level cmd

heap                  -- show heap tracing

free                  -- show free heap size

task                  -- show task list

reboot                -- reboot system

version               -- show sdk version info

partition             -- partition table cmd

设备表简介

设备表当前支持两种使用方式:

使用 TOML 文件配置,这是当前 推荐 的使用方式

使用 C 语言文件配置,这是传统的使用方式

对于这两种方式,使用者任选其一即可,默认使用 TOML 文件配置。

使用 TOML 文件配置

TOML 文件是一种文本格式的配置文件, 它的语义明显易于阅读,而且支持添加注释信息,非常方便人类阅读使用。

TOML 文件有用一套完整的语法规范,当前语法详情可参阅:

TOML v1.0.0-rc.2

https://doc.winnermicro.net/w800/zh_CN/latest/component_guides/device_table/toml_spec_v1.0.0-rc.2.html

WM IoT SDK 当前使用的 TOML 配置文件默认位置为 components/wm_dt/config/<soc>/device_table.toml, 当工程根目录下存在 device_table.toml 文件时,会优先使用工程根目录下的 device_table.toml 文件。

当用户需要修改配置文件时,不推荐直接修改组件目录中的 device_table.toml 默认文件, 而是推荐从组件目录中复制一份至工程根目录,修改工程根目录下的 device_table.toml 文件。

device_table.toml 文件可用任意文本编辑工具进行编辑,但对于部分编辑器可能需要安装插件才能支持语法显示,此处不再介绍。

当启动编译后,构建系统首先会将检查项目根目录下是否有 device_table.toml 文件,如果有则将此 device_table.toml 文件复制为 build/device_table/device_table.toml,之后将 始终 使用 build/device_table/device_table.toml 文件作为当前的配置,脚本会将 build/device_table/device_table.toml 文件转为 C 代码后参与编译,转换的 C 代码在 build/device_table/ 路径下。 如果项目根目录下不存在 device_table.toml 文件,则选择将 components/wm_dt/config/<soc>/device_table.toml 复制为 build/device_table/device_table.toml,之后的流程同上。

当开发完成之后,可以使用命令 wm.py saveconfig 将当前调好的设备表配置保存为工程根目录下的 device_table.toml 文件。

设备表配置网页配置系统

为了进一步简化对 device_table.toml 文件的配置,提供了一套网页系统,通过网页用户可以直接在网页进行勾选、输入等操作,而无需关心 TOML 文件规范和 SDK 中的设备属性。

使用时,可执行命令 wm.py devconfig 自动打开网页。 对于非桌面环境的用户则不能使用此命令,只能选择手动编辑 device_table.toml 文件或 C 代码方式。

网页中显示的内容,受到 menuconfig 菜单中的 SoC 类型和驱动选项影响,可能因为不同的 SoC 类型或裁剪了驱动而显示不同。

Enumerations

enum wm_lcd_rotate_t

Enumeration with tft lcd display rotation.

Values:

enumerator LCD_ROTATION_NONE

NOMAL without display rotation

enumerator LCD_ROTATION_90_DEGREE

90 degree rotation for the display

enumerator LCD_ROTATION_180_DEGREEÁ

180 degree rotation for the display

enumerator LCD_ROTATION_270_DEGREE

270 degree rotation for the display

enumerator LCD_ROTATION_MAX

The max number of rotation enum

w803-1.8寸TFT_LCD_LVGL测试

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

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

相关文章

openlayers结合turf geojson面获取面积和中心点

在 OpenLayers 中绘制 GeoJSON 面要素并计算面积和中心点&#xff0c;可以结合 OpenLayers 的 ol/format/GeoJSON 模块将 GeoJSON 数据转换为 OpenLayers 的 Feature&#xff0c;然后使用 Turf.js 进行计算。示例代码如下 import Map from ol/Map; import View from ol/View; …

nginx 搭建 IPv6 -> IPv4 反向代理服务器

背景 在实际生产过程中&#xff0c;由于各种原因&#xff0c;我们的在线服务搭建在火山云服务器上&#xff0c;使用火山云包括 ECS、CLB、PLB 等组件进行网络通信&#xff0c;并且通过专线接受来自某公司内部流量。但是在大概 22~23 年&#xff0c;某公司要把所有网络流量变为…

FTP出现“打开 FTP 服务器上的文件夹时发生错误。请检查是否有权限访问该文件夹。”如何处理?

关闭“使用被动FTP”功能&#xff1a;在控制面板的“Internet选项”中&#xff0c;点击“高级”标签卡&#xff0c;找到“使用被动FTP&#xff08;为防火墙和DSL调制解调器兼容性&#xff09;”&#xff0c;并取消勾选124。 检查FTP服务器设置&#xff1a;确保FTP服务器没有开…

wordpress使用CorePress主题设置项总结

宝塔面板设置 软件商店中安装的软件有&#xff1a;&#xff08;宝塔网站加速3.1&#xff09;&#xff08;Nginx 1.18.0&#xff09;&#xff08;MySql 5.6.50&#xff09;&#xff08;PHP-5.6&#xff09;&#xff08;phpMyAdmin 4.4&#xff09;&#xff08;Python项目管理器 …

Oracle Redo日志损坏挽救详细攻略

一 介绍 1.1 介绍 Oracle Redo损坏分四种情况:unused状态日志损坏 inactive状态日志损坏 active状态日志损坏 current状态日志损坏。针对不同状态的日志损坏&#xff0c;处理方式有所不同&#xff0c;下面将逐一介绍。 二 恢复 2.1 unused与inactive状态日志损坏 如果这个…

003 SpringBoot集成Kafka操作

4.SpringBoot集成Kafka 文章目录 4.SpringBoot集成Kafka1.入门示例2.yml完整配置3.关键配置注释说明1. 生产者优化参数2. 消费者可靠性配置3. 监听器高级特性4. 安全认证配置 4.配置验证方法5.不同场景配置模板场景1&#xff1a;高吞吐日志收集场景2&#xff1a;金融级事务消息…

将VsCode变得顺手好用(1

目录 设置中文 配置调试功能 提效和增强相关插件 主题和图标相关插件 创建js文件 设置中文 打开【拓展】 输入【Chinese】 下载完成后重启Vs即可变为中文 配置调试功能 在随便一个位置新建一个文件夹&#xff0c;用于放置调试文件以及你未来写的代码&#xff0c;随便命名但…

1.1部署es:9200

安装es&#xff1a;root用户&#xff1a; 1.布署java环境 - 所有节点 wget https://d6.injdk.cn/oraclejdk/8/jdk-8u341-linux-x64.rpm yum localinstall jdk-8u341-linux-x64.rpm -y java -version 2.下载安装elasticsearch - 所有节点 wget ftp://10.3.148.254/Note/Elk/…

java后端开发day20--面向对象进阶(一)--static继承

&#xff08;以下内容全部来自上述课程&#xff09; 1.static–静态–共享 static表示静态&#xff0c;是java中的一个修饰符&#xff0c;可以修饰成员方法&#xff0c;成员变量。 1.静态变量 被static修饰的成员变量&#xff0c;叫做静态变量。 特点&#xff1a; 被该类…

DeepSeek本地部署+自主开发对话Web应用

文章目录 引言前端部分核心页面DeepSeek.vueMyModal.vue 后端部分WebSocketConfig 配置类AbstractDeepSeekToolDeepSeekWebSocketHandler 数据库设计总结 引言 最近DeepSeep横空出世&#xff0c;在全球内掀起一股热潮&#xff0c;到处都是满血大模型接入的应用&#xff0c;但这…

【算法】798. 差分矩阵

题目 798. 差分矩阵 思路 实质是二维差分&#xff0c;构造数组b&#xff0c;a为b的前缀和&#xff0c;也要用到前缀和的内容&#xff0c;求出数组b之后用b表示a&#xff0c;和一维差分思路类似&#xff0c;不同之处是在加减c时二维要复杂一些。 代码 #include<iostream…

MySQL企业开发中高频使用语句

以下是企业级MySQL开发中高频使用的语句分类及示例&#xff0c;结合典型业务场景说明&#xff1a; 一、数据定义&#xff08;DDL&#xff09; 表结构管理 -- 创建用户表&#xff08;含索引优化&#xff09; CREATE TABLE user (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR…

使用DeepSeek/chatgpt等AI工具辅助网络协议流量数据包分析

随着deepseek,chatgpt等大模型的能力越来越强大&#xff0c;本文将介绍一下deepseek等LLM在分数流量数据包这方面的能力。为需要借助LLM等大模型辅助分析流量数据包的同学提供参考&#xff0c;也了解一下目前是否有必要继续学习wireshark工具以及复杂的协议知识。 pcap格式 目…

DeepSeek-R1:通过强化学习激发大语言模型的推理能力

注&#xff1a;此文章内容均节选自充电了么创始人&#xff0c;CEO兼CTO陈敬雷老师的新书《自然语言处理原理与实战》&#xff08;人工智能科学与技术丛书&#xff09;【陈敬雷编著】【清华大学出版社】 文章目录 DeepSeek大模型技术系列三DeepSeek大模型技术系列三》DeepSeek-…

基于YOLO11深度学习的医学X光骨折检测与语音提示系统【python源码+Pyqt5界面+数据集+训练代码】

《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…

数据结构:二叉树的数组结构以及堆的实现详解

目录 一.树与二叉树 1.树的概念与相关术语&#xff1a; 2.二叉树&#xff1a; &#xff08;1&#xff09;定义&#xff1a; &#xff08;2&#xff09;特殊的二叉树&#xff1a; &#xff08;3&#xff09;完全二叉树 &#xff08;4&#xff09;二叉树的存储结构&#x…

Python 函数式编程-偏函数

目录 偏函数 小结 偏函数 Python的functools模块提供了很多有用的功能&#xff0c;其中一个就是偏函数&#xff08;Partial function&#xff09;。要注意&#xff0c;这里的偏函数和数学意义上的偏函数不一样。 在介绍函数参数的时候&#xff0c;我们讲到&#xff0c;通过…

鸿蒙中连接手机可能遇到的问题

连接权限问题&#xff1a;手机开启了严格的权限管理机制&#xff0c;若未授予鸿蒙设备连接所需的权限&#xff0c;如蓝牙连接时未开启蓝牙权限&#xff0c;或者 USB 连接时未允许设备进行调试、文件传输等操作&#xff0c;就会导致连接失败。例如&#xff0c;当使用鸿蒙平板通过…

VMware各个软件的作用

VMware作为全球领先的虚拟化与云计算解决方案提供商&#xff0c;其软件产品覆盖了从桌面级虚拟化到企业级云平台的全场景需求。以下结合其核心产品体系&#xff0c;详细解析各软件的功能定位与业务价值&#xff1a; 一、基础虚拟化平台 VMware vSphere 作为企业级服务器虚拟化…

第16届蓝桥杯模拟赛3 python组个人题解

第16届蓝桥杯模拟赛3 python组 思路和答案不保证正确 1.填空 如果一个数 p 是个质数&#xff0c;同时又是整数 a 的约数&#xff0c;则 p 称为 a 的一个质因数。 请问&#xff0c; 2024 的最大的质因数是多少&#xff1f; 因为是填空题&#xff0c;所以直接枚举2023~2 &am…