LCD屏入门(基于ESP-IDF、SPI屏)

news2024/11/26 4:22:33

主要参考资料:
ESP32-S3 开发 SPI 屏【DIY 智能手表】: https://www.bilibili.com/video/BV1Yc411y7bb/?spm_id_from=333.337.search-card.all.click&vd_source=dd284033cd0c4d1f3f59a2cd40ae4ef9
使用 SPI 屏和 I2C 触屏运行 SquareLine Studio 提供的手表 UI 示例: https://gitee.com/esp-friends/lcd_touch
B站【乐鑫全球开发者大会】DevCon23 #17 |HMI 智能屏解决方案

目录

  • 1. 简介
  • 2. 硬件层接线
  • 3. 软件层
    • 3.1 SDK层component模块
    • 3.2 确认驱动兼容性
    • 3.3 配置端口层(SPI屏幕和触摸)
      • 3.3.1 LCD的初始化
      • 3.3.2 输入设备的初始化
    • 3.4 配置LVGL

1. 简介

MCU常用的驱动接口在下面,大致可以划分为串口屏和并口屏。
串口屏相较于并行屏优势是占用IO少,相应地数据传输带宽也低。
SPI有标准SPI和QSPI之分,具体可以看链接: https://blog.csdn.net/wangguchao/article/details/105593303

在这里插入图片描述

2. 硬件层接线

对于 SPI/I80接口,命令和颜色数据使用同一个接口。
在这里插入图片描述
在这里插入图片描述

3. 软件层

为了便于封装接口,习惯上会将屏幕代码分为三个层级:SDK层、驱动层和APP层。
在这里插入图片描述

3.1 SDK层component模块

在SDK层中封装了对 IO配置 和 总线配置的接口。已经作为components在ESP-IDF中。
比如触摸芯片cst816,在乐鑫组件库中搜索
在这里插入图片描述
在idf_component.yml中添加依赖
或者使用命令行idf.py add-dependency “espressif/esp_lcd_touch_cst816s^1.0.3~1”
在这里插入图片描述

3.2 确认驱动兼容性

3.3 配置端口层(SPI屏幕和触摸)

3.3.1 LCD的初始化

  • SPI总线配置
/* =============== Initialize SPI bus =============== */
    ESP_LOGI(TAG, "Initialize SPI bus");

    const spi_bus_config_t buscfg = ILI9341_PANEL_BUS_SPI_CONFIG(EXAMPLE_PIN_NUM_LCD_PCLK, EXAMPLE_PIN_NUM_LCD_DATA0,
                                    EXAMPLE_LCD_H_RES * EXAMPLE_LCD_V_RES * sizeof(uint16_t));
    ESP_ERROR_CHECK(spi_bus_initialize(EXAMPLE_LCD_HOST, &buscfg, SPI_DMA_CH_AUTO));
  • IO配置
/* =============== Install panel IO =============== */
    ESP_LOGI(TAG, "Install panel IO");

    esp_lcd_panel_io_handle_t io_handle = NULL;
    const esp_lcd_panel_io_spi_config_t io_config = ILI9341_PANEL_IO_SPI_CONFIG(EXAMPLE_PIN_NUM_LCD_CS, EXAMPLE_PIN_NUM_LCD_DC,
            example_notify_lvgl_flush_ready, &disp_drv);

    /* Attach the LCD to the SPI bus */
    ESP_ERROR_CHECK(esp_lcd_new_panel_io_spi((esp_lcd_spi_bus_handle_t)EXAMPLE_LCD_HOST, &io_config, &io_handle));
  • 安装LCD驱动
 /* =============== Install ili9341 panel driver =============== */
    ESP_LOGI(TAG, "Install ili9341 panel driver");

    esp_lcd_panel_handle_t panel_handle = NULL;
    ili9341_vendor_config_t vendor_config = {
        .init_cmds      = lcd_init_cmds,
        .init_cmds_size = sizeof(lcd_init_cmds) / sizeof(ili9341_lcd_init_cmd_t),
    };
    const esp_lcd_panel_dev_config_t panel_config = {
        .reset_gpio_num = EXAMPLE_PIN_NUM_LCD_RST,
        .rgb_endian     = LCD_RGB_ENDIAN_RGB,
        .bits_per_pixel = EXAMPLE_LCD_BIT_PER_PIXEL,
        .vendor_config  = &vendor_config, 
    };
    ESP_ERROR_CHECK(esp_lcd_new_panel_ili9341(io_handle, &panel_config, &panel_handle));
    ESP_ERROR_CHECK(esp_lcd_panel_reset(panel_handle));
    ESP_ERROR_CHECK(esp_lcd_panel_init(panel_handle));
    ESP_ERROR_CHECK(esp_lcd_panel_disp_on_off(panel_handle, true));

