ESP32-idf学习(四)esp32C3驱动lcd

news2025/6/3 8:57:50

一、前言

屏幕是人机交互的重要媒介,而且现在我们产品升级的趋势越来越高大尚,不少产品都会用lcd来做界面,而esp32c3在一些项目上是可以替代主mcu,所以驱动lcd也是必须学会的啦

我新买的这块st7789,突然发现是带触摸功能的,刚好现在学习esp82驱动屏幕的时候,把触摸的功能也试一下。

二、开发准备

1、硬件分析

①、屏幕接口

我是买的带转接板的,直接看转接板的引脚定义吧

我这款是电容屏

②、开发板接口

用到SPI和IIC

外挂的flash,有可能会用到,先贴出来:

③、接线汇总:

因为esp32除了特定引脚,其他都是可以随意配置的,大多我都按合宙给的图来

开发板--------------------------------------------屏幕转接板

GPIO2------------------------------------------SCK

GPIO3------------------------------------------SDI

GPIO19----------------------------------------SDO

GPIO6------------------------------------------LED

GPIO7------------------------------------------CS

GPIO12-----------------------------------------DC

GPIO10------------------------------------------RESET(引脚有点紧张,这里电容屏用的是iic返回信息,MISO可以不接,我用作复位脚了)

GPIO5---------------------------------------------T_CLK

GPIO4---------------------------------------------T_SDI

GPIO18-------------------------------------------T_CS

GPIO19-------------------------------------------T_IRQ

先这样试着吧

2、例程选择

其实因为这款芯片非常火,GitHub、立创上等等很多平台都有开源的驱动屏幕的项目,做得很牛逼,很多都是移植了lvgl的。我就先简单驱动一下,后边看是自己封装显示部分,还是移植u8g2或lvgl,这些都是看需求。

可以看到例程其实已经也比较完整的了,但我还是会修改的比较多

三、初步修改例程

1、宏定义

将例程原本的宏定义修改一下,然后加上IIC的

因为把原先宏定义的名称也改了,所以把报错的地方先改一下:

这里修改完,其实显示部分就没什么问题的了。这例程是自动识别ST7789V或者ILI9341的

我是2.4寸的屏幕 320*240

背光我们这里要改成1,上边截的表有说明

到这里烧录程序,已经可以显示了:

四、触摸部分及显示增加修改例程

1、宏定义

include也列在这吧

尺寸

spi和iic的一些地址

2、变量

跟之前的差不多,一些句柄

touch_event是我用来确保处理之后信号量再次通知,后边会有说到

3、新增加的函数

①、触摸芯片初始化

首先触摸芯片的初始化,跟其他iic没什么区别,就是通过下降沿触发的时候,去读取坐标:

②读取触摸的坐标函数:

③中断处理:

这里我做了确保是低电平和touch_event,其实还应该加一个消抖好点,例如在这里加一个静态变量cnt,cnt累加到一定次数再去xTaskNotifyFromISR

④、清屏和像素点位显示

然后因为例程没有给清屏和显示点像素的函数,自己做了:

⑤主任务

触摸的点位,我会显示白色,超时5s这个注释错了,尴尬,复制上一个工程的,截图的时候没看

我把原先例程显示的图片注释了,变成黑色背景,这样触摸显示点位清晰一点。

⑥原初始化微调

最最后,就是这个屏幕的方向,试了好几次,对比厂家给我的例程才发现写00就好:

五、烧录验证

这些白点就是我触摸的时候显示的。

这是打印出来的坐标信息,可以看到点一下还是会触发很多次,做下消抖或者10ms后再去读触摸芯片的数据会比较好

六、总结

总体来说,就是对着例程和厂家给的屏幕程序来,不会有什么问题。我调的时候有一个地方卡得比较久,就是做填充屏幕函数和点位像素函数的时候,总是会报spi_master: polling can't get buslock,这个应该是多个任务同时尝试访问同一SPI总线会报,但我一开始跑的时候,只执行一句,按理来说不会有多个任务去占用这个spi总线,这个应该是我知识面不足了,后来是看例程的lcd_get_id函数里,有加spi_device_acquire_bus(spi, portMAX_DELAY);spi_device_release_bus(spi);这个总线锁和释放,才解决的。

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

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

相关文章

【python】uv管理器

uv是一个速度极快的 Python 包和项目管理器,用 Rust 编写。 安装 安装uv之前,确保你的电脑不需要安装了python 在Windows下,可以使用官方的脚本直接安装 powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.…

戴尔AI服务器订单激增至121亿美元,但传统业务承压

戴尔科技121亿美元的AI服务器订单,不仅超过了公司整个2025财年的AI服务器出货量,更让其AI订单积压达到144亿美元的历史高位。 戴尔科技最新财报显示,AI服务器需求的爆炸式增长正在重塑这家老牌PC制造商的业务格局,但同时也暴露出…

如何手搓扫雷(待扩展)