3.3.2 输入设备的初始化

安装触摸端口

3.4 配置LVGL

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

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

相关文章

突触可塑性与STDP:神经网络中的自我调整机制

突触可塑性与STDP:神经网络中的自我调整机制 在神经网络的学习过程中,突触可塑性(Synaptic Plasticity)是指神经元之间的连接强度(突触权重)随着时间的推移而动态变化的能力。这种调整机制使神经网络能够通…

链动 2+1 模式 S2B2C 商城小程序:交易转化的创新引擎

摘要 在数字化商业时代,电商行业竞争激烈,交易转化成为核心问题。链动 21 模式 S2B2C 商城小程序源码作为创新电商模式,通过独特的推荐与分享机制、丰富奖励机制、AI 智能名片及 S2B2C 商城的个性化定制与供应链协同等,在交易转化…

redis+mysql数据一致性+缓存穿透解决方案

在分布式事务中我们知道有cap定理,即 我们保证高可用的情况下,必然要牺牲一些一致性,在保证强一致性的情况下,必然会牺牲一些可用性。而我们redismysql数据一致性的使用策略就是在我们保证可用性的情况下尽量保证数据的一致性。想…

MySql的基本语法操作

查看数据库和表 查看所有的数据库 show databases; 建立一个新的数据库 create database database_name; 也可以是 create database if not exists database_name; 表示这个数据库不存在才建立 而不会打断其他sql语句的执行,而如果没有加的话,创建…

神经网络及大模型科普揭秘

一、生物神经元及神经元构成的神经网络 下图是生物神经元的示意图: 生物神经元由细胞体、树突、轴突、轴突末梢四部分构成。 下图是生物神经网络的一个简单示意图: 生物神经元通过电信号在彼此间传递信号,神经元的各个树突接收输入信号,经过细胞体汇总,如果最终总和高…

【动态规划-最长公共子序列(LCS)】力扣97. 交错字符串

给定三个字符串 s1、s2、s3&#xff0c;请你帮忙验证 s3 是否是由 s1 和 s2 交错 组成的。 两个字符串 s 和 t 交错 的定义与过程如下&#xff0c;其中每个字符串都会被分割成若干 非空 子字符串&#xff1a; s s1 s2 … sn t t1 t2 … tm |n - m| < 1 交错 是 s1…

【微服务】服务注册与发现 - Eureka(day3)

CAP理论 P是分区容错性。简单来说&#xff0c;分区容错性表示分布式服务中一个节点挂掉了&#xff0c;并不影响其他节点对外提供服务。也就是一台服务器出错了&#xff0c;仍然可以对外进行响应&#xff0c;不会因为某一台服务器出错而导致所有的请求都无法响应。综上所述&…

网络安全概述:从认知到实践

一、定义 网络安全&#xff0c;即致力于保护网络系统所涵盖的硬件、软件以及各类数据&#xff0c;切实保障其免遭破坏、泄露或者篡改等不良情形的发生。 二、重要性 个人层面&#xff1a;着重于守护个人隐私以及财产安全&#xff0c;为个人在网络世界中的各项活动提供坚实的保…

分享几个做题网站------学习网------工具网;

以下是就是做题网站&#xff1b;趣IT官网-互联网求职刷题神器趣IT——互联网在线刷题学习平台&#xff0c;汇集互联网大厂面试真题&#xff0c;拥有java、C、Python、前端、产品经理、软件测试、新媒体运营等多个热门IT岗位面试笔试题库&#xff0c;提供能力测评、面试刷题、笔…

Meta 首个多模态大模型一键启动!首个多针刺绣数据集上线,含超 30k 张图片

小扎在 Meta Connect 2024 主题演讲中宣布推出首个多模态大模型 Llama 3.2 vision&#xff01;该模型有 11B 和 90B 两个版本&#xff0c;成为首批支持多模态任务的 Llama 系列模型&#xff0c;根据官方数据&#xff0c;这两个开原模型的性能已超越闭源模型。 小编已经迫不及待…

算法修炼之路之二分查找

目录 一:三大二分介绍及模板 1.普通二分 2.查找左右边界的二分及模板 二:LeetCode OJ练习 1.第一题 2.第二题 3.第三题 4.第四题 5.第五题 6.第六题 一:三大二分介绍及模板 1.普通二分 这里通过一道题来引出普通二分及模板 LeetCode_704 二分查找 画图分析: 具体代…

AI 大模型的核心能力与应用场景全解析

深入理解 AI 大模型&#xff1a;核心能力与应用场景全解析 AI大模型是什么 通过概念考察的方式了解AI大模型&#xff0c;拆开来看。 AI领域术语丰富&#xff0c;涵盖模式识别、自然语言处理、神经网络、机器学习、深度学习、强化学习及人类反馈强化学习。大模型&#xff1a;把…

Springboot人才求职招聘系统源码(前台+后台)

文章目录 1 项目描述2 后台功能3 获取方式 项目技术&#xff1a;springboot 运行环境&#xff1a;jdk1.8idea/eclipsemaven3mysql5.6 1 项目描述 基于springboot的招聘系统&#xff0c;包括前台和后台管理系统&#xff0c;前台包括首页&#xff0c;应聘职位&#xff0c; 在…

[C语言]指针和数组

目录 1.数组的地址 2.通过指针访问数组 3.数组和指针的不同点 4.指针数组 1.数组的地址 数组的地址是什么&#xff1f; 看下面一组代码 #include <stdio.h> int main() { int arr[5] {5,4,3,2,1}; printf("&arr[0] %p\n", &arr[0]); printf(&qu…

最新版IntelliJ IDEA 2024.2.3 创建SpringBoot项目(包含各种依赖的选择和功能)

创建SpringBoot项目 1 . 打开IDEA 选择新建项目 2. 基础项目创建 在顶端几个选项可以选择创建基本的java项目 填写项目名称,文件位置,选择构建工具 3. 下方选择springboot 选择构建的方式 三种方式虽然不同但是,基本功能都一致, Gradle-Groovy 是指使用 Groovy 语言编写…

鸿蒙开发(NEXT/API 12)【访问控制应用权限管控概述】程序访问控制

默认情况下&#xff0c;应用只能访问有限的系统资源。但某些情况下&#xff0c;应用存在扩展功能的诉求&#xff0c;需要访问额外的系统数据&#xff08;包括用户个人数据&#xff09;和功能&#xff0c;系统也必须以明确的方式对外提供接口来共享其数据或功能。 系统通过访问…

http2详细讲解

github链接 &#xff1a; http2

免费音频剪辑软件大揭秘:让声音创作更轻松

在精神娱乐越发丰富的现在&#xff0c;音频内容的创作和编辑变得越来越重要。无论是专业的音乐制作人&#xff0c;还是自媒体创作者&#xff0c;都可能需要一款功能强大且易于使用的音频剪辑软件来处理音频素材。今天我们一同来探讨有什么好用的免费音频剪辑软件吧。 1.福昕音…

UGUI(六大UI根基组件)

Rect Transform 各种参数 是显示pos还是width/height 还是left/top/right/bottom之类巴拉巴拉&#xff0c;各种混合的展示baby&#xff0c;都是看anchor的设置 pivot的设置影响具体数值 至于blueprint mode &#xff0c;就是用了之后框框不变&#xff0c;who wanna do thi…

Graph Retrieval-Augmented Generation: A Survey

最近&#xff0c;检索增强生成(RAG)在解决大型语言模型(llm)的挑战方面取得了显著的成功&#xff0c;而无需再培训。通过引用外部知识库&#xff0c;RAG改进了LLM输出&#xff0c;有效地减轻了诸如“幻觉”、缺乏特定于领域的知识和过时信息等问题。然而&#xff0c;数据库中不…