文章目录 一、扫雷游戏分析与设计1.1 扫雷游戏的功能说明1.2 游戏的分析和设计1.2.1 数据结构的分析1.2.2 文件结构设计 二、扫雷游戏的代码实现三、扫雷游戏的扩展总结 一、扫雷游戏分析与设计 扫雷游戏网页版 1.1 扫雷游戏的功能说明 使用控制台(黑框框的程序&a…

俄军操作系统 Astra Linux 安装教程

安装 U盘制作 Rufus 写盘工具:https://rufus.ie/ Astra Linux ISO 镜像文件:https://dl.astralinux.ru/astra/stable/2.12_x86-64/iso/ 准备一个8g以上的u盘,打开Rufus写盘工具,选择下载的iso镜像,写入u盘&#xff…

第三方软件评测机构如何助力软件品质提升及企业发展?

第三方软件评测机构与软件开发者及使用者无直接关联,它们提供全方位的检测和公正的评价服务。这样的评测可以展现客观的成效,对提升软件的品质具有显著影响,且在软件产业中发挥着至关重要的角色。 评测的客观性 独立第三方机构与软件开发者…

Python打卡训练营Day40

DAY 40 训练和测试的规范写法 知识点回顾: 彩色和灰度图片测试和训练的规范写法:封装在函数中展平操作:除第一个维度batchsize外全部展平dropout操作:训练阶段随机丢弃神经元,测试阶段eval模式关闭dropout 作业&#x…

JS逆向案例—喜马拉雅xm-sign详情页爬取

JS逆向案例——喜马拉雅xm-sign详情页爬取 声明网站流程分析总结 声明 本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权&am…

STM32CubeMX定时器配置

STM32CubeMX定时器配置 一,Mode界面1,Slave Mode (从模式)2,Trigger Source (触发源) 三,Channelx(通道模式)1,Input Capture2,Output Compare3,PWM Generation4&#xf…

QNAP MEMOS 域名访问 SSL(Lucky)

注意:下述是通过ssh、docker-compose方式安装docker的,不是直接在container station中安装的哈!!! 一、编辑docker-compose.yml文件 用“#”号标识的,在保存文件的时候建议去掉,不然有时候会出…

如何将多张图组合到一张图里同时保留高的分辨率(用PPT+AdobeAcrobat)

文章目录 一、用PPT排版得到一页排布了很多图片的PPT二、用AdobeAcrobat打开pdf文件三、最后得到的图片 一、用PPT排版得到一页排布了很多图片的PPT 步骤如下 ①将幻灯片大小的长设置为17.2,宽根据图像多少进行调整,我这里是10 幻灯片大小的长设置步骤&…

pycharm找不到高版本conda问题

pycharm找不到高版本conda问题 高版本的condaPycharm不能自动识别,需要手动添加。 首先打开你要添加的conda环境win的话在conda终端输入 where conda查找conda的可执行文件位置 进入Pycharm设置,点击添加解释器,点击加载环境,…

2025年上半年软考系统架构设计师--案例分析试题与答案

必选题一:大模型训练系统 某公司开发一个在线大模型训练平台,支持 Python 代码编写、模型训练和部署,用户通过 python 编写模型代码,将代码交给系统进行模型代码的解析,最终由系统匹配相应的计算机资源进行输出,用户不需要关心底层硬件平台。 a.系统发生…

Eclipse 插件开发 5.2 编辑器 获取当前编辑器

Eclipse 插件开发 5.2 编辑器 获取当前编辑器 1 获取活跃编辑器2 获取全部编辑器 Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: Click1 Bundle-SymbolicName: com.xu.click1;singleton:true Bundle-Version: 1.0.0 Bundle-Activator: com.xu.click1.Activato…

Visual Studio 的下载安装

下载 官网:https://visualstudio.microsoft.com/zh-hans/ 点击免费 Visual Studio。 点击 Visual Studio Community 下的免费下载。 保留并下载。 安装 双击下载的 exe 安装文件,点击继续。 等他下载安装完。 选择你要下载的组件(我只勾了一个 .NET 桌…

苍茫命令行:linux模拟实现,书写微型bash

文章目录 🌇前言2、需求分析3、基本框架4、核心内容4.2、指令分割4.3、程序替换 5、特殊情况处理5.2、内建命令5.3、cd5.4、export5.5、echo5.6、重定向 6、源码 🌇前言 Linux 系统主要分为内核(kernel)和 外壳(shell),普通用户是无法接触到…

虚拟DOM和DOM是什么?有什么区别?虚拟DOM的优点是什么?

虚拟DOM与真实DOM的概念 虚拟DOM(Virtual DOM)是一种对真实DOM的抽象表示,其结构通常为一个JavaScript对象,保存了DOM节点的标签、属性、子节点等信息。真实DOM则是浏览器中的实际文档对象模型,由HTML代码解析生成&am…

累加法求数列通项公式

文章目录 前言如何判断注意事项适用类型方法介绍典例剖析对应练习 前言 累加法,顾名思义,就是多次相加的意思。求通项公式题型中,如果给定条件最终可以转化为 a n 1 − a n f ( n ) a_{n1}-a_nf(n) an1​−an​f(n)的形式,或者…

鸿蒙NEXT应用加固工具哪家更好?国内主流的6款对比

随着鸿蒙NEXT系统的推进,越来越多企业将目光投向鸿蒙生态下的应用部署与数据安全。尤其是在核心业务App逐步上架鸿蒙原生平台的当下,如何实现高效、可靠的鸿蒙NEXT应用安全加固,已成为企业技术选型的关键环节。本文将对市面上6款主流的鸿蒙NE…

[特殊字符]《计算机组成原理》第 8 章 - CPU 的结构和功能

🔵8.1 CPU 的结构 🔵8.1.1 CPU 的功能 CPU(中央处理器)是计算机的核心部件,主要负责以下任务: 指令执行:解析并执行指令集架构(ISA)定义的指令数据处理:完…

OramaCore 是您 AI 项目、答案引擎、副驾驶和搜索所需的 AI 运行时。它包括一个成熟的全文搜索引擎、矢量数据库、LLM界面和更多实用程序

一、软件介绍 文末提供程序和源码下载 OramaCore 是您的项目、答案引擎、副驾驶和搜索所需的 AI 运行时。 它包括一个成熟的全文搜索引擎、矢量数据库、LLM具有行动计划和推理功能的接口、用于根据数据编写和运行您自己的自定义代理的 JavaScript 运行时,以及更多…